ComfyUI Node

Motorway 3x9

The widest fan-out three inputs can buy

By agilly1989Β·Created 2 years agoΒ·Updated about a year agoΒ· 7
Motorway 3x9
  • MOTORWAY πŸšŒπŸ’¨
  • ANY_(A)
  • ANY_(B)
  • ANY_(C)
  • MOTORWAY πŸšŒπŸ’¨
  • ANY (A)
  • ANY (B)
  • ANY (C)
  • ANY (D)
  • ANY (E)
  • ANY (F)
  • ANY (G)
  • ANY (H)
  • ANY (I)
β—„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 3x9 is the near-max fan-out ramp from the agilly1989 Motorway pack: three lanes in, nine lanes out. It's for the workflow where a handful of values have to be everywhere at once - the seed, the model, the prompt all feeding nine different consumers. Wire that by hand and you've got a canvas full of crossing lines; route it through one 3x9 and the same information gets to every destination with three wires instead of nine.

The pack is a "pipe" implementation, and this is one of its on/off ramps. A custom bus object (MotorwayClass) passes from node to node carrying values under string keys; ramp nodes file inputs onto the bus and pull outputs back off. You start with MotorwayStart (or a Motorway primitive like MotorwayFloat, which can act as a start). One honest warning before you build your masterpiece on it: the README opens "CURRENTLY IN ACTIVE DEVELOPMENT (BETA)! IF THINGS BREAK ITS BECAUSE I BROKE IT." The author means it. Save often.

The inputs and outputs

Required input is MOTORWAY πŸšŒπŸ’¨ - the bus, always coming from a Start node or an earlier ramp. Then three data inputs ANY_(A), ANY_(B), ANY_(C) typed * (they'll carry anything: MODEL, CONDITIONING, LATENT, INT, STRING). Key fields run ANY_(A)_key through ANY_(I)_key - nine of them, one per slot, since every input and every output gets a key.

The mental model: each letter's key is both the filing cabinet drawer for that letter's input and the drawer that letter's output reads from. Inputs A–C store under their keys; outputs A–C read those same keys back (write-through), and outputs D–I are pure exits with no input lane. The first output is always MOTORWAY πŸšŒπŸ’¨ - the bus keeps driving onward no matter how many exits you use.

So the pattern is: file a value in on one node, pull it out on another. Store your CLIP with ANY_(A)_key = clip, and any ramp anywhere downstream that types clip into a key field hands you that CLIP on its output. Same key later = newer value wins. And because the bus is cloned at every node, parallel branches stay isolated - writes in one branch can't corrupt a sibling.

Install

ComfyUI Manager search "ComfyUI_agilly1989_motorway", or the manual way:

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

Restart ComfyUI. No model files, no extra pip installs - it's pure Python and the whole pack weighs almost nothing.

The usual failure mode

'MotorwayClass' object has no attribute 'hash_...' is the README's own documented error: you typed a key on an output that nothing upstream ever wrote. Keys are sha256-hashed internally, so an off-by-one typo just reads an empty slot - confusing, because there's no "key not found" until you get this exact error. Also: blank key = blank output. If you wire ANY (E) but leave ANY_(E)_key empty, there's nothing in that lane. Fill every key you actually pull.

Categoryagilly1989 Nodes/Motorways

Inputs (13)

NameTypeDefaultDescription
MOTORWAY πŸšŒπŸ’¨MOTORWAY πŸšŒπŸ’¨β€”
ANY_(A)opt*β€”
ANY_(B)opt*β€”
ANY_(C)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 (10)

NameTypeDescription
MOTORWAY πŸšŒπŸ’¨MOTORWAY πŸšŒπŸ’¨β€”
ANY (A)*β€”
ANY (B)*β€”
ANY (C)*β€”
ANY (D)*β€”
ANY (E)*β€”
ANY (F)*β€”
ANY (G)*β€”
ANY (H)*β€”
ANY (I)*β€”