Apply LoRA
The node that applies a LoRA that isn't on disk
- LoRA
- model
- clip
- model
- clip
ComfyUI's normal LoraLoader can only load a .safetensors file that exists on disk. But the whole point of the DARE-LoRA-Merge pack is a LoRA that never touches disk: DARE Merge LoRA Stack hands you a live tensor dict inside the graph. Apply LoRA is the bridge that actually puts it to work.
Mechanically it's about as thin as a node gets - it's one call to comfy.sd.load_lora_for_models, the exact same function the core LoraLoader runs under the hood. The only difference is where the LoRA weights come from: a file path for LoraLoader, a LoRA-typed value on the wire here. That means its behavior is identical to loading a regular LoRA - same patching of model and clip, same weight semantics - it just accepts weights that were computed in memory instead of read from models/loras.
Where it sits in the workflow: DARE Merge LoRA Stack turns a LORA_STACK (the output of a LoRA Stacker node) into one merged LoRA. That feeds Apply LoRA's LoRA input, alongside your model and clip from the checkpoint loader. Apply LoRA then hands back a patched model and clip that go straight into your sampler, positive/negative conditioning and all. The pack's demo workflow (assets/dare_lora.json) shows exactly this chain.
The inputs you actually touch:
LoRA- the merged weights, almost always fromDARE Merge LoRA Stack.model/clip- from your checkpoint.lora_model_wt- how hard the merged LoRA pulls on the model, default 1.0.lora_clip_wt- same for the clip, default 1.0.
That last pair is the standard strength dial you already know from LoraLoader. On SDXL the old advice holds: if the merged result is washing out, back the model weight into the 0.5–0.8 range rather than expecting a single value to work everywhere. One quirk: the sliders floor at 0.01, so you can't fully silence one side through the widget - wire in a constant if you genuinely want it off.
Outputs are model and clip, and they're just the normal MODEL and CLIP types, so this node drops into any sampling setup without adapters.
If you're not merging LoRAs, you don't need this node - core LoraLoader already does the same patching for files on disk. Reach for Apply LoRA when your LoRA is a computed value, which in practice means it's the downstream of this pack's merge node.
Install
Install the pack once and you get all three nodes (Apply LoRA, Save LoRA, DARE Merge LoRA Stack):
- ComfyUI Manager: search "ComfyUI - Apply LoRA Stacker with DARE" (the repo is
ntc-ai/ComfyUI-DARE-LoRA-Merge) and hit install. - Manually:
Then restart ComfyUI. There's nocd ComfyUI/custom_nodes git clone https://github.com/ntc-ai/ComfyUI-DARE-LoRA-Mergerequirements.txtand no extra pip dependencies - it uses torch, safetensors and PIL, all already bundled with ComfyUI. No model downloads needed for the nodes themselves; the LoRAs you feed it come from your ownmodels/loras.
Troubleshooting
The most common dead-end is wiring a stacker that doesn't output LORA_STACK, or trying to feed Apply LoRA a LORA_STACK directly - this node wants a LoRA, not a stack. Run the stack through DARE Merge LoRA Stack first. If nothing visually changes, double-check the LoRA input is actually connected: an unconnected slot silently passes the model through unpatched. And remember the author labels this an experiment, so treat odd behavior as a feature of the territory rather than something you broke.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| LoRA | LoRA | — | |
| model | MODEL | — | |
| clip | CLIP | — | |
| lora_model_wt | FLOAT | 1.000.01–10 | — |
| lora_clip_wt | FLOAT | 1.000.01–10 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |