ComfyUI Node

Motorway 6x10

The biggest fan-out the pack ships

By agilly1989Β·Created 2 years agoΒ·Updated about a year agoΒ· 7
Motorway 6x10
  • MOTORWAY πŸšŒπŸ’¨
  • ANY_(A)
  • ANY_(B)
  • ANY_(C)
  • ANY_(D)
  • ANY_(E)
  • ANY_(F)
  • MOTORWAY πŸšŒπŸ’¨
  • ANY (A)
  • ANY (B)
  • ANY (C)
  • ANY (D)
  • ANY (E)
  • ANY (F)
  • ANY (G)
  • ANY (H)
  • ANY (I)
  • ANY (J)
β—„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β€”β–Ί
β—„ANY_(J)_keyβ€”β–Ί

Motorway 6x10 is as wide as this pack gets: six inputs in, ten ANY outputs out, plus the continuing MOTORWAY πŸšŒπŸ’¨ wire. It's from the agilly1989 Nodes/Motorways pack, and it's the distribution hub for a genuinely crowded pipeline - the node that lets one packed stop feed ten consumers off a single bus wire instead of ten long cables.

The 6x10 names the shape, and it hits the pack's output ceiling: the shipped code generates nodes up to 10x10 (MAX_IN = 10, MAX_OUT = 10 in ramps/generated.py). Ten output slots means ten key lanes (A through J), but only six inputs feed in - so lanes G through J are pure reads. No input wire, just _key widgets: type an existing key and those outputs return whatever earlier stops stored under it. Six fresh writes plus four taps into the route's history, all in one stop.

How it works

Same engine as every Motorway node. The motorway is a custom object that behaves like a dict, keys stored under sha256 hashes. When the node runs it pops the incoming MOTORWAY πŸšŒπŸ’¨, stores each connected input under its _key widget value, clones the bag, reads one key per output slot, and passes the bag forward. Any key written at an earlier stop is readable at any later stop; a reused key overwrites the old value rather than merging.

That keyed-by-name design is the same philosophy as rgthree's Context nodes and Efficiency Nodes - fewer wires, values traveling by name - just implemented as a loose dict. It's fast to build and dramatically tidier on a large canvas. The honest tradeoff, and the whole community debate about pipe nodes, is that "what did I call this key" becomes your recurring archaeology.

The inputs and outputs that matter

Required MOTORWAY πŸšŒπŸ’¨ input (Motorway-type only). Six optional inputs ANY_(A) through ANY_(F) with _key widgets. Outputs: MOTORWAY πŸšŒπŸ’¨, ANY (A) through ANY (J). The A–F lanes write-and-read; G–J are read-only taps. Empty keys idle their lane, so you never have to fill all ten.

Installing it

ComfyUI Manager - search ComfyUI_agilly1989_motorway - or clone:

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

Restart ComfyUI. No requirements.txt, no model downloads; pure Python on ComfyUI's own comfy_types. One-person beta project whose README opens with an honest "if things break it's because I broke it" - pin a version if a workflow depends on it.

Common issues

The telltale error is KeyError: Key: 'x' doesn't exist in motorway (README form: 'MotorwayClass' object has no attribute 'hash_'): an output read a key nothing has written, usually a typo - keys are exact, case-sensitive strings. And with four read lanes plus six write lanes, the overwrite rule is the real trap: a reused key silently replaces the old value. Keep keys unique per pipeline and this hub behaves.

Categoryagilly1989 Nodes/Motorways

Inputs (17)

NameTypeDefaultDescription
MOTORWAY πŸšŒπŸ’¨MOTORWAY πŸšŒπŸ’¨β€”
ANY_(A)opt*β€”
ANY_(B)opt*β€”
ANY_(C)opt*β€”
ANY_(D)opt*β€”
ANY_(E)opt*β€”
ANY_(F)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β€”
ANY_(J)_keyoptSTRINGβ€”

Outputs (11)

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