Full Pipe Pack
The node that makes this pack's 'one wire instead of five' trick possible
- model
- clip
- vae
- positive
- negative
- image
- latent
- meta
- full_pipe
Every other node in this pack that ends in "(full-pipe)" - the loaders, the detailers, the prompt builder, the inpaint - works off a single bundle of data called a FULL_PIPE. Full Pipe Pack is where that bundle is born. It's the pack's answer to the classic ComfyUI spaghetti problem: instead of dragging five wires across the canvas for model, CLIP, VAE, conditioning, and seed, you pack them into one bundle and pass that around.
It's a deliberately dumb node, and that's its virtue. You connect your model, clip, and vae (the only required inputs), optionally add positive, negative, seed, image, latent, or meta, and out comes a single full_pipe output. Under the hood it's a dict - that's literally all a FULL_PIPE is, a Python dictionary with named slots. Every pipe node in the pack reads and writes those same keys, which is why they chain together so cleanly.
What goes in
- Required:
model,clip,vae. If you have a loader that only outputs one of these, this is where you assemble them. - Optional:
positive/negativeconditioning, aseedinteger, animage, alatent, and ametadict (the pack uses meta to stash things like the checkpoint name for workflow metadata).
That's the whole inventory - you can see the same field list at the top of pipe.py in the pack source, since it's shared by FullPipeIn, FullPipeOut, and every loader.
How you actually use it
A minimal mudknight workflow looks like: a loader (checkpoint or split) outputs a full pipe → prompt/conditioning nodes update it → a generation node consumes it → FullPipeOut unpacks the result if you need to hand things to non-pipe nodes. Full Pipe Pack is the fallback for when you're not using the pack's own loaders but still want to jump into a pipe - say your project uses a custom checkpoint loader, or you want to combine components from different sources.
It also plays well with FullPipeIn: pack once at the start, then FullPipeIn edits individual slots downstream without unpacking everything.
Installing it
It's in the mudknight-utils pack, so ComfyUI Manager (search comfyui-mudknight-utils) or:
cd ComfyUI/custom_nodes
git clone https://github.com/mudknight/comfyui-mudknight-utils
then restart. This node needs no extra dependencies - no Impact Pack, no model files. The Python deps (numpy, opencv-python, pillow, and friends) come from the pack's requirements.txt.
Where people get burned
The classic pipe mistake is a slot being None. A FULL_PIPE with no positive or no image looks fine on the canvas but explodes downstream when a detailer or sampler tries to read a missing key - the error messages in this pack are decent about naming the missing field. And remember the pipe isn't magic: it's still just your model sitting in RAM. Passing a pipe around doesn't reload anything, but a pipe full of big tensors held in a workflow is a pipe full of VRAM if you batch aggressively. Pack once, keep the pipe short, unpack at the end.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| positiveopt | CONDITIONING | — | |
| negativeopt | CONDITIONING | — | |
| seedopt | INT | — | |
| imageopt | IMAGE | — | |
| latentopt | LATENT | — | |
| metaopt | META | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| full_pipe | FULL_PIPE | — |