Workflow Input (FlowChain ⛓️)
The node that gives a ComfyUI workflow an actual input port
- default
- output
WorkflowInput is the front door of a FlowChain subworkflow. It does one job: it declares "this graph takes an input", gives that input a name, and turns it into a socket you can wire into. When you chain that workflow somewhere else, every WorkflowInput in it shows up as a named connection point on the big Workflow node - so this little node is how you turn a one-off graph into something you can call again and again.
Why does that need a whole node? Because the FlowChain pack exists precisely because ComfyUI's built-in "convert to group node" falls apart the moment your graph gets interesting. Primitives get silently dropped, dynamic switch nodes lose their connections, and ControlNet conditionals reverse when you bypass a group. The author's fix is deliberately boring: a subworkflow is just a normal .json workflow sitting in ComfyUI/user/default/workflows, and these nodes are the markers that tell it what should become an input or output port. If you ever thought "I wish this one workflow were just a function I could call", this is the pack for you.
The inputs that matter
There are only two, and one of them is optional in spirit:
- Name (STRING) - the input's label. This is the name you'll see on the Workflow node's socket when you load this file as a subworkflow, so pick something descriptive like
promptorimagerather thaninput1. - default (
*) - the value that flows through when nothing is connected. The author's own description is the right mental model: it's used when debugging the workflow standalone, or when a parent Workflow node doesn't plug anything into this input. Treat it as both a fallback and your debug value.
The type is detected automatically: drag this node's output socket onto another node's input socket and the wire snaps to whatever type that socket expects. There's no dropdown to get wrong, which is a genuinely nice touch - you'd never guess it from the source, where the type list is sitting commented out.
The output
One socket named output, type * (any). It's a wildcard, which is what lets the type auto-detection work in the first place. In practice you connect it to whatever node in the subworkflow should actually consume that incoming value.
Installing it
Shared with the whole FlowChain pack - there's nothing special about this node. ComfyUI Manager: search FlowChain, install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/numz/Comfyui-FlowChain.git
cd Comfyui-FlowChain
pip install -r requirements.txt
Restart ComfyUI after installing. Worth knowing before you do: the pack's entire pip dependency list is one package, gradio_client==0.8.0, and it's only used by the LipSync node. WorkflowInput and its workflow siblings need nothing beyond ComfyUI itself - no models, no weights, nothing. One of the least fussy installs in the ecosystem.
Gotchas
Two things bite people, both documented by the author. First: if you have an INT input, don't name it "seed" - a bare seed input breaks the node. Use seed_input or anything else. Second, a workflow only shows up in the Workflow node's dropdown if it contains at least one WorkflowInput or WorkflowOutput; add one of these before you expect to see it listed. Also make sure ComfyUI is at least 0.3.33 with a frontend of 1.18.9+ - the pack checks versions, and old FlowChain files from before the 2025 rewrite won't load.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| Name | STRING | — | |
| default | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | * | — |