Krea2 Selective LoRA Loader Model Only (Projection Split)
Your Krea 2 LoRA Is Quietly Editing Your Prompt
- model
- model
- report
Here's the thing nobody mentions when you download your first Krea 2 character LoRA: it isn't only painting the face. Krea 2 runs your prompt and your image through the same 28 shared blocks, and a real slice of the model exists purely to turn the Qwen3-VL text stack into conditioning in the first place. A LoRA that writes weights into that slice changes how the model reads you, not just what it draws. And most LoRA loaders give you one switch for the whole file.
This node gives you three more: a normal model-only LoRA loader plus independent keep/drop switches for Krea 2's three text-conditioning branches - txtfusion.projector, the rest of txtfusion, and txtmlp.
Why you'd reach for it
Krea 2 is a 12B single-stream DiT, and the prompt doesn't arrive as a finished CLIP row. The Qwen3-VL encoder hands over twelve selected hidden-state taps - a 12 x 2560 stack per token position - fused before it ever meets the image tokens. A LoRA that wrote into that fusion path is effectively a prompt-editing layer, and it doesn't fail loudly. It fails as "my prompts stopped landing as well and I don't know why."
The pack author - the same u/Capitan01R- behind the Klein encoder-path teardown everyone kept linking - is candid that the runtime enhancer was the proof of concept and the cleaner route was training a TextFusion-targeted LoRA instead. You can't retrain every LoRA on Civitai, but you can control which branches one writes into.
How it actually works
It reads the raw file with ComfyUI's own torch-file loader, classifies every key by name into four buckets - projection, textfusion, txtmlp, other - drops the ones you switched off, and hands what survives to ComfyUI's standard model-only LoRA path with your strength_model.
That's the nice part - alpha/rank scaling, key mapping, LoRA and LoKr handling all stay stock. Same load the built-in loader would have done, minus the tensors you cancelled. Two source details worth knowing:
otheris never filtered. The shared DiT blocks always load. This is a text-path switch, not a general tensor picker.- The projector is matched before generic
txtfusion, so a projector key can never land in the wrong bucket.
The report output is the only practical way to find out whether a file even has text-path tensors - kept and source counts per branch. Most character LoRAs don't. It also fingerprints the file (path, inode, size, mtime, ctime), so replacing a LoRA on disk re-runs the node while unchanged inputs stay cache-friendly.
The inputs that matter
model- the chain so far; this sits wherever a plain LoRA loader would.lora_name- your file. Load each LoRA once.strength_model- default1.0, range ±100. At0the node bypasses and passes the model through - handy as a same-seed baseline.load_projection,load_textfusion,load_txtmlp- the whole point, all default on. Tooltips are the author's: projector only; layerwise/refiner tensors excluding the projector; txtmlp linear layers.debug- prints the same report to the console.
Outputs are model and report: model to the sampler (or the next loader), report to a text preview node when you want to know what happened.
Rule of thumb: if a LoRA is eating your prompt, turn load_txtmlp off first, then load_textfusion, then load_projection. If adherence recovers but likeness doesn't, that LoRA was leaning on the text path and there's no free lunch. The author's shipped character workflow chains this after the image-only loader with all three switches off - the far end of the same dial.
Install
ComfyUI Manager, search ComfyUI-Krea2T-Enhancer. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/capitan01R/ComfyUI-Krea2T-Enhancer.git
Restart ComfyUI. No requirements.txt, no extra pip packages - it leans entirely on ComfyUI's own LoRA machinery. You do need a ComfyUI with native Krea2 support (0.25.0 and up), plus the model, the Qwen3-VL text encoder and the Qwen-Image VAE.
Load Diffusion Model -> LoRA loader(s) -> Krea2 Selective LoRA Loader Model Only (Projection Split) -> sampler
Where it bites
Zero counts in the report. Check the source=[...] half before blaming a switch. projection:0 just means the file has no projector tensors, so toggling that switch does nothing.
Tensors landing in other. Classification is name-based and tolerant of txtfusion / textfusion / text.fusion and txtmlp / txt.mlp / txt.in.linear.1, but it isn't magic. A file that names those layers another way loads them anyway, silently, because unmatched keys are always kept. If loaded counts don't match source counts for a branch, that's what happened.
Counts are key counts, not successes. They include per-module alpha entries, so a 28-module branch can report more than 28. "Is there anything in this bucket", not a per-layer audit.
A LoRA that suddenly does nothing. You removed the only tensors it had. Turn them back on and A/B against strength_model=0 - one extra generation, no guessing.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| lora_name | COMBO | LoRA applied only to the diffusion model. | |
| strength_model | FLOAT | 1.00-100–100 | — |
| load_projection | BOOLEAN | true | Load only txtfusion.projector LoRA tensors. |
| load_textfusion | BOOLEAN | true | Load txtfusion layerwise/refiner tensors, excluding the projector. |
| load_txtmlp | BOOLEAN | true | Load txtmlp linear-layer LoRA tensors. |
| debug | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| report | STRING | — |