Motorway 10x8
The big handoff node
- 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)
- ANY (D)
- ANY (E)
- ANY (F)
- ANY (G)
- ANY (H)
The Motorway 10x8 is where the "pipe" metaphor stops being cute and starts being the architecture. Eight of its ten inputs re-emerge as outputs, which means this node is a near-complete pass-through of everything riding the bus - write eight things in, get eight things back out, plus the bus itself. It's the handoff node you place between two halves of a big workflow so each side can be built and read independently.
It comes from agilly1989/ComfyUI_agilly1989_motorway, the author's freeform take on pipes in ComfyUI. The core object is a MotorwayClass - a bag of values keyed by string, with each key hashed to an attribute name via sha256. Values aren't stored in fixed slots the way rgthree's Context nodes do it; they're stored under whatever name you type. Write and read are the same operation: name a slot, and it either absorbs or produces depending on whether an input or output is wired there.
How it works. The ten ANY_(A)βANY_(J) inputs pair with _key fields. A connected input with a filled key writes to the bag; a blank key skips the write. The eight outputs ANY (A)βANY (H) read by key, pulling from the same names. Because every ramp clones the bag before passing it on, the snapshot leaving this node is fixed - and because output A reads the value stored under ANY_(A)_key, the simplest use is a straight rename: connect a value, name it, read it back out under that name with nothing else happening to it.
Inputs and outputs that matter. The required MOTORWAY ππ¨ input is the bus; it must already be flowing from a MotorwayStart. All ANY_ slots are wildcards, accepting any type. The eight ANY outputs feed whatever's next - in a two-stage workflow, this is where stage one officially hands off to stage two. With ten write lanes and eight read lanes, this node reads back almost everything it writes, which makes it ideal for boundary points where you want to verify what's on the bus before proceeding.
Install. Either ComfyUI Manager (search "ComfyUI_agilly1989_motorway") or:
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
Then restart ComfyUI. No dependencies, no downloads.
Common issues. The standard failure is reading a key nobody wrote: 'MotorwayClass' object has no attribute 'hash_'. It's a typo, a case difference, or a read that happens before the write - remember the bus only flows left to right, and a ramp can only see keys written upstream. Also watch blank keys: an output with an empty _key field produces nothing, and the returned tuple shrinks against ComfyUI's fixed output count, which can throw off wiring. This pack is an honest beta - the README begins "BIG BROKEN WITH ASYNC WILL FIX WHEN I GET THE TIME/MOTIVATION" - so expect the occasional breaking change and pin your version if it matters.
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 (9)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |
| ANY (A) | * | β |
| ANY (B) | * | β |
| ANY (C) | * | β |
| ANY (D) | * | β |
| ANY (E) | * | β |
| ANY (F) | * | β |
| ANY (G) | * | β |
| ANY (H) | * | β |