FLUX LoRA Stack
Ten FLUX LoRAs in one node — and it fixes the format most loaders botch
- model
- MODEL
If you run FLUX.2 Klein with any kind of LoRA stack, this is the node to try before you reach for anything else. The FLUX LoRA Stack from capitan01R/Comfyui-flux2klein-Lora-loader loads up to ten LoRAs in sequence, each with its own strength, on/off toggle, and - the part that matters - its own auto-convert flag for diffusers-format files.
Why does the convert flag matter so much? Most Klein LoRAs ship in diffusers format, with separate to_q, to_k, to_v projections per attention layer. FLUX's native architecture stores those as a single fused QKV matrix, and the single blocks fuse attention plus the MLP gate into one linear1 projection. Load a diffusers LoRA without converting and a chunk of the attention weights never reaches the model. The author's table puts it bluntly: without conversion, "most attention weights never reach the model." This pack fuses them at load time, which is the whole reason it exists. That's not a feature a stock loader gives you.
Why you'd reach for it
Klein is unusually tolerant of LoRA stacking - community testing found Klein 9B handling three LoRAs at strength 1.0 each (a total of 3.0) where Z-Image burned out at two. The classic "realism sandwich" of a snapshot-realism LoRA plus a skin LoRA plus an NSFW/anatomy LoRA is a genuinely common Klein workflow. The FLUX LoRA Stack is the clean way to run that: one node between your model loader and your sampler, no daisy-chaining ten LoraLoader nodes. The main rival is rgthree's Power Lora Loader, which is excellent for general stacking but doesn't do the diffusers→native fusion or the per-layer calibration this pack adds.
Inputs and outputs
It's simple: model in, patched MODEL out. Wire it into your sampler's model input. Everything else is optional slots 1 through 10, and each slot has the same three controls:
lora_N- dropdown of everything inComfyUI/models/loras. Pick the file here.strength_N- per-slot strength, default 1.0, range -20 to 20. You'll live between about 0.5 and 1.2; the wide range is for mixing/negating experiments.enabled_Nandconvert_N- toggles.convert_Ndefaults on, which is what you want for diffusers-format Klein LoRAs; flip it off for a file that's already native FLUX format.
Slots are applied in order, and a slot is skipped entirely if it's disabled, set to "None", or has strength 0. You can leave a handful of empty slots in place and just fill the ones you use.
Install
Easiest is ComfyUI Manager - search Comfyui-flux2klein-Lora-loader. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/capitan01R/Comfyui-flux2klein-Lora-loader.git
Then restart ComfyUI. There are no model downloads and no pip dependencies beyond numpy, which ComfyUI already ships. Your LoRAs just need to live in models/loras so the dropdown sees them. The pack is MIT-licensed and on the Comfy registry.
Where people get burned
Most of the pain is the format, and it's the kind you can't see from the output - you'll just wonder why a LoRA looks weak. If a LoRA was trained with to_q/to_k/to_v naming and you load it without conversion, the weights silently don't land. Keep convert_N on unless you know the file is native FLUX. Also remember the 4B/9B rule: Klein LoRAs are not interchangeable across sizes, so a 4B file in a 9B workflow is a waste of time no matter how good the loader is. And per the author's README, this is built around the Klein 9B layout (8 double blocks + 24 single blocks) - treat anything else as untested territory.
Inputs (41)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| lora_1opt | COMBO | 1 options: None | |
| strength_1opt | FLOAT | 1.00-20–20 | — |
| enabled_1opt | BOOLEAN | true | — |
| convert_1opt | BOOLEAN | true | — |
| lora_2opt | COMBO | 1 options: None | |
| strength_2opt | FLOAT | 1.00-20–20 | — |
| enabled_2opt | BOOLEAN | true | — |
| convert_2opt | BOOLEAN | true | — |
| lora_3opt | COMBO | 1 options: None | |
| strength_3opt | FLOAT | 1.00-20–20 | — |
| enabled_3opt | BOOLEAN | true | — |
| convert_3opt | BOOLEAN | true | — |
| lora_4opt | COMBO | 1 options: None | |
| strength_4opt | FLOAT | 1.00-20–20 | — |
| enabled_4opt | BOOLEAN | true | — |
| convert_4opt | BOOLEAN | true | — |
| lora_5opt | COMBO | 1 options: None | |
| strength_5opt | FLOAT | 1.00-20–20 | — |
| enabled_5opt | BOOLEAN | true | — |
| convert_5opt | BOOLEAN | true | — |
| lora_6opt | COMBO | 1 options: None | |
| strength_6opt | FLOAT | 1.00-20–20 | — |
| enabled_6opt | BOOLEAN | true | — |
| convert_6opt | BOOLEAN | true | — |
| lora_7opt | COMBO | 1 options: None | |
| strength_7opt | FLOAT | 1.00-20–20 | — |
| enabled_7opt | BOOLEAN | true | — |
| convert_7opt | BOOLEAN | true | — |
| lora_8opt | COMBO | 1 options: None | |
| strength_8opt | FLOAT | 1.00-20–20 | — |
| enabled_8opt | BOOLEAN | true | — |
| convert_8opt | BOOLEAN | true | — |
| lora_9opt | COMBO | 1 options: None | |
| strength_9opt | FLOAT | 1.00-20–20 | — |
| enabled_9opt | BOOLEAN | true | — |
| convert_9opt | BOOLEAN | true | — |
| lora_10opt | COMBO | 1 options: None | |
| strength_10opt | FLOAT | 1.00-20–20 | — |
| enabled_10opt | BOOLEAN | true | — |
| convert_10opt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |