Eric Krea2 Multi-LoRA Stack
The ten-slot LoRA stack where every slot knows which stage it's on
- pipeline
- pipeline
- settings
- trigger_words
- prompt
This is the pack's answer to "I need three LoRAs and they don't all matter at the same time." Eric Krea2 Multi-LoRA Stack is a single growable node holding up to ten LoRA slots, and each slot carries its own three weights - one for Stage 1, Stage 2, Stage 3 of a multi-stage run. Apply LoRA is the one-LoRA version of the same idea; this is the version for when a style LoRA should own composition, a face LoRA should carry the refine pass, and a detail LoRA should only touch the final stage.
The mechanics are simple: pick a file per slot from models/loras/Krea2/, and the node fuses the enabled adapters onto the pipeline in slot order. Unused rows auto-hide until you need them, which keeps the panel from being a wall of widgets. Each slot gets:
- on_N - enable/disable without clearing the slot (distinct from
none, which is an empty slot). - lora_N - the file dropdown.
- strength_Ns1 / s2 / s3 - the per-stage weights. Set all three equal for a uniform strength; spread them for stage-scoped control.
Ten slots is a lot. If you're stacking more than four or five, the honest question is whether your LoRAs are doing real work or fighting each other - but the per-stage spread is precisely what makes layered stacks behave, since each adapter can own the stage it's actually good for instead of applying flat everywhere.
Shared controls worth knowing:
- ephemeral (default ON) - load fresh, unload after the run. Off leaves everything resident and forces manual unloading; the tooltip's "if ANY LoRA in the stack is ephemeral, the whole stack is cleared after the run" is the reminder that this is all-or-nothing.
- stack_enabled - master switch for the whole node; pass the pipeline through untouched without clearing your slots.
- lora_preset - ★ Save preset dropdown, storing slots, strengths, and toggles. The shipped samples (
Split_Distil,turbo-distill-128-split) hint at the split LoRA tricks people run on Turbo - the community's Raw + Turbo LoRA at 0.6 path is a one-preset recipe. - fetch_triggers / add_triggers / force_refetch - trigger words for every enabled slot, combined and de-duplicated in slot order into the
trigger_wordsoutput, optionally merged into the prompt passthrough. Only the first lookup per file touches the network (cached indata/lora_triggers.json). - prompt - passthrough so merged triggers reach your prompt output.
Outputs mirror Apply LoRA: pipeline, settings, trigger_words, prompt. Wire pipeline into Generate or Multi-Stage Ultra; fold settings into Merge Settings for the reproducibility chain.
Where people get burned: per-stage weights are easy to forget once you have ten slots of them - a slot left at 1.0 across all three stages will apply its full strength at every resolution, and a heavy style LoRA at Stage 3 is a common source of that "looks great at S1, ruined at 4k" complaint. And with ephemeral off, orphaned weights silently follow you between workflows - the Unload node exists for exactly that.
How to install
Part of EricRollei/Krea2_ComfyUI_Advanced - ComfyUI Manager → search "Krea2_ComfyUI_Advanced", or:
cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/Krea2_ComfyUI_Advanced
Restart. Pack-wide requirements: git-installed diffusers with Krea2Pipeline, transformers>=4.57.0, Krea 2 weights, LoRAs in models/loras/Krea2/.
Common issues
- Slots disappearing - unused rows auto-hide; pick a file to activate a slot, and a new empty one appears below.
- Weights bleeding between runs -
ephemeraloff. Flip it on or unload manually. - Trigger words never appear -
fetch_triggersmust be on, and the node only queries Civitai for files without safetensors metadata;force_refetchis there for stale lookups. - Stacked LoRAs muddy each other - spread them per-stage instead of stacking all at 1.0 everywhere.
Inputs (58)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeline | KREA2_PIPELINE | — | |
| lora_presetopt | COMBO | custom | Load a saved LoRA-stack recipe (slots / strengths / toggles) into the panel for this run. 'custom' = use the panel as-is. Use the ★ Save Preset button to add one; the list refreshes on graph reload. |
| ephemeralopt | BOOLEAN | true | ON (recommended): load these LoRAs fresh each run and unload them after generation (no stale/orphaned weights). OFF: leave them resident (faster reuse, but Unload manually to free VRAM / before switching workflows). Applies to every slot in this node. |
| on_1opt | BOOLEAN | true | Enable/disable LoRA slot 1 without clearing it. OFF keeps the file and strength but skips loading it (distinct from 'none' = empty slot). |
| lora_1opt | COMBO | none | LoRA slot 1 (from ComfyUI/models/loras/Krea2/). Pick a file to activate it - a new empty slot appears below. 'none' = unused/off. |
| strength_1s1opt | FLOAT | 1.00-10–50000 | Slot 1 weight during Stage-1 (composition). Set all three equal for a uniform strength. |
| strength_1s2opt | FLOAT | 1.00-10–50000 | Slot 1 weight during Stage-2 (refine). |
| strength_1s3opt | FLOAT | 1.00-10–50000 | Slot 1 weight during Stage-3 (final detail). |
| on_2opt | BOOLEAN | true | Enable/disable LoRA slot 2 without clearing it. OFF keeps the file and strength but skips loading it (distinct from 'none' = empty slot). |
| lora_2opt | COMBO | none | LoRA slot 2. 'none' = unused/off. |
| strength_2s1opt | FLOAT | 1.00-10–50000 | Slot 2 weight during Stage-1 (composition). Set all three equal for a uniform strength. |
| strength_2s2opt | FLOAT | 1.00-10–50000 | Slot 2 weight during Stage-2 (refine). |
| strength_2s3opt | FLOAT | 1.00-10–50000 | Slot 2 weight during Stage-3 (final detail). |
| on_3opt | BOOLEAN | true | Enable/disable LoRA slot 3 without clearing it. OFF keeps the file and strength but skips loading it (distinct from 'none' = empty slot). |
| lora_3opt | COMBO | none | LoRA slot 3. 'none' = unused/off. |
| strength_3s1opt | FLOAT | 1.00-10–50000 | Slot 3 weight during Stage-1 (composition). Set all three equal for a uniform strength. |
| strength_3s2opt | FLOAT | 1.00-10–50000 | Slot 3 weight during Stage-2 (refine). |
| strength_3s3opt | FLOAT | 1.00-10–50000 | Slot 3 weight during Stage-3 (final detail). |
| on_4opt | BOOLEAN | true | Enable/disable LoRA slot 4 without clearing it. OFF keeps the file and strength but skips loading it (distinct from 'none' = empty slot). |
| lora_4opt | COMBO | none | LoRA slot 4. 'none' = unused/off. |
| strength_4s1opt | FLOAT | 1.00-10–50000 | Slot 4 weight during Stage-1 (composition). Set all three equal for a uniform strength. |
| strength_4s2opt | FLOAT | 1.00-10–50000 | Slot 4 weight during Stage-2 (refine). |
| strength_4s3opt | FLOAT | 1.00-10–50000 | Slot 4 weight during Stage-3 (final detail). |
| on_5opt | BOOLEAN | true | Enable/disable LoRA slot 5 without clearing it. OFF keeps the file and strength but skips loading it (distinct from 'none' = empty slot). |
| lora_5opt | COMBO | none | LoRA slot 5. 'none' = unused/off. |
| strength_5s1opt | FLOAT | 1.00-10–50000 | Slot 5 weight during Stage-1 (composition). Set all three equal for a uniform strength. |
| strength_5s2opt | FLOAT | 1.00-10–50000 | Slot 5 weight during Stage-2 (refine). |
| strength_5s3opt | FLOAT | 1.00-10–50000 | Slot 5 weight during Stage-3 (final detail). |
| on_6opt | BOOLEAN | true | Enable/disable LoRA slot 6 without clearing it. OFF keeps the file and strength but skips loading it (distinct from 'none' = empty slot). |
| lora_6opt | COMBO | none | LoRA slot 6. 'none' = unused/off. |
| strength_6s1opt | FLOAT | 1.00-10–50000 | Slot 6 weight during Stage-1 (composition). Set all three equal for a uniform strength. |
| strength_6s2opt | FLOAT | 1.00-10–50000 | Slot 6 weight during Stage-2 (refine). |
| strength_6s3opt | FLOAT | 1.00-10–50000 | Slot 6 weight during Stage-3 (final detail). |
| on_7opt | BOOLEAN | true | Enable/disable LoRA slot 7 without clearing it. OFF keeps the file and strength but skips loading it (distinct from 'none' = empty slot). |
| lora_7opt | COMBO | none | LoRA slot 7. 'none' = unused/off. |
| strength_7s1opt | FLOAT | 1.00-10–50000 | Slot 7 weight during Stage-1 (composition). Set all three equal for a uniform strength. |
| strength_7s2opt | FLOAT | 1.00-10–50000 | Slot 7 weight during Stage-2 (refine). |
| strength_7s3opt | FLOAT | 1.00-10–50000 | Slot 7 weight during Stage-3 (final detail). |
| on_8opt | BOOLEAN | true | Enable/disable LoRA slot 8 without clearing it. OFF keeps the file and strength but skips loading it (distinct from 'none' = empty slot). |
| lora_8opt | COMBO | none | LoRA slot 8. 'none' = unused/off. |
| strength_8s1opt | FLOAT | 1.00-10–50000 | Slot 8 weight during Stage-1 (composition). Set all three equal for a uniform strength. |
| strength_8s2opt | FLOAT | 1.00-10–50000 | Slot 8 weight during Stage-2 (refine). |
| strength_8s3opt | FLOAT | 1.00-10–50000 | Slot 8 weight during Stage-3 (final detail). |
| on_9opt | BOOLEAN | true | Enable/disable LoRA slot 9 without clearing it. OFF keeps the file and strength but skips loading it (distinct from 'none' = empty slot). |
| lora_9opt | COMBO | none | LoRA slot 9. 'none' = unused/off. |
| strength_9s1opt | FLOAT | 1.00-10–50000 | Slot 9 weight during Stage-1 (composition). Set all three equal for a uniform strength. |
| strength_9s2opt | FLOAT | 1.00-10–50000 | Slot 9 weight during Stage-2 (refine). |
| strength_9s3opt | FLOAT | 1.00-10–50000 | Slot 9 weight during Stage-3 (final detail). |
| on_10opt | BOOLEAN | true | Enable/disable LoRA slot 10 without clearing it. OFF keeps the file and strength but skips loading it (distinct from 'none' = empty slot). |
| lora_10opt | COMBO | none | LoRA slot 10. 'none' = unused/off. |
| strength_10s1opt | FLOAT | 1.00-10–50000 | Slot 10 weight during Stage-1 (composition). Set all three equal for a uniform strength. |
| strength_10s2opt | FLOAT | 1.00-10–50000 | Slot 10 weight during Stage-2 (refine). |
| strength_10s3opt | FLOAT | 1.00-10–50000 | Slot 10 weight during Stage-3 (final detail). |
| stack_enabledopt | BOOLEAN | true | Master switch for the WHOLE stack. OFF = pass the pipeline through untouched (no slot is queued, no triggers emitted) without clearing any slot settings. |
| fetch_triggersopt | BOOLEAN | true | Look up trigger words for every ENABLED slot (safetensors metadata / Civitai, cached locally in Eric_Krea2/data/lora_triggers.json - only the first lookup per file touches the network). Fills the trigger_words output (combined, de-duplicated, slot order). |
| add_triggersopt | COMBO | off | Merge the combined trigger words of all enabled slots into the prompt passthrough output. off = prompt passes through unchanged. Triggers already present in the prompt are not duplicated. |
| force_refetchopt | BOOLEAN | false | Bypass the local trigger cache and re-query Civitai for the enabled slots this run. Leave OFF normally. |
| promptopt | STRING | Optional prompt passthrough. Connect your prompt here and take the 'prompt' output onward; with add_triggers on, the enabled slots' trigger words are merged in. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| pipeline | KREA2_PIPELINE | — |
| settings | STRING | — |
| trigger_words | STRING | — |
| prompt | STRING | — |