FLUX Klein 9B Analyzer + Selective Loader V2
Block-level control for Klein LoRAs
- model
- positive
- negative
- model
- positive
- negative
- analysis
- analysis_json
What it is
FLUX Klein 9B has been the default local image editor since it shipped in January 2026, and it's earned a real reputation for tolerating LoRA stacking better than its rivals - community reports of three Klein LoRAs run together at full strength without the quality collapse Z-Image shows past two. But Klein has its own well-documented rough edges: anatomy mistakes baked in during the first couple of denoising steps, identity drift on edits, and a warm color shift that shows up even at full precision. This node is the tool for working around those at the LoRA level - instead of one strength slider for a Klein LoRA like SNOFS or a realism stack, you get individual control over all 32 of Klein 9B's transformer blocks (8 "double" blocks handling the joint image/text stream, 24 "single" blocks downstream), plus strength scheduling and a save-to-disk option.
If a Klein LoRA is dragging in more anatomy weirdness or color shift than the base model already has, or a character LoRA is fighting your prompt harder than it should, this is where you go looking for which blocks are responsible.
How it works
The node analyzes your chosen LoRA and scores each of the 32 blocks 0–100% by weight magnitude, then lets you individually disable or reweight any block before patching the result onto your model and conditioning. The V2 nodes in this pack add strength scheduling on top of plain block toggling: instead of a flat multiplier, you can vary the LoRA's influence across the generation with step:strength keyframes - steps as 0–1 fractions of total generation - picked from 40-plus presets or written by hand, which is genuinely useful on a 4-step distilled model like Klein where "early" and "late" cover very few actual steps.
Inputs and outputs that matter
model,positive,negative,lora_name- this node routes conditioning through itself, not just model/clip, so scheduling applies correctly.strength- the base multiplier (-10 to 10) before scheduling adjusts it.preset- block-selection presets for common splits.double_0–double_7andsingle_0–single_23, each paired with a_strslider, plusother_weightsfor anything outside the 32 mapped blocks.schedule_presetandstrength_schedule(optional) - a named schedule or your ownstep:strengthsequence.save_refined_lora,save_path,save_filename(optional) - bake your block selection into a new, smaller LoRA file.- Optional
lora_path_optoverrides the dropdown with a direct path.
Outputs: model, positive, negative (patched/pass-through), analysis (readable report), analysis_json.
Installing it
No external backend needed for this node - it works the moment the pack is installed. ComfyUI Manager (search "Realtime LoRA Trainer") or:
cd ComfyUI/custom_nodes
git clone https://github.com/ShootTheSound/comfyUI-Realtime-Lora
Restart ComfyUI.
Common issues
Anatomy problems persist regardless of block selection. This is a known, largely unfixed Klein weakness baked into the first couple of denoising steps rather than something any single LoRA carries - running more inference steps at a slightly higher CFG (around 1.2–1.5 instead of 1.0) helps more than block selection will here. Don't expect this node to fully solve it.
32 blocks feels like overkill for a 9B model. It's a smaller block count than the plain FLUX loader (57) precisely because Klein's architecture is smaller - read the analysis output rather than assuming Klein LoRAs distribute the same way as Flux.1 ones.
4B and 9B LoRAs don't mix. Klein 4B and 9B are not LoRA-compatible with each other - this node is specifically for 9B LoRAs; if your file was trained on Klein Base 4B, it won't load sensibly here regardless of block settings.
Scheduling looks like it does nothing on a 4-step distilled run. With so few total steps, a schedule needs coarse, deliberate keyframes rather than a smooth curve meant for a 20-30 step run - try a simple two-point fade before assuming scheduling isn't working.
Inputs (78)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | Positive conditioning from CLIP encode | |
| negative | CONDITIONING | Negative conditioning from CLIP encode | |
| lora_name | COMBO | LoRA file to load and analyze | |
| strength | FLOAT | 1.00-10–10 | Overall LoRA strength (ignored when using schedule) |
| preset | COMBO | Default | Quick preset selection. Individual toggles below override when changed. |
| double_0 | BOOLEAN | true | — |
| double_0_str | FLOAT | 1.00-5–5 | — |
| double_1 | BOOLEAN | true | — |
| double_1_str | FLOAT | 1.00-5–5 | — |
| double_2 | BOOLEAN | true | — |
| double_2_str | FLOAT | 1.00-5–5 | — |
| double_3 | BOOLEAN | true | — |
| double_3_str | FLOAT | 1.00-5–5 | — |
| double_4 | BOOLEAN | true | — |
| double_4_str | FLOAT | 1.00-5–5 | — |
| double_5 | BOOLEAN | true | — |
| double_5_str | FLOAT | 1.00-5–5 | — |
| double_6 | BOOLEAN | true | — |
| double_6_str | FLOAT | 1.00-5–5 | — |
| double_7 | BOOLEAN | true | — |
| double_7_str | FLOAT | 1.00-5–5 | — |
| single_0 | BOOLEAN | true | — |
| single_0_str | FLOAT | 1.00-5–5 | — |
| single_1 | BOOLEAN | true | — |
| single_1_str | FLOAT | 1.00-5–5 | — |
| single_2 | BOOLEAN | true | — |
| single_2_str | FLOAT | 1.00-5–5 | — |
| single_3 | BOOLEAN | true | — |
| single_3_str | FLOAT | 1.00-5–5 | — |
| single_4 | BOOLEAN | true | — |
| single_4_str | FLOAT | 1.00-5–5 | — |
| single_5 | BOOLEAN | true | — |
| single_5_str | FLOAT | 1.00-5–5 | — |
| single_6 | BOOLEAN | true | — |
| single_6_str | FLOAT | 1.00-5–5 | — |
| single_7 | BOOLEAN | true | — |
| single_7_str | FLOAT | 1.00-5–5 | — |
| single_8 | BOOLEAN | true | — |
| single_8_str | FLOAT | 1.00-5–5 | — |
| single_9 | BOOLEAN | true | — |
| single_9_str | FLOAT | 1.00-5–5 | — |
| single_10 | BOOLEAN | true | — |
| single_10_str | FLOAT | 1.00-5–5 | — |
| single_11 | BOOLEAN | true | — |
| single_11_str | FLOAT | 1.00-5–5 | — |
| single_12 | BOOLEAN | true | — |
| single_12_str | FLOAT | 1.00-5–5 | — |
| single_13 | BOOLEAN | true | — |
| single_13_str | FLOAT | 1.00-5–5 | — |
| single_14 | BOOLEAN | true | — |
| single_14_str | FLOAT | 1.00-5–5 | — |
| single_15 | BOOLEAN | true | — |
| single_15_str | FLOAT | 1.00-5–5 | — |
| single_16 | BOOLEAN | true | — |
| single_16_str | FLOAT | 1.00-5–5 | — |
| single_17 | BOOLEAN | true | — |
| single_17_str | FLOAT | 1.00-5–5 | — |
| single_18 | BOOLEAN | true | — |
| single_18_str | FLOAT | 1.00-5–5 | — |
| single_19 | BOOLEAN | true | — |
| single_19_str | FLOAT | 1.00-5–5 | — |
| single_20 | BOOLEAN | true | — |
| single_20_str | FLOAT | 1.00-5–5 | — |
| single_21 | BOOLEAN | true | — |
| single_21_str | FLOAT | 1.00-5–5 | — |
| single_22 | BOOLEAN | true | — |
| single_22_str | FLOAT | 1.00-5–5 | — |
| single_23 | BOOLEAN | true | — |
| single_23_str | FLOAT | 1.00-5–5 | — |
| other_weights | BOOLEAN | true | — |
| other_weights_str | FLOAT | 1.00-5–5 | — |
| lora_path_optopt | STRING | Optional: Override LoRA selection with a path | |
| schedule_presetopt | COMBO | Custom | Select a preset schedule (populates the text field below for editing) |
| strength_scheduleopt | STRING | Strength schedule: 0:.2,.5:.8,1:1.0 (step:strength pairs). Edit freely after selecting preset. | |
| save_refined_loraopt | BOOLEAN | false | Enable to save the refined LoRA to disk |
| save_pathopt | STRING | Directory to save refined LoRA | |
| save_filenameopt | STRING | Filename for saved LoRA (timestamp auto-appended). Leave empty for auto-name. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| model | MODEL | Model with LoRA applied (filtered by enabled blocks). |
| positive | CONDITIONING | Positive conditioning (with hooks if using schedule). |
| negative | CONDITIONING | Negative conditioning (with hooks if using schedule). |
| analysis | STRING | Per-block analysis showing impact scores. |
| analysis_json | STRING | JSON analysis data for UI coloring. |