Pipe [LP]
The one node that's both ends of the wire at once
- pipe
- model
- pos
- neg
- latent
- vae
- clip
- controlnet
- image
- any1
- any2
- any3
- any4
- any5
- pipe
- model
- pos
- neg
- latent
- vae
- clip
- controlnet
- image
- seed
- any1
- any2
- any3
- any4
- any5
The pack's own README puts it plainly: Pipe is "extremely useful and extremely easy to use" precisely because it's both an input and an output on the same node. Where Pipe In and Pipe Out split the job in two - bundle here, unbundle there - Pipe does both at once. You can drop it mid-graph, feed it whatever you have on hand, and pull out whatever you need right there, without a matching node on the other end.
What it does
Same idea as Pipe In and Pipe Out combined into one node: any of the standard pipeline types you wire in - model, conditioning, latent, VAE, CLIP, ControlNet, image, seed, or one of five open "any" slots - get bundled into a PIPE_LINE, and every single one of those types is also available as its own individual output on the same node, unbundled and ready to use immediately. It's the node you reach for when you need both the compact pipe and quick access to one of its pieces at the same spot in the graph, without adding a second node just to split it back out.
The pack's own author is upfront that this convenience has a cost: because it exposes every slot as both an input and an output, it's a busier node visually than Pipe In or Pipe Out. Their own recommendation is to use it "where it is absolutely necessary" and reach for the split Pipe In / Pipe Out pair otherwise, purely for a tidier-looking graph. Functionally there's no real downside to using Pipe everywhere - it's a style call, not a correctness one.
Inputs and outputs that matter
All optional, all the same set on both sides:
pipe,model,pos,neg,latent,vae,clip,controlnet,image,seed,any1–any5as inputs - wire in whatever you have.- The exact same list, plus
pipe, comes back out as individual outputs - wire out whatever you need.
Nothing is required. Leave a slot empty on the input side and its matching output will just carry nothing forward.
Installing it
Through ComfyUI Manager, search "ComfyUI Level Pixel" or "ComfyUI-LevelPixel." Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/LevelPixel/ComfyUI-LevelPixel.git
Restart ComfyUI afterward. Pure graph plumbing again - no model downloads, no extra dependencies.
Where people get burned
Same custom-type gotcha as the rest of the family: PIPE_LINE only connects to other LP pipe nodes, not to rgthree's Context or any other pack's bundling type, even though they're solving the same conceptual problem.
The other thing worth knowing before you commit to using Pipe everywhere: because every input doubles as an output, it's easy to end up with a node on your canvas that looks like it's doing thirty things when it's really doing two or three. If you find yourself squinting at a Pipe node trying to figure out what actually flows through it, that's the moment to swap it for the Pipe In / Pipe Out pair instead - same behavior, clearer graph.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeopt | PIPE_LINE | — | |
| modelopt | MODEL | — | |
| posopt | CONDITIONING | — | |
| negopt | CONDITIONING | — | |
| latentopt | LATENT | — | |
| vaeopt | VAE | — | |
| clipopt | CLIP | — | |
| controlnetopt | CONTROL_NET | — | |
| imageopt | IMAGE | — | |
| seedopt | INT | 00–18446744073709550000 | — |
| any1opt | * | — | |
| any2opt | * | — | |
| any3opt | * | — | |
| any4opt | * | — | |
| any5opt | * | — |
Outputs (15)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE_LINE | — |
| model | MODEL | — |
| pos | CONDITIONING | — |
| neg | CONDITIONING | — |
| latent | LATENT | — |
| vae | VAE | — |
| clip | CLIP | — |
| controlnet | CONTROL_NET | — |
| image | IMAGE | — |
| seed | INT | — |
| any1 | * | — |
| any2 | * | — |
| any3 | * | — |
| any4 | * | — |
| any5 | * | — |