Motorway 8x2
Pack eight values on the bus, keep two to hand
- MOTORWAY ππ¨
- ANY_(A)
- ANY_(B)
- ANY_(C)
- ANY_(D)
- ANY_(E)
- ANY_(F)
- ANY_(G)
- ANY_(H)
- MOTORWAY ππ¨
- ANY (A)
- ANY (B)
Motorway 8x2 is the "drop off a lot, keep a little" ramp. Eight inputs feed values onto the Motorway bus; two outputs pull values back off. It's one variant of the ~120 nodes that ComfyUI_agilly1989_motorway generates, and the pack is agilly1989's take on the "pipe" pattern for ComfyUI - a named-value bus that rides a single MOTORWAY ππ¨ wire, so your checkpoint, conditioning, settings and seeds don't each need a wire spanning the whole canvas.
Why would you pick 8x2 specifically? It's the shape for a node that mostly contributes - you're adding eight things to the bus for the rest of the graph to use - but you also want a couple of them locally, right now, to hand to the immediate next stage. Think of a spot where you merge a batch of settings and models, then grab "latent" and "seed" out the other side for the sampler you're about to drop in.
How it works
Like every Motorway node: the bus is a dict-like object keyed by sha256 hashes of your key names. On each run 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. Outputs are pure lookups - type the name of any value riding the bus and it comes out that socket, regardless of whether you plugged it in here or two ramps ago. Values persist until a later write to the same key replaces them.
There's no requirement that the two outputs match any of the eight inputs. They usually won't, in fact - the whole trick is that the input set and the output set are independent slices of the same named dictionary.
The inputs and outputs that matter
MOTORWAY ππ¨- required bus input and the bus output that carries everything on.ANY (A)throughANY (H)- eight inputs, each with a_keyname field.ANY (A),ANY (B)- two outputs, each with a_keylookup field.
Type eight names in, type two names out. The eight store, the two fetch. That's the entire workflow of using this node.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
Restart ComfyUI, or use ComfyUI Manager and search "motorway". No pip dependencies, no model downloads - pure Python. Installing it registers the whole Motorway family, so expect a wall of ~120 Motorway entries in your node search afterward.
Common issues
'MotorwayClass' object has no attribute 'hash_'- an output key doesn't exist on the bus. Usually a typo or case mismatch; keys are exact.- Missing start node. A Motorway ramp needs a bus to ride - first node in the chain should be
MotorwayStartor a Motorway primitive that acts as one. - Gaps in output keys. Only non-empty keys produce output and sockets are positional, so keep A and B filled in order.
- Beta. The README's top line warns it's broken with async and the author openly says things break because they broke them. Fine for single runs, plan around it otherwise.
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 (3)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |
| ANY (A) | * | β |
| ANY (B) | * | β |