Nodes/SP-Nodes/SP Any Pipe [20 Ports]
ComfyUI Node

SP Any Pipe [20 Ports]

The pipe size you'll actually reach for

By bananasss00·Created 2 years ago·Updated 12 days ago· 20
SP Any Pipe [20 Ports]
  • cpipe_in
  • any_1_in
  • any_2_in
  • any_3_in
  • any_4_in
  • any_5_in
  • any_6_in
  • any_7_in
  • any_8_in
  • any_9_in
  • any_10_in
  • any_11_in
  • any_12_in
  • any_13_in
  • any_14_in
  • any_15_in
  • any_16_in
  • any_17_in
  • any_18_in
  • any_19_in
  • any_20_in
  • cpipe_out
  • any_1_out
  • any_2_out
  • any_3_out
  • any_4_out
  • any_5_out
  • any_6_out
  • any_7_out
  • any_8_out
  • any_9_out
  • any_10_out
  • any_11_out
  • any_12_out
  • any_13_out
  • any_14_out
  • any_15_out
  • any_16_out
  • any_17_out
  • any_18_out
  • any_19_out
  • any_20_out

If you've ever tried to wire a "master" set of controls to five different subgraphs and watched your canvas turn into a plate of noodles, you already understand what this node is for. SP Any Pipe [20 Ports] takes up to twenty arbitrary values - model, clip, vae, conditionings, a latent, a handful of settings, whatever - and carries them across your graph as one wire instead of twenty. Of the five sizes this pack ships (5, 20, 30, 40, 50 ports), 20 is the one that tends to get used the most: five is often too tight for a real multi-stage workflow, and 30+ is usually more room than you need unless you're building something genuinely huge.

The pattern itself isn't new - rgthree's Context node and Impact Pack's basic pipes solve the same problem - bundle things that travel together into one visual line so the canvas stays legible as the workflow grows. SP-Nodes' version is deliberately dumb about it: it doesn't know or care what's in each slot, it just carries whatever you plug in.

How it works

Each any_N_in socket is typed * - ComfyUI's wildcard - so you can drop a MODEL into slot 1, a STRING into slot 2, and a LATENT into slot 3 with no complaints from the graph editor. What comes in comes back out the matching any_N_out, same position, unchanged. There's also a cpipe_in/cpipe_out pair, typed specifically as sp_anypipe rather than * - that's not another payload slot, it's for chaining. Feed one Any Pipe's cpipe_out into a second one's cpipe_in and you can extend past twenty ports without stepping up to the 30-port node, if that's more convenient for how your graph is laid out.

Inputs and outputs

  • any_1_in through any_20_in - twenty optional wildcard inputs.
  • cpipe_in - optional, sp_anypipe type, for chaining another pipe node.
  • Outputs: any_1_out through any_20_out, plus cpipe_out.

Everything is optional. Leave slots empty and their outputs are simply empty.

Installing it

ComfyUI Manager - search "SP-Nodes", install, restart. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/bananasss00/ComfyUI-SP-Nodes

then restart. This is a pure-Python organizational node - no model weights, no extra pip packages beyond what the base pack needs.

Common issues

Type errors that only show up mid-run. Because every port is *, ComfyUI can't validate what's actually flowing through a pipe at graph-build time - a mismatched type only surfaces when the wrong object reaches a node that expected something specific, which can be several nodes past the pipe itself. When a run fails downstream of a pipe with a type-shaped error, trace back through the pipe before assuming the node that errored is the culprit.

Twenty unlabeled slots is a memory test. Beyond a handful of ports, remembering "slot 7 is the negative conditioning" gets genuinely hard, especially in a workflow you're returning to after a break. Renaming the node (right-click → Title) to note roughly what's inside - or keeping the port order consistent across every pipe you build - pays for itself the first time you have to debug someone else's (or your own two-week-old) workflow.

You only ever use six of the twenty ports. That's fine and normal - nothing forces you to fill every slot - but if it's consistently far fewer than twenty, the 5-port node is lighter to look at and just as functional.

CategorySP-Nodes/Pipes

Inputs (21)

NameTypeDefaultDescription
cpipe_inoptsp_anypipe
any_1_inopt*
any_2_inopt*
any_3_inopt*
any_4_inopt*
any_5_inopt*
any_6_inopt*
any_7_inopt*
any_8_inopt*
any_9_inopt*
any_10_inopt*
any_11_inopt*
any_12_inopt*
any_13_inopt*
any_14_inopt*
any_15_inopt*
any_16_inopt*
any_17_inopt*
any_18_inopt*
any_19_inopt*
any_20_inopt*

Outputs (21)

NameTypeDescription
cpipe_outsp_anypipe
any_1_out*
any_2_out*
any_3_out*
any_4_out*
any_5_out*
any_6_out*
any_7_out*
any_8_out*
any_9_out*
any_10_out*
any_11_out*
any_12_out*
any_13_out*
any_14_out*
any_15_out*
any_16_out*
any_17_out*
any_18_out*
any_19_out*
any_20_out*