ComfyUI Node

Motorway 3x8

Three things in, eight things out, one bus doing the hauling

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

Motorway 3x8 is the fan-out ramp from the agilly1989 Motorway pack that takes three inputs and can deliver eight outputs. It's the kind of node you reach for when a few values need to reach a lot of places: think of a character-consistency workflow where the same model, same seed and same conditioning have to feed every one of eight downstream nodes. That's exactly the case a real user showed off on r/comfyui - replying to a "wire spaghetti" thread with the same workflow collapsed onto a Motorway bus. This is the pack's whole reason to exist: fewer wires, less spaghetti.

The pack is a pipe implementation. A custom bus object (MotorwayClass) travels from node to node carrying values under string keys. Every Motorway AxB node is an on/off ramp - inputs get filed onto the bus, outputs pull values back off. Every journey starts with MotorwayStart or a Motorway primitive like MotorwaySeed, which can kick off a bus by itself. And brace yourself: the README literally says "CURRENTLY IN ACTIVE DEVELOPMENT (BETA)! IF THINGS BREAK ITS BECAUSE I BROKE IT." It's a passion project, not a guarantee.

Reading the node

There's one required input, MOTORWAY πŸšŒπŸ’¨ - the bus, always wired from a Start node or an earlier ramp. Then three data inputs, ANY_(A), ANY_(B), ANY_(C), typed * so they accept any type ComfyUI throws at them. The key fields run from ANY_(A)_key to ANY_(H)_key - eight of them, one per slot, because the generator hands every input and every output a key.

Each letter's key does two jobs: it's where that letter's input gets stored, and it's also what that letter's output reads back. So on 3x8, slots A–C are write-through (input files under the key, output reads the same key back out), while D–H are pure exits - no input lane, just a key to pull a value out of the bus. The first output is always MOTORWAY πŸšŒπŸ’¨, carrying the bus onward.

Say you want every output to see the seed: type seed into ANY_(A)_key (feeding the seed in on ANY_(A)), then type seed into ANY_(D)_key, ANY_(E)_key, and so on. Each of those outputs hands back the same seed, and you haven't drawn a single wire between the seed source and those consumers.

Install

ComfyUI Manager: search "ComfyUI_agilly1989_motorway". Or:

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

Restart ComfyUI. That's it - no models to download, no pip dependencies. It's plain Python.

The traps

The README's signature error is 'MotorwayClass' object has no attribute 'hash_...' - you tried to pull a key nobody wrote yet. Keys are hashed internally (that's the hash_ prefix), so a typo in a key string silently points at a different (empty) slot. And remember the empty-key rule: wire an output, leave its key blank, and there's simply nothing in that slot. Fill the key for every output you actually use.

Categoryagilly1989 Nodes/Motorways

Inputs (12)

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β€”

Outputs (9)

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