Krea2 Control LoRA Loader
The loader that gave Krea 2 its first real control — and it's a LoRA, not a ControlNet
- model
- MODEL
Krea 2 launched in June 2026 with no ControlNet of its own - no union model, no depth variant, nothing. The community's answer, within days, was a control LoRA: a checkpoint that crams the spatial-conditioning machinery into LoRA-shaped weights instead of a separate condition encoder. Krea2 Control LoRA Loader is the ComfyUI front door to that approach, and if you've seen somebody "ControlNet-ing" Krea 2 with a depth map, this is the node they were using. The pack appeared on GitHub about four hours after the depth LoRA dropped, and it's been the community's default way to run the thing since.
The public weights you'll load with it are Patil/Krea-2-depth-controlnet - currently the only released control LoRA for the model, which is worth knowing before you go hunting for a pose or canny one (people are still waiting). The control type is determined by the LoRA file itself: a depth LoRA wants a depth map, and if other types ever ship, they'll want their matching preprocessed image.
How it works, briefly
This is the node with the actual brains in it. It reads the LoRA, finds an expanded "first" input projection whose feature width is double the native one (an image half and a control half), and wraps the Krea2 model's first module with a projection that keeps the native path for image tokens while adding the control-token half from the LoRA's weight. Block LoRA weights get applied through ComfyUI's ModelPatcher, so normal loading, offload and low-VRAM behavior still apply.
Two details are worth knowing because they explain the failure modes below. First, the temporary projection state is restored after every forward, so removing the node doesn't leave the base Krea2 path patched. Second, block matching reads the live weight shapes of the loaded model rather than trusting state_dict() shapes - which is what makes it work with quantized/GGUF UNET loaders (FP8, INT8), a question that keeps coming up in the wild since those are how most people actually run a 12B model.
Inputs and outputs
- model - a native ComfyUI Krea2 model from
UNETLoader. Feed it an SDXL or Flux model and the loader will tell you plainly that it doesn't look like a Krea2 model. - lora_name - picked from
models/loras; this is where you drop the depth LoRA.safetensors. - strength - default 1.0, range -100 to 100. The release thread's working settings for the depth LoRA hover around 0.8 on Krea 2 Turbo at 8 steps; start there and dial up if the structure isn't sticking. (Negative strength inverts the LoRA's effect, which for control is usually "broken," not "creative.")
- MODEL out - goes to
Krea2 Control Apply. Not to the sampler. This ordering matters.
Installing
Shared pack, same steps as its siblings. ComfyUI Manager → search "comfyui-krea2-controlnet", or:
cd ComfyUI/custom_nodes
git clone https://github.com/facok/comfyui-krea2-controlnet
Restart ComfyUI. There's no requirements.txt - zero extra pip deps, the whole pack runs on ComfyUI's built-ins. The one download you own is the LoRA: grab Patil/Krea-2-depth-controlnet from Hugging Face and drop the file into ComfyUI/models/loras.
Where people get burned
- Sampling errors with "no control latent is attached." You loaded the LoRA but never attached a control latent.
Krea2 Control Applyis required after this loader - the README is explicit, and the failure is loud on purpose rather than a silently half-patched model. - "The supplied MODEL does not look like a native ComfyUI Krea2 model." Wrong base model in. Check your UNETLoader.
- "No compatible Krea2 control LoRA block weights were found." You pointed it at a regular style LoRA, not a control LoRA. They are not interchangeable.
- "already loaded on this MODEL. Use only one loader per model path." Don't stack two loaders on the same model - one control LoRA per path, full stop.
It's a young ecosystem and this is the only control path Krea 2 has. The good news: it works on modest hardware - there are reports of it running clean on a 12GB RTX 3060 - and the depth LoRA at ~0.8 strength keeps near-perfect structure while letting the prompt completely re-skin the image. That's the whole trick of the thing.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| lora_name | COMBO | 0 options: | |
| strength | FLOAT | 1.00-100–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |