ComfyUI Node

Motorway 8x2

Pack eight values on the bus, keep two to hand

By agilly1989Β·Created 2 years agoΒ·Updated about a year agoΒ· 7
Motorway 8x2
  • MOTORWAY πŸšŒπŸ’¨
  • ANY_(A)
  • ANY_(B)
  • ANY_(C)
  • ANY_(D)
  • ANY_(E)
  • ANY_(F)
  • ANY_(G)
  • ANY_(H)
  • 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β€”β–Ί

Motorway 8x2 is the "drop off a lot, keep a little" ramp. Eight inputs feed values onto the Motorway bus; two outputs pull values back off. It's one variant of the ~120 nodes that ComfyUI_agilly1989_motorway generates, and the pack is agilly1989's take on the "pipe" pattern for ComfyUI - a named-value bus that rides a single MOTORWAY πŸšŒπŸ’¨ wire, so your checkpoint, conditioning, settings and seeds don't each need a wire spanning the whole canvas.

Why would you pick 8x2 specifically? It's the shape for a node that mostly contributes - you're adding eight things to the bus for the rest of the graph to use - but you also want a couple of them locally, right now, to hand to the immediate next stage. Think of a spot where you merge a batch of settings and models, then grab "latent" and "seed" out the other side for the sampler you're about to drop in.

How it works

Like every Motorway node: the bus is a dict-like object keyed by sha256 hashes of your key names. On each run the node stores every connected input under its _key name, clones the bus, and emits the clone plus one output per non-empty output key. Outputs are pure lookups - type the name of any value riding the bus and it comes out that socket, regardless of whether you plugged it in here or two ramps ago. Values persist until a later write to the same key replaces them.

There's no requirement that the two outputs match any of the eight inputs. They usually won't, in fact - the whole trick is that the input set and the output set are independent slices of the same named dictionary.

The inputs and outputs that matter

  • MOTORWAY πŸšŒπŸ’¨ - required bus input and the bus output that carries everything on.
  • ANY (A) through ANY (H) - eight inputs, each with a _key name field.
  • ANY (A), ANY (B) - two outputs, each with a _key lookup field.

Type eight names in, type two names out. The eight store, the two fetch. That's the entire workflow of using this node.

Installing it

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

Restart ComfyUI, or use ComfyUI Manager and search "motorway". No pip dependencies, no model downloads - pure Python. Installing it registers the whole Motorway family, so expect a wall of ~120 Motorway entries in your node search afterward.

Common issues

  • 'MotorwayClass' object has no attribute 'hash_' - an output key doesn't exist on the bus. Usually a typo or case mismatch; keys are exact.
  • Missing start node. A Motorway ramp needs a bus to ride - first node in the chain should be MotorwayStart or a Motorway primitive that acts as one.
  • Gaps in output keys. Only non-empty keys produce output and sockets are positional, so keep A and B filled in order.
  • Beta. The README's top line warns it's broken with async and the author openly says things break because they broke them. Fine for single runs, plan around it otherwise.
Categoryagilly1989 Nodes/Motorways

Inputs (17)

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

Outputs (3)

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