Nodes/multi-lora-stack/Multi LoRA Stack (Model Only)
ComfyUI Node

Multi LoRA Stack (Model Only)

Multi LoRA Stack (Model Only) skips the CLIP overhead

By ShmuelRonen·Created about a year ago·Updated about a year ago· 13
Multi LoRA Stack (Model Only)
  • model
  • MODEL
lora_stack[]

If your LoRAs live in the Flux world, the full version of this pack is doing work you don't need. Multi LoRA Stack (Model Only) is the same dynamic multi-LoRA node, stripped down to what Flux actually patches: it takes a MODEL in, applies your stack, and gives you a MODEL back. No CLIP input, no CLIP output, one wire in and one wire out.

Why "Model Only"?

Almost every Flux LoRA - the ones from CivitAI, the ones trained with ai-toolkit - contains weights for the transformer, not the text encoder. ComfyUI's standard LoraLoader patches both model and CLIP, so with a typical Flux LoRA half of that work is wasted (the CLIP patch is a no-op). This node calls LoraLoaderModelOnly.load_lora_model_only() instead, which patches only the model. You lose nothing in results and you skip the pointless text-encoder step - which is why the model-only path is what ComfyUI's own Flux LoRA workflows use, and why the author's README points this version squarely at "Flux LoRAs, performance-focused workflows."

There's a real tradeoff to know: if you ever stack a LoRA that does carry CLIP weights (rarer, mostly older SD1.5/SDXL-style LoRAs), this node ignores that side of it. The full version handles those. When in doubt, check whether the LoRA is Flux - if yes, reach for this one.

How it works

Identical frontend to its sibling. A JavaScript extension adds "Add LoRA" and "Toggle All" buttons, and per slot an enable toggle, a dropdown of your LoRAs, a strength number (-2.0 to 2.0), and a remove button. Every change serializes into the node's lora_stack STRING input as JSON:

[{"on": true, "lora": "flux_style.safetensors", "strength": 1.0}]

At queue time the backend parses that list and applies each enabled slot in order, threading the patched model straight into the next. Order matters, same as a chain of loaders: later LoRAs stack on top of earlier ones. Off slots, "None" entries, and zero-strength entries get skipped.

The inputs and output

  • model (MODEL) - required. Your base model, from a Checkpoint, UNET, or Diffusion Model loader.
  • lora_stack (STRING) - the JSON config, maintained for you by the UI; it saves with your workflow.

Output: a single MODEL, carrying the whole stack. Because this node doesn't touch CLIP, keep your text encoder coming from elsewhere (usually straight from the checkpoint loader) if you're doing conditioned generation.

Install

It's the same pack as the full node, so one install gets you both. Via ComfyUI Manager, search "multi-lora-stack", or:

cd ComfyUI/custom_nodes/
git clone https://github.com/ShmuelRonen/multi-lora-stack.git

Restart, and you'll find Multi LoRA Stack (Model Only) under loaders. No requirements.txt, no model downloads - the pack is a single Python file that wraps ComfyUI's own loaders.

Common issues

  • Console spam. Every run dumps debug output to the terminal (the author left the print()s in). Ignore it, but keep the console open - it's also where you'll see the traceback when a LoRA fails to load.
  • Silent passthrough on bad config. If the JSON in lora_stack is malformed, the node returns the model unpatched with no error. Stack suddenly doing nothing? Check the console for what it parsed.
  • The dropdown. It's fed from the server's object info, so your .safetensors files belong in models/loras/, and ComfyUI needs a restart after you add new ones.
  • Stacking physics. LoRA effects don't add cleanly; a couple of strong ones usually beat a pile of weak ones, and weights around 0.5–0.8 are the community's common landing zone. The node applies them faithfully - the model is what decides how much it can take.
Categoryloaders

Inputs (2)

NameTypeDefaultDescription
modelMODEL
lora_stackSTRING[]

Outputs (1)

NameTypeDescription
MODELMODEL