Nodes/ComfyUI-Krea2-Projector-Tuner/Krea2 Projector Tuner (BSS)
ComfyUI Node

Krea2 Projector Tuner (BSS)

The Krea 2 projector tuner that decensors in RAM, no LoRA required

By BlackSnowSkill·Created 2 months ago·Updated 2 months ago· 20
Krea2 Projector Tuner (BSS)
  • model
  • model
presetStrongx3_wl7
multiplier1.00
knob_00.00
knob_10.00
knob_20.00
knob_30.00
knob_40.00
knob_50.00
knob_60.00
knob_70.00
knob_80.00
knob_90.00
knob_100.00
knob_110.00

Krea 2 is a great model with a trained-in filter, and this node is the cleanest way to poke a hole in it without loading a LoRA or a mystery .safetensors. It's a single in-memory patch: 12 sliders that adjust the model's text-conditioning projector weights while it generates. No files written to disk, nothing to corrupt, and you can watch the sliders move when you switch presets.

What it actually does

By now you know the Krea 2 story: the open checkpoint went through an alignment pass the hosted version never got, and the refusal lives in the weights - it doesn't deform images, it just quietly ignores prompts it deems unsafe. The community's two main fixes are the ConditioningKrea2Rebalance node (which costs some quality) and an uncensor LoRA (the better tool, but still a download). This node is a third, more surgical option: it patches the exact tensor the famous little "FilterBypass" files patch - diffusion_model.txtfusion.projector - but does it live, with 12 sliders instead of a fixed file.

That tensor is a 12-element vector sitting between the Qwen3-VL text encoder's layered features and the diffusion transformer. The bypass files that circulated in the first week edited only vectors 9 and 10 (FilterBypass2) or 9–11 (FilterBypass3); the node's built-in presets push the same deep knobs, just with a UI on top.

How it works

Under the hood it's textbook ComfyUI weight patching. The node clones the model patcher, scans the state dict for the first key containing txtfusion.projector, builds a difference tensor shaped to match it, and hands it to model.add_patches() with the 12 knob values (scaled by multiplier). Because it goes through ComfyUI's native patching system, nothing is written to your checkpoint - and the patch tensor is deliberately kept on CPU, a fix the author added specifically to stop --enable-dynamic-vram crashes. The only things on disk are the JSON presets.

The inputs that matter

There are three things you'll actually touch, out of fourteen:

  • preset - the dropdown. Ships with Strongx3_wl7, Strong 2.5, and Clean Bypass, which are progressively gentler pushes on the deep layers. custom turns on the sliders.
  • multiplier - the master volume, -10 to +10. If a preset's almost right but too strong, drop this to 0.6 instead of hand-tweaking twelve sliders.
  • knob_0 to knob_11 - the 12 projector values. Per the README's layer map: knobs 0–1 are early text layers (syntax, prompt-following), 2–6 are mid layers (geometry, anatomy), 7–10 are deep layers (style and the negative alignment that is the censorship), and 11 is the output layer. The presets only move knobs 7–10, which tells you everything about where the filter actually lives.

It outputs one model, so wire it in the obvious spot: Loader → this node → KSampler. It's a real patch, not a conditioning hack, so it belongs in the model path.

Installing it

ComfyUI Manager → Install Custom Nodes → search Krea2 Projector Tuner, or clone it directly:

cd ComfyUI/custom_nodes
git clone https://github.com/BlackSnowSkill/ComfyUI-Krea2-Projector-Tuner.git

Restart and it appears under BSS/Krea2. The whole pack has zero Python dependencies beyond ComfyUI's own torch - no requirements.txt, no model downloads. The default presets get auto-written as JSON files into the pack's presets/ folder on first start, and you can edit, rename, or share them; the three on-node buttons save, delete, and open that folder.

Where people get burned

The big one: this node only works on an actual Krea 2 model. It hunts for a txtfusion.projector key, and if it can't find one it logs an error and returns your model unpatched - no crash, just no effect. So check the ComfyUI console if your output looks untouched, and don't expect it to do anything to Flux or SDXL.

Also, that in-memory patch is per-graph-run and only touches the first matching key it finds. And if you delete all the JSON preset files by hand, the .initialized marker stops the defaults from regenerating - you'll be left with only custom. Keep at least one file around.

One honest caveat: like every decensor, this trades a little of the model's discretion for responsiveness. The presets are already tuned to be gentle on the mid layers so anatomy stays intact - resist the urge to yank all twelve knobs to -5 and wonder why your images look fried.

CategoryBSS/Krea2

Inputs (15)

NameTypeDefaultDescription
modelMODEL
presetCOMBOStrongx3_wl74 options: custom, Strongx3_wl7, Strong 2.5, Clean Bypass
multiplierFLOAT1.00-10–10
knob_0FLOAT0.00-5–5
knob_1FLOAT0.00-5–5
knob_2FLOAT0.00-5–5
knob_3FLOAT0.00-5–5
knob_4FLOAT0.00-5–5
knob_5FLOAT0.00-5–5
knob_6FLOAT0.00-5–5
knob_7FLOAT0.00-5–5
knob_8FLOAT0.00-5–5
knob_9FLOAT0.00-5–5
knob_10FLOAT0.00-5–5
knob_11FLOAT0.00-5–5

Outputs (1)

NameTypeDescription
modelMODEL