Workflow (FlowChain ⛓️)
The node that folds an entire workflow into a single box
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
This is the node the whole FlowChain pack is named after. The Workflow node takes an existing workflow saved as a file, loads it, and presents it as a single box on your canvas - with named input sockets where the file's WorkflowInput nodes are and named output sockets where its WorkflowOutput nodes are. You wire into the box like it's any other node, and ComfyUI runs the entire contained graph for you. It's "convert to group node", rebuilt so the things group nodes break actually work.
Why not just use the built-in option? Because group nodes are genuinely buggy once your workflow has any personality. Primitives get dropped, dynamic switch nodes lose their connections, and ControlNet conditionals reverse their ordering on bypass. The community thread that announced this pack (+234 on r/StableDiffusion) has users lining up to confirm how bad group nodes are. FlowChain's answer is architectural: a subworkflow stays a normal .json file on disk, and this node splices it into your graph at execution time. No fragile client-side grouping at all.
How it works
The workflows dropdown lists every compatible workflow in ComfyUI/user/default/workflows - "compatible" means the file contains at least one WorkflowInput or WorkflowOutput. Select one and the node loads its JSON. On execution it inlines the subworkflow into your graph, rewires WorkflowInput nodes to the values coming into this node, rewires WorkflowOutput nodes to the sockets going out, and runs the whole merged graph with a nested executor. Output order isn't arbitrary: it's determined by the top-to-bottom position of the WorkflowOutput nodes in the subworkflow, read from the saved file so it stays stable.
The clever part is conditional execution. Because the subworkflow is merged before running, the Workflow node can prune it. Crystools Switch nodes get resolved against their boolean, and the unused branch is removed rather than computed - so two videos don't both get loaded when the switch only wants one. WorkflowContinue nodes do the same for their downstream sections. That's real if/then computation in a tool that normally computes everything, and it's the one thing group nodes cannot give you.
The inputs and outputs
Only two inputs: workflows (the dropdown) and workflow (a STRING holding the JSON, auto-filled when you pick). That's it - you don't configure outputs, they materialize from the file's WorkflowOutput nodes, up to 16 of them, all wildcard * sockets.
Living with it
Editing a subworkflow is where this pays off. Fix the file, hit save, and the parent node live-updates about a second later - though you may need to click back and forth between the two graphs to see it. New workflow files require an F5 before they appear in the dropdown. When it's time to share a project, use Workflow → Export Flowchain (ZIP) - it bundles all nested workflows into one archive so someone else can unzip and load it without hunting files.
Installing it
ComfyUI Manager → search FlowChain → install and restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/numz/Comfyui-FlowChain.git
cd Comfyui-FlowChain
pip install -r requirements.txt
No models, no weights. The pack's single dependency (gradio_client==0.8.0) only serves the LipSync node - the Workflow node itself is dependency-free.
Gotchas
You need ComfyUI 0.3.33+ with a frontend of 1.18.9+, and the 2025 rewrite isn't backwards compatible with pre-rewrite FlowChain files. Watch the seed rule: a subworkflow input named exactly seed (as an INT) breaks the node - call it seed_input. And remember the compatibility bar: no WorkflowInput/WorkflowOutput markers in a file, no entry in the dropdown. If a workflow mysteriously isn't listed, that's the first thing to check.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| workflows | COMBO | — | |
| workflow | STRING | — |
Outputs (16)
| Name | Type | Description |
|---|---|---|
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |