LC Image Ref Pipe In 🖼️
Sixteen reference images on one wire
- images
- pipe
Multi-image editing is where the modern edit models live - Qwen-Image-Edit's 2509 build made multi-image input a headline feature, at its best with one to three references (person plus person, person plus product, person plus scene), and that's the shape the rest of the ecosystem is copying. The practical problem is on your canvas: three reference images means three wires from three loaders, all fanned across to the encoder, and if you're doing anything more elaborate it gets worse fast. LC Image Ref Pipe In 🖼️ bundles up to 16 reference images onto a single LC_IMAGE_REF_PIPE wire. Its partner node unpacks them at the far end.
How it works
This is one of the pack's nodes written against ComfyUI's newer backend authoring API (io.ComfyNode / io.Schema in comfy_api.latest), and that's why its socket behaviour feels like core rather than like a custom node: it uses an autogrow input with named templates, so the socket names come out as image_1, image_2, image_3… and a new socket appears as you fill the last one. The author's own note is that it matches core's Text Encode Qwen Image 2.1 growth, and that's exactly the intended pairing - this is a tidy way to get references to that encoder.
Under the hood it's refreshingly boring: the node returns {"images": [tensor or None, …]} with sixteen fixed slots. Empty or muted inputs are filtered to None rather than dropped, which is the important bit - slot numbers are preserved. Wire image_1 and image_5 and you have a pipe with two live images at positions 1 and 5, not two images packed to the front.
The inputs and outputs that matter
There's exactly one input, images, and it's the autogrow bundle - you don't set anything, you just wire. Empty and muted slots are carried as empty by design rather than treated as errors.
The single output is pipe, an LC_IMAGE_REF_PIPE. That type is understood by LC123's own nodes; the unpacker is class LCImageRefPipeOut, displayed as LC Image Ref Pipe Out 🖼️. Try to plug the pipe into anything else and it simply won't connect - this isn't a universal context object like the pack's LC_PIPE, it's a reference-image carrier with a matching pair at each end.
The point of doing this at all is legibility. Your graph has one wire crossing the canvas instead of six, and the encoders, samplers and saves in between never learn there are reference images at all. The trade is the standard one for any bundle: the wire can't tell you what's inside it, so when a reference silently stops arriving you have to check the pipe's contents rather than trace a link.
Installing it
Same one-step install for the whole pack - there's no requirements.txt, so nothing to pip.
cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes.git
Manager: search ComfyUI LC123 Nodes, install, restart, confirm the [LC123] console line. There are no models to download for this node - the reference images are your own, and the model that consumes them (Qwen-Image-Edit and friends) is a separate install.
Common issues
Nothing else accepts the pipe. If the socket refuses to connect, that's the type system working. You need the Pipe Out node on the other end.
Empty slots are None, not zero. Because slot numbers are preserved, a gap in the middle is real. That's fine going into something with optional image inputs - the Qwen 2.1 encoder skips empties - and it's a problem if you unpack an empty slot into a node that requires an image. Keep the sparse wiring for encoders that tolerate it.
The socket list grows, so a stale browser will confuse you. The autogrow behaviour is backend-declared here, but the matching output-side growth on the Pipe Out node is frontend JavaScript. After updating the pack, hard-refresh the browser or the sockets you expect to see won't be there.
Nested folder install. Zip downloads sometimes unpack to ComfyUI_LC123_nodes/ComfyUI_LC123_nodes/. If the pack doesn't load, __init__.py is one level too deep; the pack prints a warning naming the ignored path, which is your hint to move things up.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| images | COMFY_AUTOGROW_V3 | Reference images. Empty or muted slots are carried as empty. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | LC_IMAGE_REF_PIPE | — |