Spellcaster Loader (Auto-Arch)
Drop in any model file and it figures out the CLIP, VAE and arch for you
- model
- clip
- vae
- arch_key
The most annoying thing about hopping models in ComfyUI is that every family loads differently. SD 1.5 and SDXL are single checkpoints. Flux wants a UNET plus two CLIP encoders and a separate VAE. Flux 2 Klein wants a Qwen text encoder, and which Qwen depends on whether you have the 4B or the 9B. Chroma wants a T5 loaded with a special type. Normally that's three or four loader nodes you have to wire correctly by hand. SpellcasterLoader is the "just pick the file" node that takes the whole stack off your plate.
It's the flagship node of the ComfyUI-Spellcaster pack, which is the node surface of Spellcaster, the GIMP/Darktable plug-in by LaboratoireSonore. Same architecture registry powers both, so the definitions here are maintained in one place.
How it works
You pick a model file and the loader does three things: figure out what architecture it is, load the right weights, and hand you MODEL, CLIP, VAE plus a plain arch_key string describing what it found. Detection is filename-based - it classifies the name against a registry of architectures (sd15, sdxl, illustrious, zit, flux1dev, flux2klein, flux_kontext, chroma, plus a longer list like auraflow, hunyuan, ltx, kolors if you have those). If the file lives in your checkpoints folder it takes the single-file checkpoint path via load_checkpoint_guess_config. If it's a separate-loader model in diffusion_models, it loads the UNET on its own and then auto-picks the correct CLIP:
- Flux Dev / Kontext - dual CLIP:
clip_l.safetensors+t5xxl_fp8_e4m3fn.safetensorsin oneDualCLIPLoader. - Klein - one Qwen encoder, and it reads the model name to decide: names containing "4b", "schnell", "lite" or "kaleidoscope" get
qwen_3_4b, everything else getsqwen_3_8b. - Chroma -
t5xxl_fp8_e4m3fn.safetensorswith thechromaCLIP type. - VAE - defaults to
ae.safetensorsfor the separate-loader families.
If the filename misleads it, that's what the overrides are for.
The inputs that matter
- model_name - dropdown of everything in
checkpointsanddiffusion_models. Start here; this is the only required input you'll touch 95% of the time. - arch_override - 23 choices, default
auto. Force the architecture when auto-detect guesses wrong. - clip_override / vae_override - pick a specific text encoder or VAE file instead of the architecture default. You'll use these when you don't have the exact default filenames, or you want fp8 CLIP variants.
- weight_dtype -
default,fp8_e4m3fn,fp8_e4m3fn_fast, orfp8_e5m2, for the UNET only. If the model fits in VRAM at full precision, leave it; fp8 is for when you're squeezing.
The arch_key output is the wire you plug into the pack's SpellcasterSampler and SpellcasterPromptEnhance so they know which architecture they're talking to. Everything downstream just works off that one string.
Install
ComfyUI Manager is the easy path - search "Spellcaster" and hit install (it's in the ComfyUI Registry as comfyui-spellcaster). Or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/laboratoiresonore/ComfyUI-Spellcaster.git
Restart ComfyUI. The README's "no pip dependencies" claim is mostly true - requirements.txt lists huggingface_hub and zeroconf, but both are soft-optional; ComfyUI already ships torch, numpy and Pillow.
Where people get burned
The one real trap is that auto-detection of the file doesn't conjure the companions. For Flux/Klein/Chroma this loader will look for clip_l.safetensors, t5xxl_fp8_e4m3fn.safetensors, qwen_3_8b.safetensors or ae.safetensors by name - and if you only downloaded the UNET weights and skipped the text encoder and VAE the model card lists, you'll get a hard "couldn't find file" error. That's the classic 2026 separate-loader trap: grab the companion files and put them in models/text_encoders and models/vae under the exact expected names. If your names differ, use clip_override / vae_override instead of renaming anything.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | Model file — architecture auto-detected from filename | |
| arch_overrideopt | COMBO | auto | Override auto-detection |
| clip_overrideopt | COMBO | auto | Override CLIP file (auto = use architecture default) |
| vae_overrideopt | COMBO | auto | Override VAE file (auto = use architecture default) |
| weight_dtypeopt | COMBO | default | Weight data type for UNET models |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | Diffusion model (UNET) for denoising latents. |
| clip | CLIP | CLIP text encoder for prompt encoding. |
| vae | VAE | VAE for encoding/decoding images ↔ latent space. |
| arch_key | STRING | Detected architecture key (pass to Sampler / Prompt Enhance). |