ComfyUI Node

Motorway 8x9

One more off-ramp than on-ramp, for a distribution-heavy graph

By agilly1989Β·Created 2 years agoΒ·Updated about a year agoΒ· 7
Motorway 8x9
  • MOTORWAY πŸšŒπŸ’¨
  • ANY_(A)
  • ANY_(B)
  • ANY_(C)
  • ANY_(D)
  • ANY_(E)
  • ANY_(F)
  • ANY_(G)
  • ANY_(H)
  • MOTORWAY πŸšŒπŸ’¨
  • ANY (A)
  • ANY (B)
  • ANY (C)
  • ANY (D)
  • ANY (E)
  • ANY (F)
  • ANY (G)
  • ANY (H)
  • ANY (I)
β—„ANY_(A)_keyβ€”β–Ί
β—„ANY_(B)_keyβ€”β–Ί
β—„ANY_(C)_keyβ€”β–Ί
β—„ANY_(D)_keyβ€”β–Ί
β—„ANY_(E)_keyβ€”β–Ί
β—„ANY_(F)_keyβ€”β–Ί
β—„ANY_(G)_keyβ€”β–Ί
β—„ANY_(H)_keyβ€”β–Ί
β—„ANY_(I)_keyβ€”β–Ί

Eight in, nine out: Motorway 8x9 is a fan-out ramp with one more off-ramp than on-ramp. It's one of the ~120 nodes in ComfyUI_agilly1989_motorway, agilly1989's "pipe" implementation for ComfyUI, where a named-value bus rides a single MOTORWAY πŸšŒπŸ’¨ wire and you fetch values by key instead of dragging wires.

The rule that governs the whole pack: inputs write onto the bus, outputs read off it, and they're independent lists. Nine outputs means nine lookups - this is the node you use when you want to scatter almost everything the bus knows across a stage with a lot of consumers: a sampling block, a batch of save/preview nodes, a controlnet section. You contribute eight values and pull nine, and because the outputs can reference keys written anywhere upstream, the nine don't have to relate to the eight at all.

How it works

Shared engine, differing socket counts. The bus is a dict-like object keyed by sha256 hashes of your key names - exact, case-sensitive names. The node stores every connected input under its _key name, clones the bus, and emits the clone plus one output per non-empty output key. Values persist downstream until a later write to the same key replaces them, which is what lets an early ramp feed a late fan-out.

Since outputs outnumber inputs, the _key fields run to the larger count: eight input sockets, but key fields ANY (A)_key through ANY (I)_key (nine). The ninth key exists purely to drive an output socket. Cosmetic, but it surprises people the first time.

The inputs and outputs that matter

  • MOTORWAY πŸšŒπŸ’¨ - required bus input and the bus output that keeps the line going.
  • ANY (A) through ANY (H) - eight inputs, each with a _key name field.
  • ANY (A) through ANY (I) - nine outputs, each with a _key lookup field.

The one habit to build: fill output keys A through I in order. Outputs are positional and only emitted for non-empty keys, so a blank in the middle shifts everything after it up a socket.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway

Restart ComfyUI, or install via ComfyUI Manager (search "motorway"). No pip dependencies, no model downloads - pure Python, and the whole ~120-node family registers with the clone.

Common issues

  • 'MotorwayClass' object has no attribute 'hash_' - a read key doesn't exist on the bus. Spelling and case matter; keys are exact.
  • No bus, no ride. First node in the chain must be MotorwayStart or a Motorway primitive that starts one.
  • Socket shift from gaps. Keep the nine output keys in order.
  • Duplicate keys overwrite silently. The later write to a key wins.
  • Beta. The README flags async as broken and the author owns breaking things. Fine for single-run workflows.
Categoryagilly1989 Nodes/Motorways

Inputs (18)

NameTypeDefaultDescription
MOTORWAY πŸšŒπŸ’¨MOTORWAY πŸšŒπŸ’¨β€”
ANY_(A)opt*β€”
ANY_(B)opt*β€”
ANY_(C)opt*β€”
ANY_(D)opt*β€”
ANY_(E)opt*β€”
ANY_(F)opt*β€”
ANY_(G)opt*β€”
ANY_(H)opt*β€”
ANY_(A)_keyoptSTRINGβ€”
ANY_(B)_keyoptSTRINGβ€”
ANY_(C)_keyoptSTRINGβ€”
ANY_(D)_keyoptSTRINGβ€”
ANY_(E)_keyoptSTRINGβ€”
ANY_(F)_keyoptSTRINGβ€”
ANY_(G)_keyoptSTRINGβ€”
ANY_(H)_keyoptSTRINGβ€”
ANY_(I)_keyoptSTRINGβ€”

Outputs (10)

NameTypeDescription
MOTORWAY πŸšŒπŸ’¨MOTORWAY πŸšŒπŸ’¨β€”
ANY (A)*β€”
ANY (B)*β€”
ANY (C)*β€”
ANY (D)*β€”
ANY (E)*β€”
ANY (F)*β€”
ANY (G)*β€”
ANY (H)*β€”
ANY (I)*β€”