Nodes/ComfyUI_Eclipse/IO Pipe 12CH Any
ComfyUI Node

IO Pipe 12CH Any

One pipe, twelve channels, anything in them β€” the tangle-killer

By r-vageΒ·Created 10 months agoΒ·Updated a day agoΒ· 31
IO Pipe 12CH Any
  • pipe
  • any1
  • any2
  • any3
  • any4
  • any5
  • any6
  • any7
  • any8
  • any9
  • any10
  • any11
  • any12
  • pipe
  • any1
  • any2
  • any3
  • any4
  • any5
  • any6
  • any7
  • any8
  • any9
  • any10
  • any11
  • any12

Somewhere between the node that loads your image and the node that saves it, most workflows turn into a plate of noodles: a dozen values that every downstream node needs, each dragged across the canvas as its own wire. The pipe idea is the fix - bundle a bunch of values into one object that travels down one wire, and let each node pull out what it needs. Pipe 12CH Any is that idea with training wheels off: twelve any-type channels, in and out, plus a pipe context, so you can carry a model, a mask, a string, a latent, a number - literally any mix - down a single connection.

This is one of the pack's most direct borrowings: the code's own header says it's taken from rgthree's context utils, reworked into this pack's schema. The ecosystem doc describes the whole family - rgthree Context, Efficiency Nodes' pipes, ComfyUI-Easy-Use's pipe dict - and this is Eclipse's version. What makes the "Any" variant different from typed pipes is that each any_N channel accepts anything (* type), so it's the general-purpose cable tray, not a fixed spec like a model/CLIP/VAE pipe.

How it works

Every channel is optional. Wire a value into any1, any2, … or leave a channel empty - unconnected channels become None in the output. The pipe input is how you chain: pass in an existing pipe and the node starts from its contents, so anything you don't explicitly override carries forward. That's the "stale context" danger zone the plumbing docs warn about - the bundle is convenient exactly because it's opaque, which means it's easy to pull a value out that was set before a later node changed it. Debugging a pipe is harder than debugging a wire, and that's the honest price of the legibility it buys you.

Each of the 12 any_N outputs mirrors its input, and the pipe output carries the whole bundle onward. Because every channel is *, you can read/write the same pipe with models, latents, strings, whatever - the node never inspects or converts the contents, it just moves them.

The inputs that matter

  • pipe - the context to extend. The key to chaining.
  • any1…any12 - the channels. Wire what you need; leave the rest empty.
  • inputcount is not a widget here (unlike some other nodes in this pack) - channels appear as you use them.

If 12 channels isn't enough, the pack also ships Pipe 24CH Any and Pipe 36CH Any with identical semantics - same node, wider cable tray.

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 requirements. If a shared workflow referencing [Eclipse] nodes fails to load, the pack's v4.0 removed legacy node IDs after the RvTools_v2 rename - run the Workflow Migration Tool.

Common issues

The channel is empty when you expected a value: you left it unconnected and there was no pipe carrying it - or the pipe you chained from was built before the value existed (stale context). If you get a type error downstream, you put the wrong thing in a channel the consumer assumed was another type - pipes are type-safe only in the sense that they don't check. Rule of thumb: use pipes when legibility is the binding constraint, keep values on explicit wires while you're actively iterating, and when something's wrong, unpack the pipe and look at each channel before suspecting the node.

CategoryπŸŒ’ Eclipse/ Pipe

Inputs (13)

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.

Outputs (13)

NameTypeDescription
pipePIPEβ€”
any1*β€”
any2*β€”
any3*β€”
any4*β€”
any5*β€”
any6*β€”
any7*β€”
any8*β€”
any9*β€”
any10*β€”
any11*β€”
any12*β€”