Nodes/ComfyUI_Eclipse/IO Pipe 24CH Any
ComfyUI Node

IO Pipe 24CH Any

The bigger cable tray

By r-vageΒ·Created 10 months agoΒ·Updated a day agoΒ· 31
IO Pipe 24CH Any
  • 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
  • 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

The 12-channel pipe wasn't enough for you, was it? That's the audience for Pipe 24CH Any: same idea as its smaller sibling, but with twenty-four any-type channels instead of twelve. One wire carries up to 24 values - models, masks, latents, strings, numbers, whatever - plus the pipe context, and any downstream node in the pack can unpack what it needs. It exists for the workflows that have outgrown a tidy dozen and don't want to split into two pipes and remember which one holds what.

The honest framing first: you probably don't need 24 channels. The pipe pattern exists to fight graph illegibility - bundle values down one wire so a huge graph stays readable. But past a point, a 24-channel pipe becomes its own unreadability: you can't see what's inside without unpacking it, and a 24-slot node is a lot of sockets. Reach for this when you genuinely have a lot of state flowing together (a video pipeline carrying image, mask, audio, prompt fragments, sampler settings, metadata) or when you're assembling a reusable module with a fat interface. Don't reach for it to avoid naming a few wires.

How it works

Exactly like the 12-channel version, mechanically. Every any_N input is optional and typed *; unconnected channels become None; the pipe input lets you chain, starting from an existing bundle and carrying forward anything you don't override. All 24 outputs mirror their inputs, plus the pipe output for the onward bundle. The code is literally the same context-utility logic as the 12/36 variants (originally lifted from rgthree's context utils), with a bigger channel map.

Two behaviors to carry with you. First, the chain semantics: anything not explicitly fed in survives from the incoming pipe, which is how you thread a pipe through a long workflow while updating just the pieces you touched. Second, the stale-context trap: because the bundle is opaque, it's easy to unpack a value that an upstream node replaced. The plumbing docs put it better than I can - with forty wires you can see that the LoRA output isn't connected; with one pipe wire you can't, because the connection is there and the contents are wrong.

The inputs that matter

  • pipe - the incoming bundle you're extending or overriding.
  • any1…any24 - the channels. Wire what you need, leave the rest empty (they'll pass through as None).

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 model downloads, no heavy deps beyond the pack's usual stack. Loading a shared workflow with [Eclipse] nodes that fails? The pack's v4.0 removed legacy node IDs after the RvTools_v2 rename - run the built-in Workflow Migration Tool.

Common issues

Same family, same failures: empty channels from a missing connection or a pipe that predates the value; type errors from assuming a channel's contents; and the debugging tax that's the mirror image of the legibility pipes buy. If a 24-channel pipe feels like it's fighting you, the fix isn't a 36 - it's fewer channels on a wire you can actually trace.

CategoryπŸŒ’ Eclipse/ Pipe

Inputs (25)

NameTypeDefaultDescription
pipeoptPIPEOptional 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.

Outputs (25)

NameTypeDescription
pipePIPEβ€”
any1*β€”
any2*β€”
any3*β€”
any4*β€”
any5*β€”
any6*β€”
any7*β€”
any8*β€”
any9*β€”
any10*β€”
any11*β€”
any12*β€”
any13*β€”
any14*β€”
any15*β€”
any16*β€”
any17*β€”
any18*β€”
any19*β€”
any20*β€”
any21*β€”
any22*β€”
any23*β€”
any24*β€”