Motorway 8x1
Throw eight things at the bus, take one thing back
- MOTORWAY ππ¨
- ANY_(A)
- ANY_(B)
- ANY_(C)
- ANY_(D)
- ANY_(E)
- ANY_(F)
- ANY_(G)
- ANY_(H)
- MOTORWAY ππ¨
- ANY (A)
Motorway 8x1 is the collector node of the Motorway family: eight inputs to add values to the shared bus, and one output to fetch a single value back off it. It's part of ComfyUI_agilly1989_motorway, agilly1989's "pipe" implementation for ComfyUI, where a named-value dictionary rides a single MOTORWAY ππ¨ wire through the graph instead of a hundred parallel wires.
The asymmetry is the point. Inputs write onto the bus; the single output reads whatever key you name. So an 8x1 is what you use when you want to bundle a bunch of stuff onto the bus and pull one specific thing off at the same spot - say, dump your checkpoint, clip, vae, positive, negative, latent, seed and scheduler onto the bus, then immediately grab the seed back out to feed a save node or a display. It's a merge-with-a-pickup.
How it works
Same machinery as every Motorway node, and it's unglamorous. The bus is a dict-like object whose keys are sha256 hashes of the names you type. The node takes the incoming bus, stores each connected input under its _key name, clones the bus, and emits the clone plus the one value whose key you typed into the output's _key field. Values persist downstream until a later write to the same key overwrites them, which is why you can collect at the top and spend at the bottom.
That single output socket is a lookup, not a passthrough of anything you just plugged in - type any key that's riding the bus and it comes out there. The eight input keys and the one output key are independent fields, so there's no ordering constraint between them. The only ordering rule that matters is the usual one: keep output keys contiguous, and here there's just one, so it's hard to get wrong.
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 has a_keyfield that names the value being stored.ANY (A)- the single output; type a key into its_keyfield to pull that value off the bus.
Connect your eight values, name them, name the one you want back, and wire that output where it needs to go. Under a minute of setup for a node that tidies a whole corner of the canvas.
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 packages and no model files - it's pure Python, and the clone registers the entire ~120-node Motorway family at once.
Common issues
'MotorwayClass' object has no attribute 'hash_'- the key you asked the output to read was never written to the bus. Check spelling and case; keys are exact and case-sensitive.- Needs a bus first. An 8x1 can't be the first node in the chain - start with
MotorwayStart(or a Motorway primitive that can start one). - Last writer wins on duplicate keys. If two ramps store the same name, the later value replaces the earlier one without any warning.
- Beta with loud disclaimers. The README flags async as broken and says things break because the author broke them. Fine for ordinary single-run workflows.
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_(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 | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |
| ANY (A) | * | β |