Nodes/ComfyUI-Arrssenne/Loader ckpt/diffusion switch+clip+vae+lora (Arrssenne)
ComfyUI Node

Loader ckpt/diffusion switch+clip+vae+lora (Arrssenne)

Pick your model folder, and put the LoRAs in the prompt

By arrssenne·Created 4 months ago·Updated 26 days ago· 1
Loader ckpt/diffusion switch+clip+vae+lora (Arrssenne)
    • MODEL
    • CLIP
    • VAE
    • text
    • checkpoint_name
    ◄source▾►
    ◄ckpt_name▾►
    ◄unet_name▾►
    ◄clip_name▾►
    ◄clip_type▾►
    ◄vae_name▾►
    ◄text—►

    If you came from A1111 or Forge, the thing you actually miss isn't the settings layout - it's typing <lora:myStyle:0.8> into the prompt and having it just happen. In ComfyUI a LoRA is an edge in the graph: a loader wedged between checkpoint and sampler, strength in a widget, every swap a click. This node gives that habit back - and bolts on a second trick that's less obvious and more useful.

    What it is

    ArrssenneLoaderSwitch is the pack's all-in-one loader with a folder switch on it. One node replaces a four-node chain - checkpoint loader, CLIPLoader, VAELoader, LoRA-tag loader - and hands you MODEL, CLIP, VAE, a cleaned-up prompt string, and the name of the file it loaded. It comes from a nine-node personal pack by arrssenne: plumbing, mostly - the kind of node you write after wiring the same four sockets a hundred times.

    The source switch, and why it earns its keep

    source takes exactly two values, checkpoints and diffusion_models, and only the file from the selected one is loaded.

    checkpoints loads the model through load_checkpoint_guess_config with CLIP and VAE deliberately switched off - MODEL only. That matters for checkpoints whose embedded text encoder is unusable locally (Krea 2 being the obvious one): the embedded copy is never touched, so you can't hit "clip input is invalid." You always supply the encoder yourself.

    diffusion_models calls comfy.sd.load_diffusion_model, the same call the stock UNETLoader makes. This is the reason the node exists. The author's note in the source is specific: that path strips the model.diffusion_model. key prefix before matching _quantization_metadata layer names, so quantized files (INT8 ConvRot, scaled FP8, NVFP4) load correctly whether or not they carry the prefix. The checkpoint path doesn't strip, so a prefixed quantized file loads as raw int8 and the sampler hands you pure noise. If you just downloaded a pre-quantized model and your output is grey static, that's the trap, and flipping source is the fix. Those files belong in models/diffusion_models, not models/checkpoints - put one in the wrong folder and no loader will save you.

    Inputs and outputs that matter

    Required: source, ckpt_name, unet_name, clip_name, clip_type, vae_name, text.

    • source, ckpt_name, unet_name. Set the source first; then only one of the two file menus interests you. If a folder is empty the node fills the list with an (aucun) placeholder so validation doesn't fail, and queueing with it selected raises a clear error instead of quietly loading nothing.
    • clip_name + clip_type. Encoder from models/text_encoders, type from core's CLIPLoader list (stable_diffusion, sdxl, flux, krea2, wan, …). Wrong type is the number-one cause of "the model ignores my prompt." Krea 2 wants the Qwen3-VL encoder at type krea2 - and that model needs three files (diffusion model, encoder, Qwen-Image VAE), so both widgets are load-bearing.
    • vae_name. From models/vae. The pixel_space entry is core's passthrough for pixel-space models; leave it alone.
    • text is a socket, not a textbox - it's declared forceInput, so wire a string into it. The node pulls out every <lora:name[:model_strength[:clip_strength]]>, applies each through the builtin LoraLoader (so ComfyUI's caching still works), and returns what's left. One strength value sets model and clip together; two set them separately.

    Outputs: MODEL into the sampler, CLIP and text into a CLIP Text Encode (use the text output, not your original prompt string, or the tag text goes to CLIP as literal tokens), VAE into VAE Decode. checkpoint_name is the raw filename of whichever source loaded - feed a save/filename node with it instead of hand-typing a model name you'll forget to update.

    Installing it

    Version 0.0.1, personal pack, French README: small, opinionated, used daily by one person. Manager may or may not list it (the pyproject.toml declares registry metadata under publisher arrssenne); the guaranteed route is:

    cd ComfyUI/custom_nodes
    git clone https://github.com/arrssenne/comfyui-arrssenne
    

    Then restart ComfyUI. Dependencies are effectively nil - requirements.txt lists Pillow, which you already have, and pyproject.toml declares none. In an ecosystem where installing a node is often dependency roulette, that's worth something.

    Where it bites

    A missing LoRA is silent. Tags that don't resolve to a file are logged as a warning and skipped, and they're stripped from text anyway - nothing downstream complains, the image just doesn't have the LoRA in it. Matching goes exact path → path without extension → basename stem, so a typo in a subfolder name can miss the first two and land on the third. Watch the console the first time.

    New model files don't appear. ComfyUI caches its folder listings; drop a file into models/diffusion_models and the unet_name menu won't show it until you refresh or restart.

    The name oversells one word. This "switch" switches which folder the model comes from, not which branch of your graph runs. For two loaders side by side with a runtime toggle, use the pack's "Switch from any" - it returns an ExecutionBlocker on the unused output, so the dead branch doesn't execute, which is necessary because every SaveImage and PreviewImage in the graph runs on every queue regardless.

    Self-contained SDXL/Illustrious/Pony checkpoints still work here, but the embedded CLIP and VAE get thrown away in favour of external ones - the pack's shorter "Loader ckpt+lora" is the cleaner path for those.

    CategoryArrssenne/Loaders

    Inputs (7)

    NameTypeDefaultDescription
    sourceCOMBO2 options: checkpoints, diffusion_models
    ckpt_nameCOMBO1 options: (aucun)
    unet_nameCOMBO1 options: (aucun)
    clip_nameCOMBO0 options:
    clip_typeCOMBO28 options: stable_diffusion, stable_cascade, sd3, stable_audio, mochi, ltxv, +22
    vae_nameCOMBO1 options: pixel_space
    textSTRING—

    Outputs (5)

    NameTypeDescription
    MODELMODEL—
    CLIPCLIP—
    VAEVAE—
    textSTRING—
    checkpoint_nameSTRING—