Motorway 9x10
Shove nine things on the bus, pull ten off
- 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)
- ANY (H)
- ANY (I)
- ANY (J)
Motorway 9x10 is the biggest ramp on this pack's highway: nine things in, ten things out. If your workflow is the kind where model, clip, vae, positive, negative, seed, lora stack, mask, and an image all need to travel together, this is the node that bundles them into one Motorway wire and then lets you pull any of them back out at the far end - plus one spare.
Let's decode the name, because it's the whole mental model. The pack generates every node in the pattern Motorway [inputs]x[outputs]. So 9x10 has nine ANY inputs (labeled A through I) and ten ANY outputs (A through J). Every one of those slots is wildcard-typed (*), meaning it doesn't care what you plug in - an image, a latent, a conditioning, a checkpoint, a string, whatever. Alongside each input sits a _key text field, and those keys are the whole point: you type model on input A, plug your checkpoint in, and now "model" is in the bag. Anywhere else on the Motorway you can type model into a key field and get that same object out.
The mechanism is worth knowing because it changes how you read the node. The Motorway itself is a dict-like bag of values keyed by the strings you type, stored under sha256 hashes and cloned at each hop so branches don't cross-contaminate. The node writes each connected input into the bag under its key, then its outputs don't read the local inputs - they read from the bag using whatever key you typed into each output's key field. So the outputs are pull-ports, not passthroughs. Input A gets stored, and output A grabs whatever key you typed there, which may have been set three nodes ago.
One quirk you'll notice: this node has ten key fields (A through J) but only nine inputs. That's because the generator gives you one key per slot for the larger of the two counts - so the J key exists with no matching input. Harmless, but if you're staring at a phantom key slot wondering what it's for, that's it.
All this rides on the standard MOTORWAY input in, MOTORWAY output out. The nine inputs and their keys are optional, so you can use a 9x10 as a pure bus even if you only carry two things.
Install it the same way as any node in this pack - ComfyUI Manager, searching "agilly1989", or:
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
then restart. No model downloads, no Python deps.
The usual caveats apply. Keys are exact and case-sensitive, and if you read a key that was never written you'll hit 'MotorwayClass' object has no attribute 'hash_' - that error is just a typo or an ordering problem in your graph. The pack is a one-person beta, so expect rough edges. And honestly, 9x10 is overkill for most graphs; reach for it when you genuinely have ten things to surface at once, and grab a smaller 9x3 or 9x4 when you don't. Bigger isn't better here, it's just more ports to mislabel.
Inputs (20)
| 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 | β | |
| ANY_(J)_keyopt | STRING | β |
Outputs (11)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |
| ANY (A) | * | β |
| ANY (B) | * | β |
| ANY (C) | * | β |
| ANY (D) | * | β |
| ANY (E) | * | β |
| ANY (F) | * | β |
| ANY (G) | * | β |
| ANY (H) | * | β |
| ANY (I) | * | β |
| ANY (J) | * | β |