Nodes/ComfyUI LC123 Nodes/LC Pipe (in/edit)
ComfyUI Node

LC Pipe (in/edit)

One wire carries the whole workflow — build it or patch it here

By lonecatone23·Created 2 months ago·Updated 3 days ago· 18
LC Pipe (in/edit)
  • pipe
  • model_1
  • clip_1
  • vae_1
  • model_2
  • clip_2
  • vae_2
  • image
  • mask
  • latent
  • positive
  • negative
  • pipe
width0
height0
batch0
positive_prompt
negative_prompt
seed0
total_steps0
cfg_10.00
denoise0.00
step_swap0
cfg_20.00
sampler_name
scheduler
detailer_steps0

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.

CategoryLC123/pipe

Inputs (26)

NameTypeDefaultDescription
pipeoptLC_PIPEExisting pipe to modify (optional).
model_1optMODELModel 1
clip_1optCLIPClip 1
vae_1optVAEVAE 1
model_2optMODELModel 2
clip_2optCLIPClip 2
vae_2optVAEVAE 2
imageoptIMAGEImage
maskoptMASKMask
widthoptINT0-1–18446744073709550000Width
heightoptINT0-1–18446744073709550000Height
latentoptLATENTLatent
batchoptINT0-1–18446744073709550000Batch
positive_promptoptSTRINGPositive prompt
positiveoptCONDITIONINGPositive conditioning
negative_promptoptSTRINGNegative prompt
negativeoptCONDITIONINGNegative conditioning
seedoptINT0-1–18446744073709550000Seed
total_stepsoptINT0-1–18446744073709550000total_steps
cfg_1optFLOAT0.000–100cfg_1
denoiseoptFLOAT0.000–100denoise
step_swapoptINT0-1–18446744073709550000step_swap
cfg_2optFLOAT0.000–100cfg_2
sampler_nameoptCOMBOsampler_name
scheduleroptCOMBOscheduler
detailer_stepsoptINT0-1–18446744073709550000detailer_steps

Outputs (1)

NameTypeDescription
pipeLC_PIPE