LC Pipe (in/edit)
One wire carries the whole workflow — build it or patch it here
- pipe
- model_1
- clip_1
- vae_1
- model_2
- clip_2
- vae_2
- image
- mask
- latent
- positive
- negative
- pipe
A serious workflow carries models, clips, VAEs, latents, prompts, conditioning, seed, and sampler settings from one end of the graph to the other. Wire each one individually and you've built a tapestry. Pipes bundle all of it into one object that travels down a single wire - the pattern rgthree's Context and Efficiency Nodes' Dependencies made famous, and that core ComfyUI later shipped Subgraph to compete with. LC Pipe (in/edit) is the pack's version of that bundle, and it doubles as both the builder and the editor.
How it works
All of its inputs are optional sockets, and the behavior depends on one thing: whether you connect pipe. Leave it empty and the node packs - whatever sockets you connect get bundled into a fresh LC_PIPE and emitted from the single pipe output. Connect an existing pipe and it edits - the incoming bundle is copied, your connected sockets override their slots, and the merged pipe comes out. That one behavior is the whole "in vs edit" in the node's name.
The slot list is the pack's standard, shared with LC Pipe Out and the sampler/aspect pipes: model_1/clip_1/vae_1 and model_2/clip_2/vae_2, image, mask, width, height, latent, batch, positive and negative prompts plus their conditionings, seed, total_steps, cfg_1, denoise, step_swap, cfg_2, sampler_name, scheduler, and detailer_steps. That's a full sampler configuration plus the payload, in one object.
What you'll actually use it for
The classic shape: build the pipe once at the top of the graph (models + prompt + seed + steps), thread it past every node that reads or tweaks it, and unpack it at the sampler. The "edit" mode is where it earns its keep - a downstream node can change just the seed or just the denoise and re-emit, without anyone else touching the bundle. It's also Get/Set friendly, so it works with KJ nodes that pull one slot out of a pipe mid-flight.
The few things to know
- Sockets use
forceInput, so most appear as connections rather than widgets - you wire values in rather than typing them. - Unconnected slots just don't get packed; they don't zero out existing values when editing.
- Sampler names and schedulers are real enumerations from ComfyUI's sampler list, so they validate instead of accepting typos.
- This is an LC_PIPE, a dict under the hood - it interoperates with the pack's other pipes (aspect, sampler, detail) but isn't the same type as rgthree's Context or another suite's pipe. Pick one family and stay in it.
Install
Part of ComfyUI LC123 Nodes (MIT, 89 nodes). ComfyUI Manager → search "ComfyUI LC123 Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes
Restart. No extra dependencies. On hosted platforms like RunningHub, request the pack and they install it for you.
The honest take
Pipes trade explicit wires for a bundle you can't see inside without unpacking - the legibility cost the plumbing docs warn about. But for a 40-node workflow that's the difference between a readable graph and a hairball. Use LC Pipe Edit to pack, LC Pipe Out to unpack at the end, and keep the pipe count low.
Inputs (26)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeopt | LC_PIPE | Existing pipe to modify (optional). | |
| model_1opt | MODEL | Model 1 | |
| clip_1opt | CLIP | Clip 1 | |
| vae_1opt | VAE | VAE 1 | |
| model_2opt | MODEL | Model 2 | |
| clip_2opt | CLIP | Clip 2 | |
| vae_2opt | VAE | VAE 2 | |
| imageopt | IMAGE | Image | |
| maskopt | MASK | Mask | |
| widthopt | INT | 0-1–18446744073709550000 | Width |
| heightopt | INT | 0-1–18446744073709550000 | Height |
| latentopt | LATENT | Latent | |
| batchopt | INT | 0-1–18446744073709550000 | Batch |
| positive_promptopt | STRING | Positive prompt | |
| positiveopt | CONDITIONING | Positive conditioning | |
| negative_promptopt | STRING | Negative prompt | |
| negativeopt | CONDITIONING | Negative conditioning | |
| seedopt | INT | 0-1–18446744073709550000 | Seed |
| total_stepsopt | INT | 0-1–18446744073709550000 | total_steps |
| cfg_1opt | FLOAT | 0.000–100 | cfg_1 |
| denoiseopt | FLOAT | 0.000–100 | denoise |
| step_swapopt | INT | 0-1–18446744073709550000 | step_swap |
| cfg_2opt | FLOAT | 0.000–100 | cfg_2 |
| sampler_nameopt | COMBO | sampler_name | |
| scheduleropt | COMBO | scheduler | |
| detailer_stepsopt | INT | 0-1–18446744073709550000 | detailer_steps |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | LC_PIPE | — |