Nodes/XENodes/Multi-Pipe In
ComfyUI Node

Multi-Pipe In

Bundle a workflow's guts into a single pipe

By xeinherjer-dev·Created 6 months ago·Updated a day ago· 2
Multi-Pipe In
  • pipe
  • pipe

The "context bus" is the most important pattern in ComfyUI's plumbing layer, and it has nothing to do with models. The problem it solves: a real workflow needs model, clip, vae, both conditionings, width, height, seed - a dozen values that nearly every downstream node wants, each dragged across the whole canvas as its own wire. Twelve wires times twenty nodes is the noodle plate. Multi-Pipe In exists to collapse that into one connection.

It works like this. You wire whatever you want into the node - it auto-grows slots as you connect, up to 50 of them - and it stuffs everything into a single dict that travels down one XE_MULTI_PIPE connection. On the other end, a Multi-Pipe Out node unpacks the same dict back into individual outputs, and its output names sync with whatever you actually connected on the In side. That sync is the nice touch: you don't get fifty ghost slots to trace, you get back exactly the values you put in, named the same way.

The inputs, such as they are:

  • pipe - an optional "base pipe to extend/override." Connect an existing XE_MULTI_PIPE here and this node extends it, adding your slots on top. Chain two Multi-Pipe Ins and the second one carries everything the first bundled. That's the "in" idiom from the tooltip, and it's how you build a bus in stages.
  • The dynamic slots - every * type, so images, latents, strings, numbers all ride the same wire.

The output is a single pipe of type XE_MULTI_PIPE, which is a custom type defined by this pack. Say that part out loud before you build your whole workflow on it: the bundle is not interoperable with rgthree's Context, Efficiency's pipes, or anyone else's. Adopting this bus marries the graph to the XENodes pack. That's the standard trade for every pipe system - the KB's plumbing doc names stale context as the other failure mode: because the bundle carries everything, it's easy to unpack a model from a pipe assembled before the node that loaded your LoRA, and silently run base weights while a wire-happy graph would have made the mistake visible. Don't let the clean single wire convince you the contents are current.

When is it worth it? When the graph is large enough that legibility is the actual bottleneck - a big img2vid or audio pipeline where the same half-dozen values feed a chain of nodes. If you're still iterating on one region, keep values on explicit wires so you can see what feeds what; that's exactly when a pipe hides the versioning problem you're trying to debug.

Install is the pack-standard: ComfyUI Manager → search "ComfyUI-XENodes", or

cd ComfyUI/custom_nodes
git clone https://github.com/xeinherjer-dev/ComfyUI-XENodes.git xenodes

then restart. No models, no extra pip packages for this node - the pack's declared dependency is just imageio-ffmpeg for video fallback, and its requirements.txt is empty. If the node doesn't show up after install, read the ComfyUI console: the pack imports every node module at load, so one broken sibling (SaveAudio needs PyAV's av) can take the whole menu down with it.

One last practical note: the In/Out pair must agree, and the Out node dynamically mirrors the In you're connected to. If you open an old workflow and the Out shows slot names that don't match your In, reconnect the pipe wire and let the sync re-run. Cheap, but it's the kind of thing that looks like a bug until you know it's a refresh.

Categoryxenodes/utils

Inputs (1)

NameTypeDefaultDescription
pipeXE_MULTI_PIPEBase pipe to extend/override

Outputs (1)

NameTypeDescription
pipeXE_MULTI_PIPEBundled pipe output