Motorway 7x3
The Motorway workhorse ramp
- MOTORWAY ππ¨
- ANY_(A)
- ANY_(B)
- ANY_(C)
- ANY_(D)
- ANY_(E)
- ANY_(F)
- ANY_(G)
- MOTORWAY ππ¨
- ANY (A)
- ANY (B)
- ANY (C)
If your ComfyUI workflow looks like somebody dropped a plate of spaghetti, the Motorway pack is built to fix that, and Motorway 7x3 is the ramp you'll reach for first. It's one node out of a whole family (roughly 120 generated variants) that implement what the author calls a "pipe": a shared, named-value bus that travels through your graph on a single wire typed MOTORWAY ππ¨. Instead of dragging your checkpoint, CLIP, VAE, conditioning and seed across the canvas every time you need them, you load them onto the bus once and pull them off wherever they're actually used.
The name is the whole manual. 7x3 means seven inputs, three outputs. Seven sockets let you attach things to the motorway, three sockets let you take things back off. The node calls no API, needs no key, downloads no models - it's pure wire-management, the same idea rgthree's Context nodes chase, just with a dumber name and a sharper focus.
How it works
Under the hood the motorway is a small class that behaves like a dict, and the keys are yours to invent. Technically the code stores everything under a sha256 hash of the key name - that's just so you can type readable names like "model" while lookups stay fast and unambiguous. Every Motorway node takes the bus in on its MOTORWAY ππ¨ input, writes any connected value onto it under the key you typed in the matching _key field, then clones the bus and hands the clone downstream.
Two behaviors follow. First, the bus is state that travels with the wire: something written on an early ramp is still there at a late one, until something else writes the same key and overwrites it (last writer wins). Second, writes and reads are independent - your three outputs don't have to be the three things you just plugged in. Outputs are lookups: type the key of anything that's riding the bus and it comes out that socket.
The inputs and outputs that matter
MOTORWAY ππ¨(required input) - the bus from upstream. Wire this from aMotorwayStartnode or any earlier Motorway ramp.ANY (A)throughANY (G)- the seven on-ramps. Plug in anything: a model, a latent, a string, a conditioning, whatever. Each has a matching_keytext field that names it on the bus.ANY (A),ANY (B),ANY (C)(outputs) - the three off-ramps, plus theMOTORWAY ππ¨output that carries the bus onward.
The only part you really set by hand is the keys. Connect an input, type a name for it, then type that same name into an output key further down the line and the value reappears.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
Restart ComfyUI after cloning. You can also find it in ComfyUI Manager under "Install Custom Nodes" by searching "motorway". No pip dependencies - the pack is pure Python standard library - and no model files to download. That installs all ~120 Motorway variants at once, which is why the node list suddenly gets a lot longer.
Common issues
'MotorwayClass' object has no attribute 'hash_'- you asked an output for a key that was never written, so it doesn't exist on the bus yet. Usually a typo, or a case mismatch (keys are case-sensitive).- Gaps in output keys shift the sockets. Outputs are positional and only populated when the key is non-empty; leave
ANY (A)_keyblank and the value fromANY (B)_keycomes out socket A. Fill them A, B, C in order. - It's beta, on purpose. The author's README opens with "IF THINGS BREAK ITS BECAUSE I BROKE IT" and a note that it's broken with async execution pending a fix. If your graph dies under ComfyUI's async mode, that's an acknowledged upstream issue, not a mistake in your wiring.
Want to see it in action? The repo ships an Example.json you can drag straight into ComfyUI - it's the fastest way to get the mental model.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β | |
| ANY_(A)opt | * | β | |
| ANY_(B)opt | * | β | |
| ANY_(C)opt | * | β | |
| ANY_(D)opt | * | β | |
| ANY_(E)opt | * | β | |
| ANY_(F)opt | * | β | |
| ANY_(G)opt | * | β | |
| ANY_(A)_keyopt | STRING | β | |
| ANY_(B)_keyopt | STRING | β | |
| ANY_(C)_keyopt | STRING | β | |
| ANY_(D)_keyopt | STRING | β | |
| ANY_(E)_keyopt | STRING | β | |
| ANY_(F)_keyopt | STRING | β | |
| ANY_(G)_keyopt | STRING | β |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| MOTORWAY ππ¨ | MOTORWAY ππ¨ | β |
| ANY (A) | * | β |
| ANY (B) | * | β |
| ANY (C) | * | β |