Nodes/XENodes/Multi-Pipe Out
ComfyUI Node

Multi-Pipe Out

Unpack one wire into fifty

By xeinherjer-dev·Created 6 months ago·Updated a day ago· 2
Multi-Pipe Out
  • pipe
  • slot00
  • slot01
  • slot02
  • slot03
  • slot04
  • slot05
  • slot06
  • slot07
  • slot08
  • slot09
  • slot10
  • slot11
  • slot12
  • slot13
  • slot14
  • slot15
  • slot16
  • slot17
  • slot18
  • slot19
  • slot20
  • slot21
  • slot22
  • slot23
  • slot24
  • slot25
  • slot26
  • slot27
  • slot28
  • slot29
  • slot30
  • slot31
  • slot32
  • slot33
  • slot34
  • slot35
  • slot36
  • slot37
  • slot38
  • slot39
  • slot40
  • slot41
  • slot42
  • slot43
  • slot44
  • slot45
  • slot46
  • slot47
  • slot48
  • slot49

Multi-Pipe Out is the other half of the bundle. Where Multi-Pipe In gathers a dozen values into one XE_MULTI_PIPE wire, this node takes that single wire and fans it back out into individual outputs - up to 50 of them, slot00 through slot49, each a wildcard (*) that passes whatever came in. If the In node is a zip file, this is the unzip.

It's a deliberately boring node, and that's the point. You don't configure it, you don't set types, you connect a pipe and the outputs fill themselves in. The one genuinely clever bit is the dynamic sync: because the frontend knows which Multi-Pipe In you're connected to, the Out node's output names mirror the slots you actually populated on the In side. Wire up a pipe that carried model, clip, vae, and seed, and this node presents those named outputs instead of a wall of slotNN labels you have to count.

The inputs and outputs:

  • pipe - a single XE_MULTI_PIPE input, the bundle you want unpacked.
  • slot00slot49 - the unpacked values. Every one is type-agnostic, so an image comes out an image, a latent a latent, and anything that wasn't in the bundle comes out None.

That None behavior matters more than it looks. ComfyUI reads an unwired optional input as None, so a pipe that doesn't carry a value behaves exactly like a node you never connected - downstream fallback logic (like a first-non-null switch) just skips it. You get "this branch isn't active" for free, no muted nodes required.

Where you'd actually use it: on the far side of a bus. Build a big workflow where Multi-Pipe In collects the shared values at the top, run one fat wire down the middle of the graph, then drop a Multi-Pipe Out wherever a cluster of nodes needs its own copies. It's the classic context-bus pattern the KB's node-plumbing doc calls the single most important design in the plumbing layer - with the same warning attached: the bundle hides which version of each value is inside. If you unpack clip from a pipe assembled before a LoRA node ran, you silently use the pre-LoRA clip. The one wire that made the graph legible also hid what changed. When you're actively iterating on a section, pull values onto explicit wires so you can see them.

The other honest limitation is lock-in. XE_MULTI_PIPE is this pack's own type, so an In from another pipe system (rgthree Context, Efficiency's pipes) won't plug into this Out. Decide once which bus your graph speaks, and don't mix.

Install is the standard pack routine - ComfyUI Manager, search "ComfyUI-XENodes", or clone it in:

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

then restart ComfyUI. Nothing to download, no model files, no pip step for this node. If it doesn't appear, check the ComfyUI console rather than assuming the install failed - the pack imports all its node modules together, so a sibling node's missing dependency (SaveAudio needs PyAV's av) can prevent the whole menu from loading.

One quirk worth knowing: the output-name sync is a frontend behavior, so it depends on the pipe being actually connected in the loaded graph. Reconnect the pipe wire if the names ever look stale after opening an old workflow - the sync re-runs on connection, not on file load.

Categoryxenodes/utils

Inputs (1)

NameTypeDefaultDescription
pipeXE_MULTI_PIPEPipe input to unpack

Outputs (50)

NameTypeDescription
slot00*Output for slot00
slot01*Output for slot01
slot02*Output for slot02
slot03*Output for slot03
slot04*Output for slot04
slot05*Output for slot05
slot06*Output for slot06
slot07*Output for slot07
slot08*Output for slot08
slot09*Output for slot09
slot10*Output for slot10
slot11*Output for slot11
slot12*Output for slot12
slot13*Output for slot13
slot14*Output for slot14
slot15*Output for slot15
slot16*Output for slot16
slot17*Output for slot17
slot18*Output for slot18
slot19*Output for slot19
slot20*Output for slot20
slot21*Output for slot21
slot22*Output for slot22
slot23*Output for slot23
slot24*Output for slot24
slot25*Output for slot25
slot26*Output for slot26
slot27*Output for slot27
slot28*Output for slot28
slot29*Output for slot29
slot30*Output for slot30
slot31*Output for slot31
slot32*Output for slot32
slot33*Output for slot33
slot34*Output for slot34
slot35*Output for slot35
slot36*Output for slot36
slot37*Output for slot37
slot38*Output for slot38
slot39*Output for slot39
slot40*Output for slot40
slot41*Output for slot41
slot42*Output for slot42
slot43*Output for slot43
slot44*Output for slot44
slot45*Output for slot45
slot46*Output for slot46
slot47*Output for slot47
slot48*Output for slot48
slot49*Output for slot49