ComfyUI Node

Motorway 1x9

Motorway 1x9

By agilly1989Β·Created 2 years agoΒ·Updated about a year agoΒ· 7
Motorway 1x9
  • MOTORWAY πŸšŒπŸ’¨
  • ANY_(A)
  • 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 1x9 is the fan-out node of the agilly1989 "Motorway" pack, and the name tells you exactly what it does: one value goes in, nine named values come out. If you've ever rebuilt a big workflow after giving up on a wall of crossing wires, this is the node that lets you not do that - you park one thing on the bus, then tap it in nine different places downstream.

The "1x9" is read as Motorway [inputs]x[outputs], the pack's naming scheme. So 1x9 takes a single data input and hands back nine separate outputs, plus the bus itself. It's part of agilly1989/ComfyUI_agilly1989_motorway, a beta, one-dev "pipe" implementation by agilly1989 (findable as @agilly1989 in the Comfy Org discord). Where rgthree Context and Impact Pack pipes carry values on a dict, the Motorway carries a custom MotorwayClass object, and it's the same bus-type wire running through every node.

How it works

Every Motorway node works the same way. The incoming MOTORWAY πŸšŒπŸ’¨ connection (required) is a bus object that's been passed along from the MotorwayStart node you must begin with. You type a key - a plain string like model or positive - into a _key box, connect a value, and the node writes that value onto the bus under your key. Keys aren't stored under their real names; each one is sha256-hashed into an attribute like hash_3f6a…, which is why the error messages read so cryptically. Later, any Motorway node that asks for the same key gets the value back. Same key twice overwrites the first write - the bus is a pile of name-tags, not a log.

The 1x9 twist: because it has more outputs than inputs, the key slots and the data inputs don't line up 1:1. It has:

  • one data input, ANY_(A), and nine key slots ANY_(A)_key through ANY_(I)_key
  • the required MOTORWAY πŸšŒπŸ’¨ bus input
  • outputs MOTORWAY πŸšŒπŸ’¨ plus ANY (A) through ANY (I)

Slot A's key does double duty - it names the input and reads output A, so whatever you write under "A" comes right back out of A. Slots B through I have no matching input, so their keys are pure readers: put any key that exists on the bus into ANY_(B)_key, and output B hands it over. That's the real use of a 1x9 - it's a read-many distributor. Write a seed, a checkpoint, a prompt, or a whole conditioning once upstream, then fan it out to nine consumers through one tidy node.

Installing

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

then restart ComfyUI. Or find ComfyUI_agilly1989_motorway in ComfyUI Manager. It's pure Python with zero extra dependencies and no model downloads - nothing to hunt down. Start a flow with MotorwayStart, and the pack's own Example.json shows the intended usage.

Common issues

  • 'MotorwayClass' object has no attribute 'hash_' - that's a key that doesn't exist on the bus yet. You typo'd it, or you never wrote it upstream. Check the key strings.
  • The node errors when a key is missing: every _key slot you're actually reading needs a value. An empty key means the output for that slot never gets produced, so wiring anything into it makes ComfyUI hit a missing-output error.
  • Don't type a key into an input slot you haven't connected - an unconnected input writes None over that key, clobbering a value you wanted to keep.

It's a beta pack, and the author says so on the tin. For plain key/value plumbing it works, and it makes wire spaghetti a lot less spaghettified.

Categoryagilly1989 Nodes/Motorways

Inputs (11)

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