ComfyUI Node

Motorway 3x10

Motorway 3x10

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

Motorway 3x10 is the biggest node the agilly1989 Motorway pack ships: three values in, ten named values out. Seven of those ten outputs are read-only taps into anything already riding the bus. When one node has to be the distribution point for a whole graph - three live values moving forward while a pile of settings get surfaced for consumers all over the canvas - this is the shape you're after.

The Motorway is a beta "pipe" implementation by solo dev agilly1989, the same idea as rgthree's Context nodes and Impact Pack pipes: collapse a tangle of wires into one bus connection. The transport is a MotorwayClass object passed along the MOTORWAY πŸšŒπŸ’¨ wire - required input on every node, always-first output so the route continues. Every flow begins at MotorwayStart, then the bus threads through whatever junctions you add. Load Example.json from the repo to see it in action.

How it works

The mechanism is the pack's single trick, applied at maximum scale: keys. Values into ANY_(A), ANY_(B), ANY_(C), each named in a _key box, all three stored on the bus. Because the pack always provides as many key slots as the larger side, this node gets the full ten - ANY_(A)_key through ANY_(J)_key:

  • inputs ANY_(A), ANY_(B), ANY_(C) with keys
  • read-only key slots ANY_(D)_key through ANY_(J)_key
  • the required MOTORWAY πŸšŒπŸ’¨ bus input
  • outputs MOTORWAY πŸšŒπŸ’¨, ANY (A) through ANY (J)

A, B, C are double-duty - each names its input and reads its own output. The seven remaining slots are taps: type a key that exists on the bus and the matching output hands it over. So you might carry model, clip and vae forward while exposing positive, negative, seed, steps, cfg, denoise and latent right here. One node becomes the control panel for the entire downstream graph.

The "10" is the ceiling: the pack's generator is capped at MAX_IN = 10 and MAX_OUT = 10 in ramps/generated.py, so this is the widest fan-out the defaults produce. The README notes you can raise those numbers (up to 52) and regenerate if you truly need more lanes.

Keys are sha256-hashed into hash_… attributes internally - a missing key shows up as 'MotorwayClass' object has no attribute 'hash_' - and writing the same key twice anywhere overwrites the earlier value.

Installing

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

then restart ComfyUI, or search ComfyUI_agilly1989_motorway in ComfyUI Manager. No pip dependencies, no model downloads; pure Python, so clone-and-restart is everything.

Common issues

  • hash_ error: key never written, or mismatched spelling/case. Keys match exactly.
  • Every key slot must be filled; an empty _key means that output is never produced and wiring anything into it errors on a missing output. All ten.
  • Only key connected inputs. A disconnected input with a key stores None under that name and can clobber a real value.

Beta pack, author's honesty included. At ten lanes it's the biggest off-ramp in the box - bring three values, walk away with a whole dashboard.

Categoryagilly1989 Nodes/Motorways

Inputs (14)

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

Outputs (11)

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