ComfyUI Node

Full Pipe Pack

The node that makes this pack's 'one wire instead of five' trick possible

By mudknight·Created 8 months ago·Updated 2 months ago· 1
Full Pipe Pack
  • model
  • clip
  • vae
  • positive
  • negative
  • image
  • latent
  • meta
  • full_pipe
seed

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 / negative conditioning, a seed integer, an image, a latent, and a meta dict (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.

Categorymudknight/pipe

Inputs (9)

NameTypeDefaultDescription
modelMODEL
clipCLIP
vaeVAE
positiveoptCONDITIONING
negativeoptCONDITIONING
seedoptINT
imageoptIMAGE
latentoptLATENT
metaoptMETA

Outputs (1)

NameTypeDescription
full_pipeFULL_PIPE