Motorway 10x3
Keep what's hot, stash the rest
- MOTORWAY ππ¨
- ANY_(A)
- ANY_(B)
- ANY_(C)
- ANY_(D)
- ANY_(E)
- ANY_(F)
- ANY_(G)
- ANY_(H)
- ANY_(I)
- ANY_(J)
- MOTORWAY ππ¨
- ANY (A)
- ANY (B)
- ANY (C)
The Motorway 10x3 is the workhorse junction of the Motorway pack: ten inputs, three outputs, all of it riding a single keyed pipe from agilly1989/ComfyUI_agilly1989_motorway. You reach for it when a node or subgraph needs three things handed to it right now - say a positive conditioning, a negative conditioning, and a latent - while the other seven values you connected just keep traveling on the bus for later stages.
This is the pattern that makes the motorway idea click. ComfyUI's pipe implementations like rgthree's Context nodes carry a fixed bundle down one wire. The Motorway is looser: it's a bag where every value is tagged with a name you choose. The 10x3 gives you a big write side and a small read side, which is exactly the shape most "hand off to the next stage" moments want. Feed it everything, let it keep three values live, and let the rest ride.
How it works. Each of the ten ANY_(A)βANY_(J) inputs has a companion _key string field. Connected input + non-blank key = that value is stored on the motorway under that name. Keys are hashed (sha256) into attribute names internally, so matching is exact but case-sensitive. The three outputs read by key: ANY (A) returns the value under ANY_(A)_key, and so on for B and C. The node clones the motorway before passing it along, so whatever snapshot goes out the MOTORWAY ππ¨ output is fixed - downstream nodes get a consistent view of the bag as it was when this ramp ran.
Inputs and outputs that matter. The required MOTORWAY ππ¨ input is the pipe itself; it must already be live, meaning this node always sits after a MotorwayStart (the pack's start node) or another ramp. All the ANY_ slots are wildcard-typed, so models, images, masks, tensors, conditioning - anything - can plug in. Outputs are the bus plus three wildcard ANY slots you can wire into whatever's next. If you only set two keys, the third output won't exist, so keep the key count honest.
Install. Through ComfyUI Manager (search "ComfyUI_agilly1989_motorway") or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
Restart ComfyUI. No requirements.txt, no model files, no external Python deps - the pack is plain Python that loads as a custom node.
Common issues. The classic failure is the 'MotorwayClass' object has no attribute 'hash_' error, which means an output key asked for something nobody ever wrote - a typo, or a key written by a later node that hasn't run yet. Remember the bus flows left to right; a downstream ramp can't satisfy an upstream read. And this is a self-admittedly beta pack - the README opens with "BIG BROKEN WITH ASYNC WILL FIX WHEN I GET THE TIME/MOTIVATION" - so if a random update renames things or breaks your flow, that's the deal. It works on the author's system, and honestly, it works on most other people's too.
Inputs (21)
| 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_(J)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 | β | |
| ANY_(J)_keyopt | STRING | β |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |
| ANY (A) | * | β |
| ANY (B) | * | β |
| ANY (C) | * | β |