ComfyUI Node

Check Output

Tell the graph 'this part is done' before the gate opens

By mickmumpitz·Created 8 months ago·Updated 9 days ago· 47
Check Output
  • value
  • value
channeldefault

ComfyUI's execution order is mostly "whatever the dependency graph says," and sometimes that's wrong for what you want. CheckOutput is a coordination node: you drop it on the end of a sub-workflow, give it a channel name, and it tells any ExecutionGate on that same channel "wait - this part hasn't finished yet." It's the "I'm done here" signal of this pack's execution-gate system.

Think of it as an explicit barrier between graph areas that have no real data dependency but a real order requirement. The classic case: one branch writes files or updates state that a later branch must not read before it exists.

How it works

Two inputs:

  • value - a wildcard (*). It accepts anything and passes it through untouched; its only job is to make this node execute when that value is available.
  • channel - a string naming the gate group. Default default.

Because CheckOutput is an OUTPUT_NODE, it always executes when its subgraph is reached. At submit time, a prompt handler wires every CheckOutput on a channel into every ExecutionGate on the same channel as a hidden dependency - so the gate holds its value until all the checkpoints on its channel have run. Output is value, the input unchanged, so it can sit inline in a data path and not disturb it.

It's deliberately the dumb half of the pair. The smart half is ExecutionGate (which does the waiting) and ExecutionGateControl (the master on/off for a channel). You'll rarely place CheckOutput in isolation - you're wiring it as the "this branch reached its end" sentinel that unlocks a gate elsewhere.

Where it fits

Any workflow where ordering matters more than data flow: a preprocessing branch that must finish before a consuming branch starts, a save node that must complete before a cleanup step, an update that must land before a read. It's the ComfyUI-native replacement for "just add a long enough delay" - deterministic instead of hopeful.

One honest note: for simple "run this after that" needs you may not need the full gate system at all; ComfyUI's normal dependency edges handle most cases. Reach for CheckOutput + ExecutionGate when you have a genuine cross-branch ordering constraint that a cable can't express.

Installing it

Part of Mickmumpitz-Nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/mickmumpitz/ComfyUI-Mickmumpitz-Nodes.git

or ComfyUI Manager → search "Mickmumpitz" → install → restart. No downloads; the pack's deps are just numpy, Pillow and opencv-python.

Troubleshooting

  • Gate never releases - a CheckOutput on the same channel never ran (wrong subgraph, bypassed, errored). The gate waits forever. Check the channel strings match exactly.
  • Two unrelated groups blocking each other - they share the default channel. Give each group its own channel name.
  • Checkpoint ignored - you wired a CheckOutput but no ExecutionGate exists on that channel. The checkpoint is inert without its gate.
  • Output-node side effects - because it always executes when reached, don't hang heavy work downstream of it and expect it to be skipped.
CategoryMickmumpitz/Utils

Inputs (2)

NameTypeDefaultDescription
value*
channelSTRINGdefault

Outputs (1)

NameTypeDescription
value*