Nodes/ComfyUI LC123 Nodes/LC Apply LoRA Stack ๐ŸŽš๏ธ
ComfyUI Node

LC Apply LoRA Stack ๐ŸŽš๏ธ

The boring half that applies the list, with a real off switch

By lonecatone23ยทCreated 2 months agoยทUpdated about 7 hours agoยท 22
LC Apply LoRA Stack ๐ŸŽš๏ธ
  • model
  • clip
  • lora_stack
  • model
  • clip
โ—„bypassfalseโ–บ

This node is intentionally minimal and that's its best feature. model, clip and lora_stack in; model and clip out; one bypass boolean on the front. It pairs with LC LoRA Loader Stack (or any other pack that emits a LORA_STACK), and its job is to actually load and apply the LoRAs on the list.

The interesting part is the off switch. Bypassing a LoRA is normally the fiddliest thing in ComfyUI: you either mute the node and break your wiring logic, or you set strengths to zero one by one and forget to put them back. Here bypass on means the model and clip pass straight through untouched - nothing loaded, nothing applied, graph intact. Wire one BOOLEAN into it and you have an A/B test of your whole LoRA recipe from a single switch.

How it works

On execution it walks the lora_stack list in order. For each entry it unpacks (name, strength_model, strength_clip), skips entries with no name or both strengths at zero, resolves the file, and calls comfy.sd.load_lora_for_models - the same call stock LoraLoader makes, just looped. Because model and clip strengths come from the tuple, this node can run a LoRA harder on one side than the other, which the single-node LC LoRA Loader can't.

Two details that save you grief:

  • Files are cached per execution, so a LoRA appearing twice in the list is read from disk once.
  • A missing file is skipped, not fatal. A stack saved last month can outlive a renamed LoRA without taking your queue down with it. Convenient, but it also means the failure mode is "the LoRA quietly isn't there" - so when an image loses a look you expect, check the file still exists at the path you saved.
  • Empty stack = pass-through. If nothing is wired into lora_stack, you get your model and clip back unchanged rather than an error.

Inputs and outputs

bypass is the only required input and it's just your kill switch: on, everything below is skipped.

model and clip are both optional, which is more useful than it sounds. Leave clip unwired and you've got a model-only apply (fine when the LoRA has no text-encoder weights, or when you deliberately don't want it touching the encoder). Leave model unwired for a clip-only pass. Both are wired most of the time.

Outputs are model and clip, straight into the sampler and the text-encoder side of your conditioning.

Install

Manager โ†’ ComfyUI LC123 Nodes, or:

cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes.git

Restart ComfyUI and you're done - no requirements.txt, no extra downloads. This node is pure plumbing over ComfyUI's own LoRA code. If it doesn't show up under LC123/loaders, the folder is nested one level too deep. And hard-refresh the browser after pack updates; the pack ships a lot of JS and browsers cache it hard.

Common issues

Nothing happens when I toggle bypass - but nothing happened before either. Check lora_stack is actually connected. Empty stack means pass-through regardless of the switch, so a broken wire looks exactly like a working bypass.

The bypass wired in doesn't flip state. It wants a BOOLEAN input. If you're feeding it from a node that outputs something else, coerce first - the pack's own LC Boolean / LC Invert Boolean exist for that, and they carry a hidden boolean widget so bypass-style nodes can read the state without you having to queue first.

Model looks different from the stack's intent. Order matters - LoRAs apply sequentially, and two LoRAs touching the same concept will fight. Reorder in the stack node; this node just does what it's told. And if a row applies but changes nothing, that's the architecture mismatch: a LoRA bound to another base loads cleanly and does nothing. Lock a seed and toggle the bypass switch to see what the recipe is actually contributing - that's the cleanest diagnostic there is, and it's free here.

CategoryLC123/loaders

Inputs (4)

NameTypeDefaultDescription
bypassBOOLEANfalseOn: skip every LoRA in the stack and pass model/clip through unchanged.
modeloptMODELOptional: leave unconnected for a clip-only stack.
clipoptCLIPOptional: leave unconnected for a model-only stack.
lora_stackoptLORA_STACKFrom LC LoRA Loader Stack, or any other pack's LoRA stack output.

Outputs (2)

NameTypeDescription
modelMODELโ€”
clipCLIPโ€”