Copy Input to Output
The file shuttle between Houdini and ComfyUI — Copy Input to Output
- rel
If you're not running the Houdini ComfyUI Bridge, this node looks like a joke: one string in, one string out, and somewhere in the middle it copies a file. But the name tells you the whole story - it copies a path that's relative to ComfyUI's input/ folder over to the output/ folder, keeping the subfolder structure intact. That's the bridge's handoff step, the bit where a file stops being "Houdini's input to ComfyUI" and becomes "ComfyUI's result that Houdini can go read."
Here's the workflow shape it's built for. The bridge treats ComfyUI's input/ directory as an exchange zone: Houdini writes reference images, prompts, and parameters there, ComfyUI reads them, runs the graph, and saves results to output/. When a compound graph needs an intermediate file to survive to the output side - without re-encoding it through an image node - HouCuiCopyInputToOutput is the blunt instrument for the job. It's a filesystem copy, nothing clever, and that's the point.
How it works
The node takes in_rel_path - a path relative to the input directory - and does three things in process():
- builds the destination path as
output/joined with your path, - creates any parent directories that don't exist yet,
- copies the file with
shutil.copy2(so file metadata comes along).
The single output, rel, just hands your input string back to you. Don't overthink it - it's there so you can chain the node into downstream string consumers without re-typing the path.
The gotcha that will bite you
The node returns the input-relative path, even though the file now lives in output/. If you wire that rel output into a node that assumes paths are output-relative, it'll look in the wrong directory and fail confusingly. And if the source file doesn't exist, shutil.copy2 throws a FileNotFoundError that kills the whole queue - so make sure whatever upstream node wrote the file has actually run. The bridge normally orders this correctly inside its compound graphs; when you hand-build your own workflow and this node fires early, those are the two failure modes you'll meet.
Installing it
This is one of seven helper nodes in houdini-comfyui-bridge (CapybaraCrowporation/houdini-comfyui-bridge), a community project - not a SideFX initiative, despite the name - by Rafael Drelich Valentim and Anatolii Iudanov, open-sourced at the end of 2025 and presented at SIGGRAPH Asia 2025. It's GPL-3.0, free for commercial use.
For the ComfyUI side alone:
cd ComfyUI/custom_nodes
git clone https://github.com/CapybaraCrowporation/houdini-comfyui-bridge
Then restart ComfyUI (or install "houdini-comfyui-bridge" via ComfyUI Manager). There's no requirements.txt and no model download - the ComfyUI half of this pack has essentially zero dependencies. The heavy part is the Houdini plugin (OTLs dropped into your Houdini userdir or HOUDINI_PATH), which you'll want before any of this makes sense. One setup trap the docs warn about: ComfyUI Desktop defaults to port 8000 while standalone ComfyUI and the Houdini nodes default to 8188 - if Houdini can't find ComfyUI, that mismatch is usually why.
Should you reach for it?
In a pure ComfyUI graph, no - you'd never need it. Its entire reason to exist is the Houdini bridge's input/output exchange. If you're here because you googled the node after a bridge workflow went sideways, the file-copying behavior above is everything the node does; debug from the "does the source file exist in input/" angle first.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| in_rel_path | STRING | relative input path |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| rel | STRING | — |