Multi-Pipe Out
Unpack one wire into fifty
- 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 singleXE_MULTI_PIPEinput, the bundle you want unpacked.slot00…slot49- 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 outNone.
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.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | XE_MULTI_PIPE | Pipe input to unpack |
Outputs (50)
| Name | Type | Description |
|---|---|---|
| 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 |