ComfyUI Node

Motorway 9x2

Bundle nine things, pluck two back out

By agilly1989Β·Created 2 years agoΒ·Updated about a year agoΒ· 7
Motorway 9x2
  • 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_(A)_keyβ€”β–Ί
β—„ANY_(B)_keyβ€”β–Ί
β—„ANY_(C)_keyβ€”β–Ί
β—„ANY_(D)_keyβ€”β–Ί
β—„ANY_(E)_keyβ€”β–Ί
β—„ANY_(F)_keyβ€”β–Ί
β—„ANY_(G)_keyβ€”β–Ί
β—„ANY_(H)_keyβ€”β–Ί
β—„ANY_(I)_keyβ€”β–Ί

Motorway 9x2 is the "collect everything, only need two" node. Nine wildcard inputs (A through I) fold into the Motorway bag, and you get the Motorway back out plus two pull-ports (A and B) to grab a couple of values. In the naming scheme this pack uses - Motorway [inputs]x[outputs] - that's the asymmetric workhorse: heavy on the storing, light on the retrieving.

The pattern is the whole point of this pack. You type a key next to each input - model, clip, vae, positive, negative, seed, whatever names you invent - and the value gets stored in the Motorway under that key. The two outputs aren't tied to the last two inputs; each one reads from the bag using whatever key you type into its key field. So a 9x2 with inputs A–I for all your generation parts can sit at the start of the graph, and later, after several nodes have read and written the bag, an output typed model pulls the (possibly modified) model out. Outputs are queries against shared state, not echoes of nearby inputs.

Mechanically it's all one custom type: the MOTORWAY connection carries a dict-like object whose values live under sha256 hashes of your key strings, and every Motorway node clones the bag on the way through so that parallel branches don't stomp on each other. That clone-on-write behavior is what makes a 9x2 safe to fan out from - you can wire its Motorway output into two different downstream paths and each one gets its own copy to mutate.

Where you'd actually use it: the classic "one fat connection" start. Nine inputs is a lot of bundle, so think of a full-generation bundle - checkpoint, both CLIPs, VAE, positive, negative, seed, steps, cfg, a LoRA stack - all on the bus, and the two outputs feeding the two things you want to touch right there, like a preview of the model name and the seed. Real community usage of this pack tends to be exactly that: people post character-consistency workflows that went from wire spaghetti to a single Motorway spine.

Install from ComfyUI Manager (search "agilly1989") or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway

Restart ComfyUI afterward. Pure Python, no models to fetch, no pip requirements.

Same gotchas as every node here. Keys are exact and case-sensitive; read a key that was never written and you get 'MotorwayClass' object has no attribute 'hash_', which is ComfyUI's way of saying "that key doesn't exist in the bag yet." The pack is a one-person beta, so treat it as a helper, not infrastructure. If you only need two things out at the end, a 9x2 beats a 9x10 for the simple reason that fewer labeled ports means fewer ways to type a key wrong.

Categoryagilly1989 Nodes/Motorways

Inputs (19)

NameTypeDefaultDescription
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)_keyoptSTRINGβ€”
ANY_(B)_keyoptSTRINGβ€”
ANY_(C)_keyoptSTRINGβ€”
ANY_(D)_keyoptSTRINGβ€”
ANY_(E)_keyoptSTRINGβ€”
ANY_(F)_keyoptSTRINGβ€”
ANY_(G)_keyoptSTRINGβ€”
ANY_(H)_keyoptSTRINGβ€”
ANY_(I)_keyoptSTRINGβ€”

Outputs (3)

NameTypeDescription
MOTORWAY πŸšŒπŸ’¨MOTORWAY πŸšŒπŸ’¨β€”
ANY (A)*β€”
ANY (B)*β€”