*Node
The receiving end of ComfyUI's invisible wire
- out_0
- out_1
- out_2
- out_3
- out_4
- out_5
- out_6
- out_7
- out_8
- out_9
- out_10
- out_11
- out_12
- out_13
- out_14
- out_15
*Node (class 0nedark_PointToNode) is the consumer in eks-spaghetti's named-value bus. Wherever you have an &Node (RefOfNode) that's gathered values under a name, drop a *Node, pick the same name from a dropdown, and up to sixteen outputs appear carrying those values - no wire between the two nodes anywhere on the canvas. It's the teleport that solves the "one seed has to reach five places across a crowded graph" problem without dragging noodles over everything.
The name pairing is worth getting: &Node sends, *Node receives, and the node titles make it obvious which is which - the producer shows Ref -> name, the consumer shows name -> Ref (#<id>).
How it works
At execution, *Node looks up the producer's stored values by ref_name and hands them out as outputs - the same actual Python objects, so an IMAGE out here is the same IMAGE in there. Outputs are padded or trimmed to the pack's 16-output cap. If the name is empty or nothing was stored, the node doesn't error: it returns an ExecutionBlocker, which in practice means the node and everything downstream simply doesn't run this pass.
Ordering is handled for you. When you queue, the pack's JavaScript injects a hidden _ref_trigger dependency so the &Node always executes first and its values exist before this node reads them. The visible clue that it's working: the output sockets auto-sync to whatever is currently wired into the producer. Rename an input on the &Node and this node's outputs follow on the next frame.
The inputs and outputs that matter
- ref_name - the only backend input, but you won't type it. The frontend hides the text field and gives you a searchable
select_refdropdown listing every&Nodein the graph. Pick one. - out_0 … out_15 - the outputs, all wildcard type
*. Their names and types mirror the producer's connected inputs, so wire them into anything downstream as if the wire existed.
Install
Search eks-spaghetti (registered as 0nedark-eks-spaghetti) in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/drupsys/eks-spaghetti
Then restart ComfyUI. No dependencies, no model files.
Where people get burned
Greyed-out or missing outputs almost always mean one of three things: the ref name in the dropdown doesn't exactly match the producer's, the &Node is bypassed or disabled so it never writes the store, or the pack's trigger injection didn't fire on an older ComfyUI (it patches graphToPrompt, which needs a reasonably recent frontend - update if the dropdown is empty or ordering feels wrong).
One more honest warning: every output is wildcard *, which means ComfyUI won't type-check your connections here. You can wire an IMAGE into a socket that expects a LATENT and nothing will stop you - it'll just break at runtime. The KB's plumbing essay makes the same point about wildcard sockets generally: VALIDATE_INPUTS skips validation, so garbage in, crash later. When a workflow built on these fails, check the actual types, because the canvas won't.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| ref_name | STRING | — |
Outputs (16)
| Name | Type | Description |
|---|---|---|
| out_0 | * | — |
| out_1 | * | — |
| out_2 | * | — |
| out_3 | * | — |
| out_4 | * | — |
| out_5 | * | — |
| out_6 | * | — |
| out_7 | * | — |
| out_8 | * | — |
| out_9 | * | — |
| out_10 | * | — |
| out_11 | * | — |
| out_12 | * | — |
| out_13 | * | — |
| out_14 | * | — |
| out_15 | * | — |