KREA2 UNET GGUF LOADER (TJ)
One String Was Blocking the Whole Thing
- model
Krea 2 is a 12B diffusion transformer, and 12B is the number that historically pushes people down the quantization ladder. GGUF is how most of this ecosystem runs that size of model on consumer cards: Q8 is essentially fp16 at half the size, Q5 is roughly the last stop before visible loss, Q4_K_M is the accepted compromise, and below that is for the genuinely desperate.
There's just one problem. Krea 2 landed after the GGUF loader's world was already written, and UnetLoaderGGUF refuses to touch a file whose general.architecture tag isn't on its allowlist. Krea 2's tag wasn't. So you'd download a perfectly good quant, point the stock node at it, and get:
Unexpected architecture type in GGUF file: 'krea2'
That error is not about your file. It's about a list.
Why adding one string is enough
The gate in city96's gguf_sd_loader runs before it reads any tensors, and arch_str is never passed on to comfy.sd.load_diffusion_model_state_dict afterwards. ComfyUI figures out the actual model class from the shapes and keys inside the state dict, not from GGUF metadata. So the gate is a pure permission check bolted on in front of logic that doesn't consult it.
This node exploits exactly that. It finds the loaded GGUF loader module, adds krea2 to its IMG_ARCH_LIST set, and then just... calls the stock UnetLoaderGGUF. Same loader, same dequantization, same everything - the allowlist entry is the whole feature.
Two details worth appreciating: it's idempotent (adding to a set that already contains the value does nothing), and it re-applies on every run rather than editing files on disk, so a ComfyUI-Manager update to ComfyUI-GGUF can't quietly revert it. The sibling node for LTX 2.5's gemma4 encoder in this same pack works the same way.
One honest caveat: the pack's own comment describes the downstream detection as "Flux-derived". Don't take that as a statement about what Krea 2 is - it's Krea's own foundation model, trained in house, not a tune of FLUX.1 Krea [dev]. It's a statement about which existing ComfyUI code path its tensors resolve to. If a future core release changes that resolution, this is the node to suspect first.
Inputs and output
unet_name- a dropdown of.gguffiles frommodels/diffusion_modelsandmodels/unet_gguf. Subfolders work. An empty list showing(no .gguf files found)means the file isn't where ComfyUI looks, not that the node is broken.auto_set- off by default; when on, the MODEL output gets registered as a wireless provider, so the rest of the graph can grab it with aget_nameslot instead of a wire across the canvas.setnode_name- defaults toKrea2_UNET, and is the name that provider shows up under.
Output: model, a single MODEL. Feed it to your KSampler (or this pack's Enhanced KSampler) exactly like a checkpoint's MODEL output.
Install
ComfyUI Manager → Install Custom Nodes → search TJ_NODE, or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/designloves2/ComfyUI-TJ_NODE.git
# restart ComfyUI
You need city96/ComfyUI-GGUF installed - the node deliberately reuses that pack's UnetLoaderGGUF rather than reimplementing GGUF loading. Skip it and you get a RuntimeError naming the missing pack, which is the friendliest version of this failure you'll ever get.
The pack's requirements file lists llama-cpp-python, openpyxl, imageio and imageio-ffmpeg; those are for the LLM and video-preview nodes. Nothing extra is needed to load a quantized diffusion model.
When it goes wrong
A lower quant errors out while Q8 is fine. This is reported in the wild for Krea 2 GGUF: users running Q8 at 2048x2048 on a 24GB card report it loading around 13.4GB and doing 24 steps in about a minute and a half, while others report Q4 and Q5 refusing to load at all. Before you blame the node, try Q6 or Q8. Quants of a brand-new architecture are often produced before the conversion pipeline handles it properly.
VRAM math you forgot. Krea 2 is 12B plus its Qwen3-VL-4B text encoder. Two files, two budgets. On LLM-encoded models the encoder is frequently what decides whether the model fits, so add both before concluding the quant is broken.
A different loader node still fails. The allowlist entry is added when this node runs. If some other node in your graph loads the same .gguf first, it goes through the unpatched gate and dies. Run this node and let the rest of the graph feed off its model output - or off its wireless provider, if auto_set is on.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | 1 options: (no .gguf files found) | |
| auto_setopt | BOOLEAN | false | — |
| setnode_nameopt | STRING | Krea2_UNET | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |