Flow
Force execution order in a graph that doesn't have one
- flow
- dependency
- flow
The plainest node in JNComfy's (jn-jairo/jn_comfyui) "workflow control" family - no logic, no side effect, just a join point in an execution chain. If you've read about JN_StopIf, JN_Exec, or JN_CoolDown, this is the same flow/dependency mechanism those nodes use, stripped down to nothing but the mechanism itself.
Why this exists
ComfyUI schedules nodes by data dependency, not by where you put them on the canvas - there's no "run A, then B, then C" unless B and C's inputs actually depend on A's output. That's fine for a straight pipeline, but this pack's other workflow nodes have side effects that matter in order - pausing for thermal cooldown, running arbitrary code, stopping the run - and those need a real, enforced sequence. JN_Flow is the connective tissue: it's a node whose only job is being a point two or more chains can pass through, and whose flow output guarantees "everything wired into me has already run" to whatever comes next.
How it works
Both inputs are optional and both are the generic * type - this pack's own patch to ComfyUI's input system that finishes wiring up the wildcard type LiteGraph already supports. flow and dependency do functionally the same thing (force this node to wait), and having two lets you join two separate flow chains into one before continuing - wire one upstream node's flow output into flow, another's into dependency, and this node won't fire until both have.
The inputs and outputs that matter
flow(any type, optional) - connect from an upstream flow-chain node.dependency(any type, optional) - a second thing to wait on, for merging two chains into one.
The single output, flow, hands off to whatever comes next in the sequence - wire it into the next node's flow or dependency input to keep the chain going.
How to install it
Via ComfyUI Manager: search "JNComfy", install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/jn-jairo/jn_comfyui
then restart ComfyUI. This is a small, single-author pack with no meaningful public discussion we could find and no entry in our knowledge base - the flow-chaining pattern it uses isn't documented anywhere outside the pack itself, so treat this article and its siblings as your reference rather than searching for it.
Common issues & troubleshooting
It looks like it does nothing. That's correct, and by design - with both inputs disconnected, this node has nothing to wait on and nothing meaningful to hand off. Its entire value shows up when you're chaining side-effecting nodes together, not on its own.
The nodes you wired through it don't actually run in order. Double check the chain end to end: every node in the sequence needs its flow output going into the next one's flow/dependency input. A single break in the chain - a node whose output you forgot to wire forward - means everything after that point loses the ordering guarantee.
The whole chain gets skipped entirely. ComfyUI prunes branches that never lead to something that actually executes (a save node, an output node, or one of this pack's own terminal nodes). If your flow chain dead-ends without reaching something like JN_FlowOutput, none of it runs - not because JN_Flow failed, but because nothing downstream gave ComfyUI a reason to execute the branch at all.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| flowopt | * | — | |
| dependencyopt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| flow | * | — |