LoRA Stack ποΈ
Stacking Without the Spaghetti
- model
- clip
- model
- clip
- stack_summary
Stacking LoRAs is how you get a character, a style, and a quality boost all at once - and it's also how a workflow turns into a snake of five chained Load LoRA nodes, each with its own weight that you have to find and fiddle with. LoRA Stack collapses that into one node: up to five LoRAs, each with its own model weight and clip weight, all applied to your MODEL/CLIP pair in a single step. It's the tidy version of the most common ComfyUI ritual, and it's the node you'll reach for the moment you're running more than one adapter at a time.
How it works
Five slots, each holding a LoRA plus two weights:
- lora_1 through lora_5 - dropdowns populated from ComfyUI's
lorasregistry, plus a "None" option so an unused slot is skipped cleanly. - model_weight_N - how hard the LoRA presses on the diffusion model itself.
- clip_weight_N - how hard it presses on the text encoder.
That model/clip split is the genuinely useful part. Some LoRAs are mostly text-encoder work (style tokens, trigger phrases) and some are mostly model work (visual character). Being able to dial them separately - run a LoRA at model 0.8 but clip 1.2 - is a level of control that a single combined weight can't give you, and it's how people tame LoRAs that are over-tuned in one half of the pipeline.
Set the weights per slot, wire in your model and clip, and out the other side comes the patched pair plus a stack_summary text that tells you what actually got applied and at what strengths.
Where it fits
Any workflow that runs multiple adapters: character + style + detail LoRA is the classic triple. It also makes weight experimentation faster, because all the sliders live in one node instead of being spread across five. The honest note on stacking itself: more LoRAs stacked means more ways for them to fight each other, and the pack's docs and the wider community both treat weight tuning as the skill here - the old 0.5β0.8 advice is SDXL-era, and current recipes run all over the map. This node doesn't solve stacking philosophy; it just makes the mechanics of it legible.
Install
No extra dependencies:
cd ComfyUI/custom_nodes
git clone https://github.com/TensorVizion/OmniNodes
Restart, find it under TensorVizion/Model Utilities (ComfyUI Manager, search "OmniNodes", also works).
Troubleshooting
- "LoRA not found" - the pack's standard placement gotcha: files come from ComfyUI's
lorasregistry, so they must be inComfyUI/models/loras/. - A slot you set to "None" still shows in the summary - no; "None" slots are skipped. If a LoRA seems missing from the effect, check you didn't leave its weights at a canceling value (model +1 and clip β1 is a real way to zero a LoRA out).
- Effects are weaker than when you stacked them by hand. Weight stacking isn't additive the way it looks - each adapter interacts with the accumulated state. Nudge weights rather than assuming 1+1 = 2.
For anyone past their first LoRA, this is the quality-of-life node that makes the rest of the workflow readable again. It doesn't add capability - it removes friction, and with five slots of separate model/clip weights, it removes a lot of it.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| clip | CLIP | β | |
| lora_1 | COMBO | 1 options: None | |
| model_weight_1 | FLOAT | 1.00-10β10 | β |
| clip_weight_1 | FLOAT | 1.00-10β10 | β |
| lora_2 | COMBO | 1 options: None | |
| model_weight_2 | FLOAT | 1.00-10β10 | β |
| clip_weight_2 | FLOAT | 1.00-10β10 | β |
| lora_3 | COMBO | 1 options: None | |
| model_weight_3 | FLOAT | 1.00-10β10 | β |
| clip_weight_3 | FLOAT | 1.00-10β10 | β |
| lora_4 | COMBO | 1 options: None | |
| model_weight_4 | FLOAT | 1.00-10β10 | β |
| clip_weight_4 | FLOAT | 1.00-10β10 | β |
| lora_5 | COMBO | 1 options: None | |
| model_weight_5 | FLOAT | 1.00-10β10 | β |
| clip_weight_5 | FLOAT | 1.00-10β10 | β |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model | MODEL | β |
| clip | CLIP | β |
| stack_summary | STRING | β |