Motorway 6x10
The biggest fan-out the pack ships
- 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)
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.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β | |
| ANY_(A)opt | * | β | |
| ANY_(B)opt | * | β | |
| ANY_(C)opt | * | β | |
| ANY_(D)opt | * | β | |
| ANY_(E)opt | * | β | |
| ANY_(F)opt | * | β | |
| ANY_(A)_keyopt | STRING | β | |
| ANY_(B)_keyopt | STRING | β | |
| ANY_(C)_keyopt | STRING | β | |
| ANY_(D)_keyopt | STRING | β | |
| ANY_(E)_keyopt | STRING | β | |
| ANY_(F)_keyopt | STRING | β | |
| ANY_(G)_keyopt | STRING | β | |
| ANY_(H)_keyopt | STRING | β | |
| ANY_(I)_keyopt | STRING | β | |
| ANY_(J)_keyopt | STRING | β |
Outputs (11)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |
| ANY (A) | * | β |
| ANY (B) | * | β |
| ANY (C) | * | β |
| ANY (D) | * | β |
| ANY (E) | * | β |
| ANY (F) | * | β |
| ANY (G) | * | β |
| ANY (H) | * | β |
| ANY (I) | * | β |
| ANY (J) | * | β |