ComfyUI Node

LC Krea2 LoRA Editor

The Krea 2 LoRA Editor, Explained

By lonecatone23·Created about a month ago·Updated about 15 hours ago· 5
LC Krea2 LoRA Editor
  • model
  • model
  • edited_lora
◄lora_name▾►
◄strength1.00►
◄presetFull►
◄blocks1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1►
◄attention1.00►
◄mlp1.00►
◄outside_blocks1.00►
◄spike_softenoff►
◄spike_limit2.0►
◄blocks_in—►

What it is

A LoRA loader that lies to you - in a good way. It sits exactly where your usual LoRA loader sits: model in, model out, into the sampler. The difference is that every layer of the LoRA passes through a multiplier you control, and the node hands you the edited LoRA as an object you can save. Load, tune, look, keep, bake.

Why you'd want that. Three real cases, in the order people hit them:

  1. Face lock. A character LoRA drags its identity into every prompt. You want the outfit, not the face.
  2. Collateral change. A LoRA that was supposed to shift style rewrites the whole image - background, lighting, composition.
  3. Krea 2's own defect. The open weights went through an alignment pass the hosted model didn't, and the damage isn't confined to NSFW: it flattens expressions and drops prompt clauses it judges unsafe. The community's fix is an uncensor LoRA, and the standing advice is to tune its values rather than accept its defaults. This is the tuning tool.

How it works

The node loads the LoRA file and maps its keys onto the loaded model's layers using ComfyUI's own LoRA machinery. For each layer it computes one multiplier:

block curve value × attention-or-mlp scale

The 28 blocks are Krea 2's uniform single-stream MMDiT blocks, and inside each one there are 8 module rows the node separates: q, k, v, o, gate, then the MLP's gate, up, down. Attention rows get the attention slider, MLP rows get mlp - and on most Krea 2 LoRAs the MLP rows carry the bulk of the weight, so that slider does more than you'd expect. Anything outside the 28 blocks (text fusion, first, last) gets outside_blocks.

spike_soften is the interesting part, because it fixes something a block curve can't:

  • layers - a layer far stronger than the same layer in the other blocks gets pulled down to spike_limit × the median across blocks. That's a per-layer cap, not a per-block one.
  • directions - inside a single layer, it factorises the low-rank update and checks the top direction against the second strongest. If the top one is more than spike_limit × the second, it clamps. Well-behaved LoRAs sit around 2, which is why 2 is the default. Plain lora_A/lora_B files only.
  • both - both, obviously.

Then it patches a clone of the model and draws a heatmap: 8 layer rows × 28 blocks, before as an outline and after as a fill, on the same scale, with a note telling you how many layers applied, the rank, and what percentage of the original strength survived.

The controls you actually touch

  • preset - Full (untouched), Blocks X-Y down for each of the 0-3 / 4-9 / 10-15 / 16-21 / 22-27 groups (that group goes to 0.3), and Tame (blocks 4-15 at 0.7). Face lock lives in different blocks for different LoRAs - the author's own examples are Better Lip Bite at 16-21 and Krea Amateur V4 at 4-9 - so run each group on the same seed batch and keep whichever one frees the face.
  • blocks - 28 multipliers from 0 to 2, where 1 is unchanged. Drag the bars, sweep across them, double-click or shift-click one to reset it to 1. Touching anything snaps preset to Custom.
  • strength, attention, mlp, outside_blocks, spike_soften, spike_limit - the scaling described above. strength is baked into the saved LoRA.
  • blocks_in (optional) - a 28-block curve from another node. Wire LC Krea2 LoRA Block Scan's blocks output here and it replaces the preset and the bars.

Outputs are model (the patched model - wire it to your sampler) and edited_lora, an LC_LORA object for LC LoRA Save.

Installing it

ComfyUI Manager → search LC ModelBuilder → install → restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC_ModelBuilder_nodes

Verify __init__.py is directly inside the pack folder rather than nested one level deeper, restart, then Ctrl+Shift+R so the new JS chrome (bars, heatmap) actually loads.

No requirements.txt, and this node needs nothing extra - the LoRA editing is pure ComfyUI core plus torch. install.py only exists for the face-scoring half of the pack. You still need a recent ComfyUI with Krea 2 support (0.25.0 or newer) and the Qwen3-VL text encoder plus Qwen-Image VAE sitting alongside the checkpoint.

Where people get burned

All four LoRA nodes are marked beta, and that's not boilerplate. Presets, defaults and settings can shift between versions, and a saved workflow may need its bars set again after you update. Test every edit on a fixed seed, and keep your original LoRA file untouched.

Wired blocks_in silently overrides the UI. If you drag a bar and nothing changes, that input is connected.

"Some layers do not match this model: is it a Krea 2 LoRA?" in the heatmap note means key mapping missed. Either the LoRA isn't for Krea 2, or it's in a format the mapping can't place.

outside_blocks does nothing on some LoRAs. If the file has no layers outside the 28 blocks, neither slider nor the scene behind the bars has anything to act on - the note reports how many there were.

The heatmap is not a preview. It shows relative layer strength, not image quality. The verdict comes from your fixed-seed batch.

CategoryLC ModelBuilder/Krea2

Inputs (11)

NameTypeDefaultDescription
modelMODELKrea 2 model. The edited LoRA is applied to it, like a LoRA loader.
lora_nameCOMBOLoRA to edit, from models/loras.
strengthFLOAT1.00-4–4Overall LoRA strength, same as a LoRA loader. Baked into the saved LoRA.
presetCOMBOFullFull = the LoRA as it is. Each block group preset turns those blocks down to 0.3. Face lock sits in different blocks for each LoRA (Lip Bite: late face blocks 16-21, Amateur V4: face blocks 4-9), so try each on a fixed seed batch and keep the one that frees the face. Tame whole image = blocks 4-15 at 0.7, which with spike_soften directions stopped Lip Bite changing the whole image. Dragging the graph switches to Custom.
blocksSTRING1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 128 block multipliers, 0 to 2 (1 = unchanged). Drag the bars on the node.
attentionFLOAT1.000–2Multiplier for the attention layers (q, k, v, o, gate) in every block.
mlpFLOAT1.000–2Multiplier for the MLP layers (gate, up, down) in every block. Most of a Krea 2 LoRA's weight usually sits here.
outside_blocksFLOAT1.000–2Multiplier for layers outside the 28 blocks (text fusion, first, last), if the LoRA has any. The heatmap note says how many.
spike_softenCOMBOofflayers = pull any layer that is far stronger than the same layer in other blocks down to the limit. directions = inside each layer, flatten the one or two directions that dominate it (plain lora_A / lora_B files only). both = both.
spike_limitFLOAT2.01–10How strong a spike may be before it is softened. layers: times the median of that layer across the 28 blocks. directions: times the layer's second strongest direction (well-behaved LoRAs sit around 2). Lower = more softening.
blocks_inoptSTRINGA 28-block curve from another node, such as LC Krea2 LoRA Block Scan's blocks output. When wired it replaces the preset and the bars.

Outputs (2)

NameTypeDescription
modelMODELThe model with the edited LoRA applied.
edited_loraLC_LORAThe edited LoRA, for LC LoRA Save.