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

SP Any Pipe [5 Ports]

Bundle five wires into one so your graph stops looking like spaghetti

By bananasss00·Created 2 years ago·Updated 12 days ago· 20
SP Any Pipe [5 Ports]
  • cpipe_in
  • any_1_in
  • any_2_in
  • any_3_in
  • any_4_in
  • any_5_in
  • cpipe_out
  • any_1_out
  • any_2_out
  • any_3_out
  • any_4_out
  • any_5_out

Once a workflow gets past a certain size, the actual problem isn't the sampling math - it's the wires. You've got MODEL, CLIP, VAE, a couple of conditionings and a seed all needing to travel from one side of the graph to the other, and if you route them individually you end up with a rat's nest crossing every other connection on the canvas. SP Any Pipe [5 Ports] is the smallest of five sizes in this pack (5/20/30/40/50) that exist purely to fix that: bundle up to five arbitrary values into a single wire, run that one wire across your graph, then unbundle it wherever you need the pieces back.

This is the same idea behind rgthree's Context node and Impact Pack's basic pipes - take a handful of things that always travel together and give them one visual line instead of five. Five ports is the size to reach for when you're bundling something small and self-contained: a checkpoint's MODEL/CLIP/VAE plus a couple of conditionings, say, or a latent plus a couple of settings you're passing to a subgraph. If five stops being enough, the pack has bigger sizes - but check those out before over-provisioning; a 50-port pipe with 45 empty sockets is its own kind of clutter.

How it works

Every any_N_in socket accepts genuinely anything - the schema types them as *, ComfyUI's wildcard type, so you can plug a MODEL into slot 1 and a plain STRING into slot 2 without complaint. Whatever you connect comes back out the matching any_N_out on the other end, in the same order. There's no repacking or relabeling; it's a straight pass-through, position for position.

The one input that isn't a wildcard is cpipe_in, typed specifically as sp_anypipe rather than *. That's the mechanism for chaining: it only accepts another SP Any Pipe node's cpipe_out. Run out of the five slots here and instead of jumping straight to a bigger node, you can feed this pipe's output into a second one as cpipe_in and keep going - useful if your bundle grows past five later and you'd rather extend than rewire from scratch.

Inputs and outputs

  • any_1_inany_5_in - five wildcard inputs, each optional.
  • cpipe_in - optional, type sp_anypipe, for chaining another Any Pipe node in.
  • Outputs mirror the inputs one-for-one: any_1_outany_5_out, plus cpipe_out for continuing the chain.

Nothing here is required - leave a slot empty and its output is simply empty too.

Installing it

Through ComfyUI Manager: search "SP-Nodes", install, restart. Manually:

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

then restart ComfyUI. No models to download for this node specifically - the pack as a whole reaches into a lot of territory (Telegram bots, KoboldCPP, wildcards), but the pipe nodes themselves are pure Python plumbing with nothing to fetch.

Common issues

A wire looks connected but the downstream node complains about type. Because every slot is the * wildcard, ComfyUI won't catch a mismatch when you build the graph - it only shows up as an error at execution time, once the real object hits a node that expected something else. If a run fails with a type error several nodes downstream of a pipe, that's the first place to look, not the node that actually threw.

You forget what's in slot 3. With five wildcard sockets and no labels beyond their index, a pipe you built two weeks ago is not self-documenting. Renaming the node title (right-click → Title) to something like "ckpt bundle" is worth the ten seconds - the port numbers alone won't remind you.

CategorySP-Nodes/Pipes

Inputs (6)

NameTypeDefaultDescription
cpipe_inoptsp_anypipe
any_1_inopt*
any_2_inopt*
any_3_inopt*
any_4_inopt*
any_5_inopt*

Outputs (6)

NameTypeDescription
cpipe_outsp_anypipe
any_1_out*
any_2_out*
any_3_out*
any_4_out*
any_5_out*