IO Pipe 36CH Any
For workflows that hoard state
- pipe
- any1
- any2
- any3
- any4
- any5
- any6
- any7
- any8
- any9
- any10
- any11
- any12
- any13
- any14
- any15
- any16
- any17
- any18
- any19
- any20
- any21
- any22
- any23
- any24
- any25
- any26
- any27
- any28
- any29
- any30
- any31
- any32
- any33
- any34
- any35
- any36
- pipe
- any1
- any2
- any3
- any4
- any5
- any6
- any7
- any8
- any9
- any10
- any11
- any12
- any13
- any14
- any15
- any16
- any17
- any18
- any19
- any20
- any21
- any22
- any23
- any24
- any25
- any26
- any27
- any28
- any29
- any30
- any31
- any32
- any33
- any34
- any35
- any36
This is the one you reach for when twelve channels are too few, twenty-four are almost enough, and you want to stop counting. Pipe 36CH Any carries thirty-six any-type values on a single wire - plus the pipe context for chaining - and it's the top of the pack's pipe food chain: 12, 24, 36, take your pick. If you're building a module that needs to hoard a lot of state - a reusable video pipeline that shuttles image, mask, audio, conditioning, prompt fragments, sampler settings, resolution, metadata, and a few things you haven't decided on yet - this is the fat cable tray for it.
Let me save you a decision: start with the 12. The pipe pattern's whole reason for existing is to make a graph legible by bundling values down one wire, and the plumbing docs' warning applies in spades here - the more a bundle carries, the more it hides. A 36-socket node is a wall of pins, and every value inside is invisible until you unpack it. The 36 exists for genuinely fat interfaces and for the workflow author who's building something modular enough to warrant a fixed, wide contract. It is not a reward for being disorganized.
How it works
Mechanically identical to the 12 and 24 versions - same context-utility code, bigger channel map. Every any_N input is optional and typed *; unconnected channels become None. The pipe input chains: start from an existing bundle, override only the channels you feed, carry the rest forward. All 36 outputs mirror their inputs plus the pipe output.
The chaining behavior is the part to lean on. A 36-channel pipe threaded through a long workflow is unwieldy, so the pattern is usually: assemble the bundle once, pass it through a few modules that each touch their own channels via Pipe IO style nodes, and unpack at the end. If you're feeding every channel every step of the way, you're doing pipes wrong - you should be touching the channels you own and letting the rest ride.
The inputs that matter
pipe- the bundle you're extending. This is the one that makes a 36-channel pipe usable at all.any1β¦any36- the channels. Feed the ones you own; leave the rest to ride through from the incoming pipe.
Install
Part of ComfyUI_Eclipse (r-vage). ComfyUI Manager, search ComfyUI_Eclipse, or:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
Restart ComfyUI. No models, no heavy deps beyond the pack's standard stack. And the standing warning for shared workflows: the pack's v4.0 removed legacy node IDs after the RvTools_v2 rename, so a workflow that won't load usually needs the built-in Workflow Migration Tool, not a reinstall.
Common issues
The big one is self-inflicted: 36 channels is a lot of places to lose a value, and the opaque-bundle debugging tax grows with the channel count. If a downstream value is None, it's almost always an unconnected channel or a pipe that was assembled before the value existed (stale context). Practical rules: keep the bundle contract documented (name the channels in the node title or a note), unpack with a Show Any when you're lost, and don't chain 36 channels through ten nodes - assemble early, touch what you own, unpack late.
Inputs (37)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeopt | PIPE | Optional pipe context. | |
| any1opt | * | Optional input for channel 'any1'. Accepts any type. | |
| any2opt | * | Optional input for channel 'any2'. Accepts any type. | |
| any3opt | * | Optional input for channel 'any3'. Accepts any type. | |
| any4opt | * | Optional input for channel 'any4'. Accepts any type. | |
| any5opt | * | Optional input for channel 'any5'. Accepts any type. | |
| any6opt | * | Optional input for channel 'any6'. Accepts any type. | |
| any7opt | * | Optional input for channel 'any7'. Accepts any type. | |
| any8opt | * | Optional input for channel 'any8'. Accepts any type. | |
| any9opt | * | Optional input for channel 'any9'. Accepts any type. | |
| any10opt | * | Optional input for channel 'any10'. Accepts any type. | |
| any11opt | * | Optional input for channel 'any11'. Accepts any type. | |
| any12opt | * | Optional input for channel 'any12'. Accepts any type. | |
| any13opt | * | Optional input for channel 'any13'. Accepts any type. | |
| any14opt | * | Optional input for channel 'any14'. Accepts any type. | |
| any15opt | * | Optional input for channel 'any15'. Accepts any type. | |
| any16opt | * | Optional input for channel 'any16'. Accepts any type. | |
| any17opt | * | Optional input for channel 'any17'. Accepts any type. | |
| any18opt | * | Optional input for channel 'any18'. Accepts any type. | |
| any19opt | * | Optional input for channel 'any19'. Accepts any type. | |
| any20opt | * | Optional input for channel 'any20'. Accepts any type. | |
| any21opt | * | Optional input for channel 'any21'. Accepts any type. | |
| any22opt | * | Optional input for channel 'any22'. Accepts any type. | |
| any23opt | * | Optional input for channel 'any23'. Accepts any type. | |
| any24opt | * | Optional input for channel 'any24'. Accepts any type. | |
| any25opt | * | Optional input for channel 'any25'. Accepts any type. | |
| any26opt | * | Optional input for channel 'any26'. Accepts any type. | |
| any27opt | * | Optional input for channel 'any27'. Accepts any type. | |
| any28opt | * | Optional input for channel 'any28'. Accepts any type. | |
| any29opt | * | Optional input for channel 'any29'. Accepts any type. | |
| any30opt | * | Optional input for channel 'any30'. Accepts any type. | |
| any31opt | * | Optional input for channel 'any31'. Accepts any type. | |
| any32opt | * | Optional input for channel 'any32'. Accepts any type. | |
| any33opt | * | Optional input for channel 'any33'. Accepts any type. | |
| any34opt | * | Optional input for channel 'any34'. Accepts any type. | |
| any35opt | * | Optional input for channel 'any35'. Accepts any type. | |
| any36opt | * | Optional input for channel 'any36'. Accepts any type. |
Outputs (37)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE | β |
| any1 | * | β |
| any2 | * | β |
| any3 | * | β |
| any4 | * | β |
| any5 | * | β |
| any6 | * | β |
| any7 | * | β |
| any8 | * | β |
| any9 | * | β |
| any10 | * | β |
| any11 | * | β |
| any12 | * | β |
| any13 | * | β |
| any14 | * | β |
| any15 | * | β |
| any16 | * | β |
| any17 | * | β |
| any18 | * | β |
| any19 | * | β |
| any20 | * | β |
| any21 | * | β |
| any22 | * | β |
| any23 | * | β |
| any24 | * | β |
| any25 | * | β |
| any26 | * | β |
| any27 | * | β |
| any28 | * | β |
| any29 | * | β |
| any30 | * | β |
| any31 | * | β |
| any32 | * | β |
| any33 | * | β |
| any34 | * | β |
| any35 | * | β |
| any36 | * | β |