ComfyUI Node

Motorway 10x2

The motorway junction for when one read just isn't enough

By agilly1989Β·Created 2 years agoΒ·Updated about a year agoΒ· 7
Motorway 10x2
  • 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_(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β€”β–Ί
β—„ANY_(J)_keyβ€”β–Ί

The Motorway 10x2 is what you drop into a graph when one output from the motorway isn't enough but you still want ten different things riding the bus. It's part of agilly1989/ComfyUI_agilly1989_motorway, the author's personal take on ComfyUI's "pipe" pattern, and it sits in the middle of the pack's range: a write-heavy junction with two read lanes.

Here's the mental model. The motorway is a keyed bag of values that travels down a single wire. Every Motorway AxB node is a ramp onto or off that bag. This one has ten on-ramps (inputs ANY_(A) through ANY_(J)) and two off-ramps (outputs ANY (A) and ANY (B)). That asymmetry is the whole point: you can feed ten values into the motorway while pulling just the two you need to work with right here, and let the rest keep riding for whatever comes later.

How it works. Values are stored under string keys - each input has a _key field next to it. Plug a checkpoint into ANY_(A) and type model into ANY_(A)_key, and the bus carries it under the name "model". Outputs pull by key too: the ANY (A) output returns whatever is stored under ANY_(A)_key. Internally keys are sha256-hashed into attribute names, so names are arbitrary but exact - model and MODEL are different keys. Every node in the chain clones the bag before passing it on, which means the snapshot this node hands downstream is fixed at the moment it runs; nothing later can retroactively change what it captured.

Inputs and outputs that matter. The required MOTORWAY πŸšŒπŸ’¨ input is the bus - it has to come from somewhere, so chain this after a MotorwayStart. The ten ANY_ inputs are wildcards and accept any type. The outputs are the bus plus ANY (A) and ANY (B), both wildcards that wire straight into whatever node needs that value - a KSampler, a VAE decode, a save node. A common pattern in the pack's own example workflow: run a full pipeline's worth of values (model, clip, vae, latent) into a big ramp, then use small read nodes like this downstream to pull out only what each stage needs.

Install. Either via ComfyUI Manager (search "ComfyUI_agilly1989_motorway") or:

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

Restart ComfyUI after. No dependencies, no model downloads - the whole pack is pure Python.

Common issues. Two gotchas actually bite with this shape. First, the key count is set by the larger of inputs and outputs, so a 10x2 node still shows ten _key fields even though only A and B are read back out - filling a key on C through J writes a value nobody ever reads from this node. Harmless, but pointless. Second, if you blank out ANY_(A)_key or ANY_(B)_key, that output simply doesn't appear, the returned tuple shrinks, and ComfyUI's output wiring can throw a fit. And remember this pack is openly beta - the README literally warns things break because the author broke them.

Categoryagilly1989 Nodes/Motorways

Inputs (21)

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_(J)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β€”
ANY_(J)_keyoptSTRINGβ€”

Outputs (3)

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