ComfyUI Node

*Node

The receiving end of ComfyUI's invisible wire

By drupsys·Created 6 months ago·Updated 6 months ago· 0
*Node
    • 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
    ref_name

    *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_ref dropdown listing every &Node in 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.

    Categoryutils

    Inputs (1)

    NameTypeDefaultDescription
    ref_nameSTRING

    Outputs (16)

    NameTypeDescription
    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*