ComfyUI Node

BusOut

Unpack a bus_pipe back into up to ten wires

By DemonAlone·Created 7 months ago·Updated 22 days ago· 3
BusOut
  • bus_pipe
  • output1
  • output2
  • output3
  • output4
  • output5
  • output6
  • output7
  • output8
  • output9
  • output10

BusOut takes one BUS_PIPE input and unpacks it back into up to ten separate wildcard outputs. It's the receiving end of a "bus" pattern - several values bundled into one wire earlier in the graph, then split back apart wherever you actually need them individually.

The idea behind a bus

Large ComfyUI graphs get messy fast because every value that needs to travel from one side of the canvas to the other is its own wire - model, CLIP, VAE, a couple of conditionings, a latent, all crossing the graph in parallel. A "bus" (rgthree-comfy's Context node is the best-known example of the same underlying idea, though it's a different pack with a different type name) bundles a handful of those into a single wire, so one connection carries what would otherwise be five or six, and you only re-split it where you actually need the individual pieces again. BusOut is that re-split step for this pack's own bus implementation: pack values into a BUS_PIPE earlier in the graph with this pack's corresponding bus-input node, run that one wire wherever it needs to go, then drop a BusOut where you're ready to work with the individual values again.

Worth being clear-eyed about: BUS_PIPE is a custom type name specific to this pack. It won't connect to rgthree's CONTEXT type, or to another pack's own bus/pipe implementation, even though the underlying concept is identical across all of them. Bus-style types generally don't interoperate across packs unless they share the literal same type name - pick one pack's bus system and stay inside it for a given wire.

The input and outputs

  • bus_pipe (required, BUS_PIPE) - the packed bundle coming from upstream.
  • output1 through output10 - ten wildcard * outputs, unpacked from the bundle in order.

Which slot maps to which original value depends on how the bundle was packed upstream - treat the ordering as fixed by whatever built the bus_pipe in the first place, and wire each output to the downstream node that expects that particular value.

How to install it

ComfyUI Manager: search DemonAlone-nodes-ComfyUI, install, restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/DemonAlone/DemonAlone-nodes-ComfyUI

then restart. No extra dependencies, no models - the whole bus system is pure Python plumbing bundled with the rest of the pack.

Common issues & troubleshooting

A socket won't connect to bus_pipe. It has to come from this pack's own bus-input node specifically - a BUS_PIPE from a different pack's bus/pipe system, even one that behaves conceptually the same way, won't match unless it's literally the same custom type.

One of the ten outputs is empty or wrong. Check what actually went into the bundle upstream and in what order - BusOut just unpacks whatever it was handed; if a value wasn't packed in, or was packed into a different slot than you expect, that's a mismatch to fix at the packing end, not here.

I only need two or three values from the bundle, do I have to wire all ten? No - wire only the outputs you actually need. Unused ones can stay disconnected without affecting the ones you do use.

Why use a bus instead of just running individual wires? Purely a graph-tidiness trade-off. For a small workflow, individual wires are often clearer. A bus starts paying off once you've got a handful of values traveling the same long distance across a busy canvas and you're tired of untangling parallel wires every time you rearrange nodes.

CategorySystem/Bus

Inputs (1)

NameTypeDefaultDescription
bus_pipeBUS_PIPE

Outputs (10)

NameTypeDescription
output1*
output2*
output3*
output4*
output5*
output6*
output7*
output8*
output9*
output10*