đź’€Prepack SetPipe
Bundle your entire pipeline into one wire — this is the node that kills graph spaghetti
- model
- clip
- vae
- positive
- negative
- latent_image
- pipe
You know the workflow. Model, CLIP, VAE, two conditioning wires, a latent, a seed, steps, CFG, denoise - nine or ten separate wires marching across the canvas from the loaders and settings into the sampler. Every time you reorganize the graph you're untangling that bundle. The đź’€Prepack SetPipe exists to turn those ten wires into one: it packs everything into a single pipe object, and its sibling đź’€Prepack GetPipe unpacks it on the other side.
This is the "pipe" pattern that a lot of the ecosystem has converged on - rgthree's nodes, efficiency nodes, and now this pack all use it for the same reason. The pipe node is the ComfyUI answer to "this graph has too many edges": hide the plumbing, and the layout suddenly looks like a real pipeline instead of a bucket of worms.
How it works
It's a pure data container. set_pipe takes up to twelve optional inputs - model, clip, vae, lora_path, lora_text, positive, negative, latent_image, seed, steps, cfg, denoise - and packs them into a Python dict that it passes along as a single PIPE-typed output. Crucially, every input is optional and defaults to None. You can pack a full pipeline, or you can pack just the two conditioning wires and a seed if that's all your workflow needs to carry. There's no validation, no resizing, no side effects - it's literally a named tuple you can drag around.
The README calls out the current version's two LoRA slots (lora_path and lora_text) because the Prepack LoRA nodes feed them: load LoRAs with đź’€Prepack Loras and it hands you a <lora:name:strength> string plus any associated trigger text, both of which slot straight into the pipe. That's the neat part - the whole "model plus its LoRA metadata" bundle can ride through one wire, so downstream nodes that need to know what was applied can read it.
The inputs that matter:
model,clip,vae- the three loaders, wired from whatever model-loading node you use (including this pack's own Model DualCLIP / SingleCLIP loaders).positive,negative- your encoded conditioning.seed,steps,cfg,denoise- the sampling settings you want to carry.
The single pipe output feeds directly into đź’€Prepack GetPipe, which splits it back out into all twelve components. It also works with the pack's bundled JS extension, which colors the pipe wires so you can tell pipes apart at a glance when you're running several.
Gotchas worth knowing
Because every field defaults to None, a half-connected SetPipe is a silent trap: if you forget the model input, the pipe still packs fine, and GetPipe hands you a None model that fails downstream with a confusing "tried to run sampling without a model" style error. Check your wires before running, not after.
Also note the pipe is only as useful as the nodes around it. SetPipe's output type is PIPE, and only nodes that accept PIPE can read it - GetPipe from this pack is the one you'll pair it with. If a workflow you downloaded uses a different pack's SetPipe, the two are usually not interchangeable; the pipe dict shapes differ between packs.
Installing it
Same as every node in the pack - it all ships together:
cd ComfyUI/custom_nodes
git clone https://github.com/S4MUEL-404/ComfyUI-Prepack.git
pip install -r ComfyUI-Prepack/requirements.txt
Or use ComfyUI Manager and search "Prepack". Dependencies are minimal (PyTorch, NumPy, Pillow - already installed). Restart ComfyUI, look under đź’€Prepack. No models, no config.
If the colored wire styling doesn't appear after install, hard-refresh your browser once - the JS extension loads on page load, and an old cached frontend is the most common reason the visual niceties go missing.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| modelopt | MODEL | The model to pack. | |
| clipopt | CLIP | The CLIP to pack. | |
| vaeopt | VAE | The VAE to pack. | |
| lora_pathopt | STRING | The LoRA model path to pack. | |
| lora_textopt | STRING | The LoRA description to pack. | |
| positiveopt | CONDITIONING | The positive conditioning to pack. | |
| negativeopt | CONDITIONING | The negative conditioning to pack. | |
| latent_imageopt | LATENT | The latent image to pack. | |
| seedopt | INT | 00–18446744073709550000 | The seed value to pack. |
| stepsopt | INT | 201–10000 | The sampling steps to pack. |
| cfgopt | FLOAT | 8.00–100 | The CFG scale to pack. |
| denoiseopt | FLOAT | 1.000–1 | The denoise strength to pack. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE | The packed pipeline object containing model, clip, vae, lora_text, lora_path, positive, negative, latent_image, seed, steps, cfg, denoise. |