Motorway 8x0
The pure on-ramp that loads the bus and never takes anything off
- MOTORWAY ππ¨
- ANY_(A)
- ANY_(B)
- ANY_(C)
- ANY_(D)
- ANY_(E)
- ANY_(F)
- ANY_(G)
- ANY_(H)
- MOTORWAY ππ¨
Motorway 8x0 is the odd one out, and it's genuinely useful because of it. Eight inputs, zero outputs - no, it's not a typo, and no, it doesn't do nothing. In the Motorway pack (ComfyUI_agilly1989_motorway, agilly1989's "pipe" implementation for ComfyUI), inputs write values onto a shared named bus and outputs read them off. A zero-output node has nothing to read, so it's a pure loading dock: eight sockets for shoving values onto the MOTORWAY ππ¨ bus, and nothing but the bus itself coming out the other side.
That makes 8x0 your "settings" node. Park one near the start of the workflow, type keys like "model", "clip", "vae", "seed", "steps", and everything downstream that needs those values can read them off the bus at their own ramps - without a single wire running from this node to anywhere else. It's the cleanest way to define the constants and models a whole graph depends on, in one place.
How it works
The mechanics are the same as every Motorway node, just with the read half lopped off. The bus is a dict-like object whose keys are sha256 hashes of the names you type. On each run, the node takes the bus in, stores every connected input under its _key name, clones the bus, and emits the clone as its single MOTORWAY ππ¨ output. That's it - one output, and it's always the bus, so you always chain it into the next Motorway node or into MotorwayStart's successor.
Because values persist until overwritten, what you load here at the top of the graph is available at the bottom. And because the node clones rather than mutates, nothing else on the bus is disturbed. If this is your first Motorway node, it has to come after a MotorwayStart - a ramp can't load anything onto a bus that doesn't exist yet.
The inputs and outputs that matter
MOTORWAY ππ¨- the required input (bus from upstream) and the sole output (bus onward).ANY (A)throughANY (H)- eight inputs. Each has a_keyfield; type the name that value gets stored under.
That's the whole node: eight values in, named, and released onto the bus. The output count of zero is the feature, not a bug - this node is meant to disappear into the background and feed everything else.
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 Motorway family comes along with the clone.
Common issues
- Forgetting the start node.
Motorway 8x0needs a bus on its input. First node in the chain should beMotorwayStart(or a Motorway primitive likeMotorwaySeed/MotorwayInt, which can start a bus themselves). 'MotorwayClass' object has no attribute 'hash_'appears downstream if an output elsewhere references a key you never wrote here - check your key spelling and case, they're exact.- Silent overwrites. If another ramp writes the same key later, the later value wins.
- Beta. The README flags async as broken and cheerfully admits the author breaks things. Fine for ordinary single-run graphs.
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 (1)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |