🔗 Pipe 20CH Any
Twenty channels on one wire — for bundles that outgrew ten
- pipe
- any1
- any2
- any3
- any4
- any5
- any6
- any7
- any8
- any9
- any10
- any11
- any12
- any13
- any14
- any15
- any16
- any17
- any18
- any19
- any20
- pipe
- any1
- any2
- any3
- any4
- any5
- any6
- any7
- any8
- any9
- any10
- any11
- any12
- any13
- any14
- any15
- any16
- any17
- any18
- any19
- any20
The 🔗 Pipe 20CH Any is the "I need to carry a lot" option on the pack's fixed-channel pipe ladder: one pipe in/out plus 20 any channels, each accepting any ComfyUI type. It's for workflows where the bundle isn't a few settings - it's half the graph's intermediate state riding one wire.
How it works
Same engine as the 5, 10, 30, and 40-channel siblings: * wildcard channels, a pipe input/output, and the inherit-if-empty behavior that makes pipes chainable. Drop values into any1…any20, pass through pipe, and matching channels come out of any downstream Pipe node. The implementation is modeled on rgthree's context-utils pattern, so the pipe behaves like a plain bundle of named slots rather than anything exotic.
The realistic use case is a Subgraph boundary or a heavily parameterized pipeline: instead of 20 parallel wires crossing into a Subgraph, you cross once. The fixed port count is the selling point here - unlike the pack's dynamically-growing Pipe Hub, you know exactly which slot is which, every time, which makes it predictable in reusable templates.
Inputs and outputs
- pipe (optional in/out) - extend or forward the bundle.
- any1 … any20 (optional) - inject or read back values; each mirrors to its matching output.
The honest take
Twenty channels is a lot of surface area, and it's usually a smell if you genuinely use all of them. But the fixed layout has real value: it's self-documenting. Name your template once, and any7 being "the controlnet model" is true forever. If you find yourself going past 20, the 30 and 40-channel versions exist - though at that point you should probably ask whether the graph itself needs restructuring rather than a bigger pipe.
Empty channels flow through as None, so be disciplined about which slots are in active use; reading an unconnected channel downstream gives you a silent None, not a warning.
Install
Ships in Light-x02 Nodes - ComfyUI Manager → search "ComfyUI-Lightx02-Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Light-x02/ComfyUI-Lightx02-Nodes
Restart ComfyUI, look under 💡Lightx02/Pipes. No extra dependencies. Standard pack reminder: remove any older standalone Light-x02 repos first, or you'll see duplicate node registration on startup.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeopt | pipe | — | |
| any1opt | * | — | |
| any2opt | * | — | |
| any3opt | * | — | |
| any4opt | * | — | |
| any5opt | * | — | |
| any6opt | * | — | |
| any7opt | * | — | |
| any8opt | * | — | |
| any9opt | * | — | |
| any10opt | * | — | |
| any11opt | * | — | |
| any12opt | * | — | |
| any13opt | * | — | |
| any14opt | * | — | |
| any15opt | * | — | |
| any16opt | * | — | |
| any17opt | * | — | |
| any18opt | * | — | |
| any19opt | * | — | |
| any20opt | * | — |
Outputs (21)
| 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 | * | — |