Nourivex LoRA Stack XL
Six LoRA slots, a Flux-safe mode, and an audit log of what actually ran
- model
- clip
- MODEL
- CLIP
- applied_loras
Stacking LoRAs in ComfyUI is not hard, it's just many. Three LoRAs means three LoraLoader nodes and six strength inputs, and by the time you're tuning a character it's a wall of widgets. Nourivex LoRA Stack XL collapses the common case into one node with six slots, each carrying its own enable switch, model, and model/clip strengths - and then it does something most stackers don't: it prints a receipt.
How it works
Feed it a MODEL and a CLIP, and it runs the enabled slots in order through ComfyUI's LoraLoader, threading each output into the next. A slot is skipped unless it's enabled, has an actual LoRA selected (not "None"), and has at least one nonzero strength - so leaving slots at their defaults is safe.
Three controls shape the result:
sdxl_profile- a preset that scales every slot's strengths. Balanced SDXL (1.0×), Character Focus (1.1× model, 1.05× clip), Detail Boost (1.15× model, 0.95× clip). It's a "make my stack hit harder on the character" knob rather than a per-LoRA setting.engine_profile- Auto, SDXL, or FLUX. In Auto, the node sniffs your selected LoRA filenames for Flux tokens (theflux_name_hintfield, defaulting toflux,flux2,klein,dev,schnell) and switches engine mode accordingly.- In FLUX mode the behavior changes on purpose: model strengths pass through as-is, but clip strength for Flux-named LoRAs is multiplied by
flux_clip_strength_multiplier, which defaults to 0.0. That's the "why is my Flux LoRA wrecking the image" fix in advance - Flux LoRAs don't want a CLIP strength the way SDXL LoRAs do, and this is the pack's way of stopping you from ruining generations with a default you never touched.
The two outputs you actually wire, and the one you shouldn't ignore
MODEL and CLIP come out and go straight into your sampler or conditioning. The third output, applied_loras, is a string the node builds as it goes - something like mode=SDXL | S1:mychar.safetensors (m=0.88, c=0.84) | S2:detail.safetensors (m=0.50, c=0.50). That's the receipt. It shows the effective strengths after the profile scaling and FLUX multiplier, which is exactly the information you're missing when a LoRA feels stronger than the number you typed. Wire it to a display node once, and "why is this so strong?" becomes a five-second answer.
What to actually set
For a beginner the honest starting point is a short list:
slot1_loraandslot1_strength_model/slot1_strength_clip- your first LoRA.slotN_enabled- flip off everything you're not using; slots 3–6 default to disabled for exactly this reason.engine_profile- leave Auto unless you're on Flux; the auto-detection handles the common case.
Keep to 2–3 LoRAs and a 0.2–0.8 strength range to start - that's the pack's own advice and it matches the long-standing SDXL rule of thumb. A notable quirk: strengths can go negative (down to −4), which is for deliberately weakening or "de-tuning" a LoRA, not something beginners should be hunting for.
Install
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/Nourivex/Nour_Comfy
Restart ComfyUI (or search Nour_Comfy in ComfyUI Manager). No dependencies. One honest caveat: LoRAs are architecture-bound - an SDXL LoRA does nothing on Flux and vice versa - and this node doesn't fix that, it just makes the flux-vs-sdxl strength handling safe. Wrong-architecture LoRAs will still silently do nothing.
Inputs (30)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| sdxl_profile | COMBO | Balanced SDXL | 3 options: Balanced SDXL, Character Focus, Detail Boost |
| slot1_enabled | BOOLEAN | true | — |
| slot1_lora | COMBO | None | 1 options: None |
| slot1_strength_model | FLOAT | 0.80-4–4 | — |
| slot1_strength_clip | FLOAT | 0.80-4–4 | — |
| slot2_enabled | BOOLEAN | true | — |
| slot2_lora | COMBO | None | 1 options: None |
| slot2_strength_model | FLOAT | 0.50-4–4 | — |
| slot2_strength_clip | FLOAT | 0.50-4–4 | — |
| slot3_enabled | BOOLEAN | false | — |
| slot3_lora | COMBO | None | 1 options: None |
| slot3_strength_model | FLOAT | 0.35-4–4 | — |
| slot3_strength_clip | FLOAT | 0.35-4–4 | — |
| slot4_enabled | BOOLEAN | false | — |
| slot4_lora | COMBO | None | 1 options: None |
| slot4_strength_model | FLOAT | 0.25-4–4 | — |
| slot4_strength_clip | FLOAT | 0.25-4–4 | — |
| slot5_enabled | BOOLEAN | false | — |
| slot5_lora | COMBO | None | 1 options: None |
| slot5_strength_model | FLOAT | 0.20-4–4 | — |
| slot5_strength_clip | FLOAT | 0.20-4–4 | — |
| slot6_enabled | BOOLEAN | false | — |
| slot6_lora | COMBO | None | 1 options: None |
| slot6_strength_model | FLOAT | 0.15-4–4 | — |
| slot6_strength_clip | FLOAT | 0.15-4–4 | — |
| engine_profile | COMBO | Auto | 3 options: Auto, SDXL, FLUX |
| flux_clip_strength_multiplier | FLOAT | 0.00-2–2 | — |
| flux_name_hint | STRING | flux,flux2,klein,dev,schnell | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| applied_loras | STRING | — |