LoRA Stack Manager (Arctenox's Essentials)
LoRA Stack Manager (Arctenox's Essentials)
- model
- clip
- model
- clip
- active_loras
If you run more than two LoRAs, you know the problem: a chain of Load LoRA nodes eating a third of your canvas, each one needing a strength tweak buried somewhere in the middle. This node replaces that chain with ten slots in one box. Each slot has a LoRA dropdown, an enable toggle, and separate model_strength and clip_strength sliders. Pick your LoRAs, leave the sliders at 1, done.
Fair warning up front: this is a lighter-weight take on a very well-established idea. The source docstring credits rgthree's Power Lora Loader as the inspiration, and that's the community standard for exactly this job - it's named in hundreds of threads and does more (trigger-word lookup, Civitai info, per-entry toggles in a compact list). Arctenox's version is simpler and the author still flags it as Work in Progress. If you already run rgthree, this node mostly buys you one thing: the active_loras metadata string. If you don't, it's a perfectly decent way to stack LoRAs without adopting a whole pack.
How it works
Each slot applies in order through ComfyUI's own load_lora_for_models path - the same mechanism chained Load LoRA nodes use - so stacking here composes exactly like stacking them manually. Order matters: slot 1 hits the model first, then slot 2 patches that result, and so on down the line.
Slots are forgiving by design. A slot set to None, one that's toggled off, or one where both strengths are 0.0 gets skipped silently. Missing files get skipped too, with only a console warning - which is great for keeping a workflow alive and terrible for debugging why something "did nothing," so keep it in mind.
The inputs that matter
model and clip in, then for each of the 10 slots:
lora_N- the dropdown (choose the actual LoRA file, orNone).lora_N_enabled- mute a slot without deleting it. This is the toggle you'll actually live in when A/B testing.lora_N_model_str- UNet strength (tooltip says so; this is where you'll spend most of your tuning).lora_N_clip_str- text-encoder strength. If a LoRA's character or style tags aren't landing, this is the one to nudge.
All three strengths range −10 to 10 with a default of 1.0.
The outputs
modelandclip- the patched pair, wired straight into your KSampler.active_loras- a STRING of<lora:name:strength>entries. Wire it into Save Image With Metadata'slorasinput and your Civitai resource detection gets the LoRA list for free. That's the feature that makes this node worth it even if you already stack LoRAs another way.
Install
ComfyUI Manager, search Arctenox's Essentials, install, restart. Or clone it:
cd ComfyUI/custom_nodes/
git clone https://github.com/Arctenox/Arctenoxs-Essentials_ComfyUI
Restart after. Dependencies are just torch, numpy and optional psutil - no model files to fetch, no special setup.
Gotchas
- A slot that "isn't loading" is almost always a file problem: confirm the .safetensors actually exists in your
ComfyUI/models/lorasfolder. Missing files are skipped with only a console message. - Because the whole pack is marked DEPRECATED (Arctenox is remastering it into a new combined pack), treat this as a utility you use now rather than infrastructure you build a career workflow on. It's functional, but "not yet complete" in the author's own words.
- If your stack order changes results, that's not a bug - LoRA stacking is order-sensitive by design. Flip the order and see.
Inputs (42)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| lora_1 | COMBO | None | 1 options: None |
| lora_1_enabled | BOOLEAN | true | — |
| lora_1_model_str | FLOAT | 1.00-10–10 | Slot 1 - model (UNet) strength |
| lora_1_clip_str | FLOAT | 1.00-10–10 | Slot 1 - CLIP (text encoder) strength |
| lora_2 | COMBO | None | 1 options: None |
| lora_2_enabled | BOOLEAN | true | — |
| lora_2_model_str | FLOAT | 1.00-10–10 | Slot 2 - model (UNet) strength |
| lora_2_clip_str | FLOAT | 1.00-10–10 | Slot 2 - CLIP (text encoder) strength |
| lora_3 | COMBO | None | 1 options: None |
| lora_3_enabled | BOOLEAN | true | — |
| lora_3_model_str | FLOAT | 1.00-10–10 | Slot 3 - model (UNet) strength |
| lora_3_clip_str | FLOAT | 1.00-10–10 | Slot 3 - CLIP (text encoder) strength |
| lora_4 | COMBO | None | 1 options: None |
| lora_4_enabled | BOOLEAN | true | — |
| lora_4_model_str | FLOAT | 1.00-10–10 | Slot 4 - model (UNet) strength |
| lora_4_clip_str | FLOAT | 1.00-10–10 | Slot 4 - CLIP (text encoder) strength |
| lora_5 | COMBO | None | 1 options: None |
| lora_5_enabled | BOOLEAN | true | — |
| lora_5_model_str | FLOAT | 1.00-10–10 | Slot 5 - model (UNet) strength |
| lora_5_clip_str | FLOAT | 1.00-10–10 | Slot 5 - CLIP (text encoder) strength |
| lora_6 | COMBO | None | 1 options: None |
| lora_6_enabled | BOOLEAN | true | — |
| lora_6_model_str | FLOAT | 1.00-10–10 | Slot 6 - model (UNet) strength |
| lora_6_clip_str | FLOAT | 1.00-10–10 | Slot 6 - CLIP (text encoder) strength |
| lora_7 | COMBO | None | 1 options: None |
| lora_7_enabled | BOOLEAN | true | — |
| lora_7_model_str | FLOAT | 1.00-10–10 | Slot 7 - model (UNet) strength |
| lora_7_clip_str | FLOAT | 1.00-10–10 | Slot 7 - CLIP (text encoder) strength |
| lora_8 | COMBO | None | 1 options: None |
| lora_8_enabled | BOOLEAN | true | — |
| lora_8_model_str | FLOAT | 1.00-10–10 | Slot 8 - model (UNet) strength |
| lora_8_clip_str | FLOAT | 1.00-10–10 | Slot 8 - CLIP (text encoder) strength |
| lora_9 | COMBO | None | 1 options: None |
| lora_9_enabled | BOOLEAN | true | — |
| lora_9_model_str | FLOAT | 1.00-10–10 | Slot 9 - model (UNet) strength |
| lora_9_clip_str | FLOAT | 1.00-10–10 | Slot 9 - CLIP (text encoder) strength |
| lora_10 | COMBO | None | 1 options: None |
| lora_10_enabled | BOOLEAN | true | — |
| lora_10_model_str | FLOAT | 1.00-10–10 | Slot 10 - model (UNet) strength |
| lora_10_clip_str | FLOAT | 1.00-10–10 | Slot 10 - CLIP (text encoder) strength |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| active_loras | STRING | — |