Motorway 9x7
The near-complete bus
- 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)
- ANY (G)
Motorway 9x7 is the ramp node that starts to feel like a full interface: nine wildcard inputs (A through I) on the loading side, seven outputs (A through G) on the pulling side. In the pack's Motorway [inputs]x[outputs] scheme, it's for when your graph genuinely lives on the bus and you want most of the important keys within reach at once.
The thing to internalize about these nodes - and it applies just as hard here - is that inputs and outputs don't line up positionally. Each input's _key field decides the name it's stored under; each output's _key field decides what it fetches from the shared bag. You can store model on input A, seed on input G, and ask output B for the seed if you want. The keys are the contract, the ports are just convenient query points. That's what makes a 9x7 useful in the middle of a workflow rather than just at the start: you can surface the seven values a downstream cluster needs even though they were all set at different places upstream.
The bag itself is a dict-like object carried on the MOTORWAY connection, with values stored under sha256 hashes of your key strings and a clone made at every hop so parallel branches don't corrupt each other. It's a small, honest design - nothing magical, just a hash-addressed store that happens to ride one wire.
Seven outputs is a lot of real estate on the canvas, so here's a take: use 9x7 when seven different downstream consumers each need a key, or when you're building a reusable "tile" of a workflow - a text-prompting block, a conditioning block, a postprocessing block - where you want a standard, visible set of in/out ports so you can copy-paste the tile into other projects. The fixed port list is the feature; it turns an implicit key-based contract into something you can see.
Install is the pack's usual:
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
or via ComfyUI Manager (search "agilly1989"). Restart ComfyUI. No models, no pip dependencies.
Shared family gotchas apply in full: keys are exact and case-sensitive, reading a key nobody wrote throws 'MotorwayClass' object has no attribute 'hash_', and the pack is a one-person beta that can change under you - pin the version once a workflow depends on it. And a small piece of advice: a 9x7 reads as clutter until you have a reason for seven exits. When you do, it's excellent. When you don't, it's just a big node you're underusing.
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 (8)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |
| ANY (A) | * | β |
| ANY (B) | * | β |
| ANY (C) | * | β |
| ANY (D) | * | β |
| ANY (E) | * | β |
| ANY (F) | * | β |
| ANY (G) | * | β |