Krea2 Projector Tuner (BSS)
The Krea 2 projector tuner that decensors in RAM, no LoRA required
- model
- model
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 withStrongx3_wl7,Strong 2.5, andClean Bypass, which are progressively gentler pushes on the deep layers.customturns 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_0toknob_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.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| preset | COMBO | Strongx3_wl7 | 4 options: custom, Strongx3_wl7, Strong 2.5, Clean Bypass |
| multiplier | FLOAT | 1.00-10–10 | — |
| knob_0 | FLOAT | 0.00-5–5 | — |
| knob_1 | FLOAT | 0.00-5–5 | — |
| knob_2 | FLOAT | 0.00-5–5 | — |
| knob_3 | FLOAT | 0.00-5–5 | — |
| knob_4 | FLOAT | 0.00-5–5 | — |
| knob_5 | FLOAT | 0.00-5–5 | — |
| knob_6 | FLOAT | 0.00-5–5 | — |
| knob_7 | FLOAT | 0.00-5–5 | — |
| knob_8 | FLOAT | 0.00-5–5 | — |
| knob_9 | FLOAT | 0.00-5–5 | — |
| knob_10 | FLOAT | 0.00-5–5 | — |
| knob_11 | FLOAT | 0.00-5–5 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |