π Kraken Dual CLIP Loader
The Flux-ready dual text encoder loader that tells you what it loaded
- clip
- diagnostics
Modern models don't use one text encoder anymore. Flux, SD3, and HunyuanDiT all need two: a smaller CLIP model plus the big T5, each of which lives as its own .safetensors in your models/text_encoders folder. π Kraken Dual CLIP Loader is the Kraken Tools take on that job - it pairs CLIP-L with T5 into a single CLIP object your CLIP Text Encode node accepts, with a few knobs the stock loader doesn't give you, and it reports back what it actually did via a diagnostics string.
If you've ever loaded a Flux workflow and stared at a red "DualCLIPLoader missing" error, this is the fix - but it also exists because the author got tired of the stock node's silent behavior. Its headline feature is that second output: a plain-text rundown of which files loaded, at what precision, on which device.
How it works
The node builds a CLIP object through ComfyUI's own comfy.sd machinery with the right CLIPType for your model, then hands it to any standard text encoder. Inputs, the ones you'll actually touch:
- type -
flux,sdxl,sd3, orhunyuan_dit. This tells the node which CLIP pairing and CLIPType to use, so set it to your checkpoint family, not to whatever loaded last. - clip_path and t5_path - the two encoder files, picked from your
text_encodersfolder. - mode -
dual(both),t5-only, orclip-only. You'll mostly live indual.clip-onlyis the fallback when your card can't fit T5, or when you're doing SDXL-style work that only needs CLIP-L. - device -
auto,cuda, orcpu.autoputs the text encoder where Comfy thinks it belongs, which is the right default.cpuis a legit escape hatch: on a cramped GPU, offloading the T5 encoder to CPU and letting the VAE/sampler have the VRAM is a real workflow. - precision_override -
auto/fp16/bf16/fp32. Same story as every loader:autois correct for 95% of people. T5 is the biggest VRAM pig in a Flux graph, and fp16 on it is the standard cost-cutting move; fp32 buys you nothing for inference. - warmup - a boolean that runs a tiny forward pass on load. The point is to pay the CUDA kernel compilation cost before your first real generation, so the first queue doesn't hang for a minute while kernels JIT. On a 12GB card with T5 this can feel like magic on workflow-reload day.
Outputs
- clip - the combined CLIP object. Wire it into any
CLIP Text Encode(or the Kraken pack's prompt nodes, which hand you styled positive/negative strings ready to encode). - diagnostics - the loading report as a string. Connect it to a Show Text node once, and every graph you build starts self-documenting: encoder names, dtype, device, mode.
Install
Part of Kraken Tools (krakenunbound/comfyui-kraken-tools). ComfyUI Manager β search "Kraken Tools" β Install β restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/krakenunbound/comfyui-kraken-tools
cd comfyui-kraken-tools
pip install -r requirements.txt
Then restart. No model downloads happen through this node - it loads whatever CLIP/T5 files you already have in models/text_encoders. If you don't have them (Flux's t5xxl_fp16.safetensors and clip_l.safetensors being the common pair), grab them from the model's HuggingFace repo first; this node won't fetch them for you.
Where people get burned
- Wrong
typefor the checkpoint. Load Flux files withtypeset tosdxland you'll get silent garbage or a hard failure deep in the graph. Thetypedropdown is the first thing to check when a Flux workflow that worked yesterday won't run. - Missing T5 path. The default
t5/t5xxl_fp16.safetensorsassumes you've kept the standard folder layout. If you've flattened your text encoders, the dropdown will show your actual files - pick one rather than trusting the default. warmupisn't free. It's a real forward pass, so it costs a few seconds on every fresh load. On a slow machine you may prefer it off and just accept the first-run stall.
The stock DualCLIPLoader is fine and most people never outgrow it. This one earns its slot when you want the diagnostics string, the CPU offload escape hatch, or warmup - or when you're already running the rest of the Kraken pack and would rather one pack cover your whole graph.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| type | COMBO | flux | 4 options: flux, sdxl, sd3, hunyuan_dit |
| clip_path | COMBO | clip_l.safetensors | 0 options: |
| t5_path | COMBO | t5/t5xxl_fp16.safetensors | 0 options: |
| mode | COMBO | dual | 3 options: dual, t5-only, clip-only |
| device | COMBO | auto | 3 options: auto, cuda, cpu |
| precision_override | COMBO | auto | 4 options: auto, fp16, bf16, fp32 |
| warmup | BOOLEAN | false | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| clip | CLIP | β |
| diagnostics | STRING | β |