Motorway 9x6
The bus with half a dozen exits
- MOTORWAY ππ¨
- ANY_(A)
- ANY_(B)
- ANY_(C)
- ANY_(D)
- ANY_(E)
- ANY_(F)
- ANY_(G)
- ANY_(H)
- ANY_(I)
- MOTORWAY ππ¨
- ANY (A)
- ANY (B)
- ANY (C)
- ANY (D)
- ANY (E)
- ANY (F)
Motorway 9x6 gives you nine inputs (A through I) and six outputs (A through F), which puts it firmly in "you have a lot of state and a lot of places to look at it" territory. In this pack's [inputs]x[outputs] naming scheme, it's the ramp you pick when a five-output node is just barely not enough and you don't want to graduate to the monster 9x9.
The mechanics should be familiar by now, but they're worth restating because they're the entire product. Every ANY input is wildcard-typed and pairs with a _key text field; type a name and the value rides the Motorway under that name. Every ANY output is a retrieval port - type a key and it pulls the matching value from the shared bag, regardless of where that value was written. The MOTORWAY connection itself carries a dict-like object, values stored under sha256 hashes, cloned at every hop so parallel paths each get an independent copy. Nothing here is positional; everything is keyed.
So when would six exits justify themselves? Six is "model, clip, vae, positive, negative, seed" - the complete loadout for a straightforward SD/SDXL generation, minus steps and cfg. Or it's a prompt-processing cluster where you want to surface positive, negative, an embedding list, a wildcard string, a mask, and a controlnet all in one place. If you find yourself typing the same five or six keys into multiple downstream nodes, a single 9x6 in the middle of the graph replaces a tangle of long wires with one fat spine. That's the pack's whole pitch, and it's the same pitch that made rgthree Context nodes ubiquitous for big-workflow hygiene.
Installation is the pack standard and genuinely boring:
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
or find it in ComfyUI Manager by searching "agilly1989". Restart ComfyUI. No model downloads, no pip dependencies - the pack is pure Python, which is the rare part of this that just works.
The warnings are the family's shared ones, and they're real. Keys are exact and case-sensitive; read one that was never written and you get 'MotorwayClass' object has no attribute 'hash_', which is a typo or an ordering bug in your graph, not a corrupted workflow. The pack is one person's active beta - "IF THINGS BREAK ITS BECAUSE I BROKE IT" is literally the README's first line - so keep it updated and don't be surprised by rough edges. And be honest with yourself: six exits is a lot. If you're only actually reading three or four keys, the smaller ramps will keep your graph cleaner than this one will.
Inputs (19)
| 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_(I)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 (7)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |
| ANY (A) | * | β |
| ANY (B) | * | β |
| ANY (C) | * | β |
| ANY (D) | * | β |
| ANY (E) | * | β |
| ANY (F) | * | β |