Nodes/Spellcaster Nodes/Spellcaster Loader (Auto-Arch)
ComfyUI Node

Spellcaster Loader (Auto-Arch)

Drop in any model file and it figures out the CLIP, VAE and arch for you

By laboratoiresonore·Created 5 months ago·Updated 3 months ago· 1
Spellcaster Loader (Auto-Arch)
    • model
    • clip
    • vae
    • arch_key
    model_name
    arch_overrideauto
    clip_overrideauto
    vae_overrideauto
    weight_dtypedefault

    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.safetensors in one DualCLIPLoader.
    • 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 gets qwen_3_8b.
    • Chroma - t5xxl_fp8_e4m3fn.safetensors with the chroma CLIP type.
    • VAE - defaults to ae.safetensors for 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 checkpoints and diffusion_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, or fp8_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.

    CategorySpellcaster

    Inputs (5)

    NameTypeDefaultDescription
    model_nameCOMBOModel file — architecture auto-detected from filename
    arch_overrideoptCOMBOautoOverride auto-detection
    clip_overrideoptCOMBOautoOverride CLIP file (auto = use architecture default)
    vae_overrideoptCOMBOautoOverride VAE file (auto = use architecture default)
    weight_dtypeoptCOMBOdefaultWeight data type for UNET models

    Outputs (4)

    NameTypeDescription
    modelMODELDiffusion model (UNET) for denoising latents.
    clipCLIPCLIP text encoder for prompt encoding.
    vaeVAEVAE for encoding/decoding images ↔ latent space.
    arch_keySTRINGDetected architecture key (pass to Sampler / Prompt Enhance).