Nodes/ComfyUI Prepack/đź’€Prepack GetPipe
ComfyUI Node

đź’€Prepack GetPipe

The other half of the pipe — unpack a whole pipeline from one wire

By S4MUEL-404·Created 12 months ago·Updated 10 months ago· 2
đź’€Prepack GetPipe
  • pipe
  • model
  • clip
  • vae
  • lora_path
  • lora_text
  • positive
  • negative
  • latent_image
  • seed
  • steps
  • cfg
  • denoise

đź’€Prepack GetPipe is the receiving end of the Prepack pipe pattern. Its sibling SetPipe takes a dozen components and folds them into a single pipe object; GetPipe takes that one wire and unfolds it back into the twelve original pieces on the other side of your graph. You use these two as a pair to stop a wall of parallel wires from crossing the canvas - bundle at one end, unbundle at the other, and everything between stays tidy.

It's the same trick the broader ecosystem uses in its efficiency/pipe packs, and it pays off most when you're routing one full "generation configuration" through a section of the graph where you don't care about the individual pieces - say, past a bypass switch or a comparison branch. GetPipe is where that bundled state becomes usable again.

How it works

The mechanism is about as simple as a node gets: it takes the pipe input, reads the twelve keys off the dict that SetPipe produced, and returns them in a fixed order as twelve typed outputs:

  • model (MODEL), clip (CLIP), vae (VAE)
  • lora_path (STRING), lora_text (STRING) - the LoRA metadata slots
  • positive (CONDITIONING), negative (CONDITIONING)
  • latent_image (LATENT)
  • seed (INT), steps (INT), cfg (FLOAT), denoise (FLOAT)

Every one of those outputs is explicitly allowed to be None. SetPipe defaults every input to None too, so a pipe with only a model and a seed packed is perfectly valid - GetPipe will hand back a None for all the empty slots. That's a feature when you're building partial pipes, and a footgun when you forget to pack something and don't realize it until a downstream node chokes.

The only input that matters is pipe, and it must come from a Prepack SetPipe (or anything else that emits the same dict shape - but don't count on cross-pack compatibility; pipe shapes are not standardized).

Where it fits in a real workflow

The typical shape: SetPipe collects model, clip, vae, conditioning, and your sampling settings from the loaders; you drag that one wire through whatever organizational nodes you like; GetPipe at the sampler end splits it back out into the inputs of a KSampler (or this pack's own đź’€Prepack Ksampler). Because the pipe carries steps, cfg, seed, and denoise as first-class fields, you can also pack a new pipe with different sampling values and swap it in without rewiring the whole sampler - the "settings presets" use case, done with a single wire change.

One thing to keep straight: GetPipe gives you the raw values. The seed, steps, and cfg outputs are plain numbers; if you want them back inside a packed pipe for another leg of the workflow, you route them into another SetPipe rather than assuming they re-pack themselves.

Installing it

It's in the ComfyUI Prepack pack - install the pack once and you get all eighteen nodes, including SetPipe and GetPipe together:

cd ComfyUI/custom_nodes
git clone https://github.com/S4MUEL-404/ComfyUI-Prepack.git
pip install -r ComfyUI-Prepack/requirements.txt

Or search "Prepack" in ComfyUI Manager. Dependencies are just PyTorch, NumPy, and Pillow - you already have them. Restart, look under đź’€Prepack, no model downloads required.

If GetPipe errors on load with "pipe is None", you've wired it to the wrong node - check that the pipe wire really originates from a Prepack SetPipe and that the workflow isn't feeding it something else. If an output comes back None mid-run, the fix is upstream: the field simply wasn't packed.

Categoryđź’€Prepack

Inputs (1)

NameTypeDefaultDescription
pipePIPEThe packed pipeline object.

Outputs (12)

NameTypeDescription
modelMODELThe diffusion model from the pipe object (can be None).
clipCLIPThe CLIP model from the pipe object (can be None).
vaeVAEThe VAE from the pipe object (can be None).
lora_pathSTRINGThe LoRA model path from the pipe object (can be None).
lora_textSTRINGThe formatted LoRA prompt string from the pipe object (can be None).
positiveCONDITIONINGThe positive conditioning from the pipe object (can be None).
negativeCONDITIONINGThe negative conditioning from the pipe object (can be None).
latent_imageLATENTThe latent image from the pipe object (can be None).
seedINTThe seed value from the pipe object (can be None).
stepsINTThe sampling steps from the pipe object (can be None).
cfgFLOATThe CFG scale from the pipe object (can be None).
denoiseFLOATThe denoise strength from the pipe object (can be None).