Sync Sink Ovum
The node that does nothing so your whole graph finishes
- any_input
- value1
- value2
- value3
- value4
- value5
- value6
- value7
- value8
- value9
- value10
- value11
- value12
- value13
- value14
- value15
- value16
- value17
- value18
- value19
- any_output
- value1
- value2
- value3
- value4
- value5
- value6
- value7
- value8
- value9
- value10
- value11
- value12
- value13
- value14
- value15
- value16
- value17
- value18
- value19
Sync Sink is a no-op with a job. It accepts up to twenty inputs and passes them all straight through, doing zero work on the values - its whole purpose is to sit at the end of several parallel branches and make sure all of them finish before anything downstream runs. The node's own description is refreshingly honest: "Does nothing, used to force additional attached inputs to complete before the next node."
Why a do-nothing node exists
ComfyUI executes nodes in dependency order, but a graph with parallel branches can race: if your next step only needs one branch's output to proceed, it may start while a different branch is still grinding. Usually that's fine. Sometimes it's a real problem - you want to save a file only after the last of several generation branches is done, or you're timing a pipeline and the "stopwatch" needs the whole thing to have completed. A sink forces the issue: nothing after the sink runs until every branch feeding the sink has returned.
It's a borrowed idea - the pack's author credits KJNodes, which is why this node lives in the ovum/KJNodes category alongside other workflow helpers like widget-to-value readers.
How it works
Mechanically it's a strict pass-through. The first input (any_input) and up to nineteen optional inputs (value1 through value19) all flow to matching outputs, completely unchanged. If an optional input isn't connected, its output is simply None. The node returns all twenty slots, which means every upstream branch is wired through it, and the graph engine can't skip ahead past it.
Because the sockets are all wildcard *, you can sync literally anything - images, latents, strings, conditionings - through the same node, no type juggling.
Inputs and outputs
- any_input (required,
*) - the main flow, always passed toany_output. - value1 … value19 (optional,
*) - the extra branches to synchronize. Unconnected ones pass through asNone. - Outputs mirror the inputs:
any_outputplusvalue1throughvalue19.
There are no widgets. Wire, run, collect.
Installing it
Part of the comfy-ovum pack:
cd ComfyUI/custom_nodes
git clone https://github.com/sfinktah/comfy-ovum
Restart ComfyUI, or install via ComfyUI Manager → search "comfy-ovum". Light dependencies, no models.
Common gotchas
- It synchronizes execution order, not data. Everything arrives unchanged, so if your branches produce conflicting values, a sink won't resolve that - you still need to pick one.
- Empty optional slots output
None. If a downstream node chokes onNone, either wire that slot or don't rely on it. - Don't mistake it for a switch. There's no conditional logic here. If you wanted "pick between branches," you want an IfElse or switch node, not a sink.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| any_input | * | — | |
| value1opt | * | — | |
| value2opt | * | — | |
| value3opt | * | — | |
| value4opt | * | — | |
| value5opt | * | — | |
| value6opt | * | — | |
| value7opt | * | — | |
| value8opt | * | — | |
| value9opt | * | — | |
| value10opt | * | — | |
| value11opt | * | — | |
| value12opt | * | — | |
| value13opt | * | — | |
| value14opt | * | — | |
| value15opt | * | — | |
| value16opt | * | — | |
| value17opt | * | — | |
| value18opt | * | — | |
| value19opt | * | — |
Outputs (20)
| Name | Type | Description |
|---|---|---|
| any_output | * | — |
| value1 | * | — |
| value2 | * | — |
| value3 | * | — |
| value4 | * | — |
| value5 | * | — |
| value6 | * | — |
| value7 | * | — |
| value8 | * | — |
| value9 | * | — |
| value10 | * | — |
| value11 | * | — |
| value12 | * | — |
| value13 | * | — |
| value14 | * | — |
| value15 | * | — |
| value16 | * | — |
| value17 | * | — |
| value18 | * | — |
| value19 | * | — |