Motorway 8x9
One more off-ramp than on-ramp, for a distribution-heavy graph
- 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)
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)throughANY (H)- eight inputs, each with a_keyname field.ANY (A)throughANY (I)- nine outputs, each with a_keylookup 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
MotorwayStartor 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.
Inputs (18)
| 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_(G)opt | * | β | |
| ANY_(H)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 | β |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |
| ANY (A) | * | β |
| ANY (B) | * | β |
| ANY (C) | * | β |
| ANY (D) | * | β |
| ANY (E) | * | β |
| ANY (F) | * | β |
| ANY (G) | * | β |
| ANY (H) | * | β |
| ANY (I) | * | β |