Nodes/AssetThingie/AT Checkpoint Loader
ComfyUI Node

AT Checkpoint Loader

The loader that remembers your CLIP skip

By pogo-pedagog·Created 7 months ago·Updated 5 days ago· 1
AT Checkpoint Loader
    • model
    • clip
    • vae
    ◄ckpt_name▾►
    ◄clip_skip0►

    A stock checkpoint loader gives you a model, a CLIP and a VAE, and then you still have to drag a CLIP Set Last Layer node onto the canvas to get the anime-model clip skip everyone insists on. AT Checkpoint Loader folds those two nodes into one, and - more usefully - it's built so a drag-and-drop from the pack's Checkpoints sidebar can set the clip skip value for you, from the metadata of the checkpoint you grabbed.

    That's the honest pitch. It's a convenience node for people who load a lot of checkpoints and keep forgetting the second step.

    How the clip skip part actually works

    The node calls comfy.sd.load_checkpoint_guess_config with output_vae and output_clip on - exactly what the core loader does. Then, only if clip_skip is negative, it clones the CLIP and calls clip_layer() on it. No hidden second node; the conditioning change happens inside the loader, on the cloned CLIP object.

    Worth knowing what that setting means before you trust it:

    • On SD 1.5 anime checkpoints it's a real setting. The model defaults to the last CLIP layer, and moving it changes conditioning.
    • On SDXL and everything derived from it - Pony, Illustrious, NoobAI - both encoders already condition on the penultimate layer. Setting -2 mostly restates a default; setting -1 is what wrecks Pony. Treat it as insurance against a loader that would otherwise pass -1, not as a quality dial.
    • On models with an LLM text encoder (Z-Image, Flux 2 Klein, Anima) there is no CLIP to skip, and the knob has nothing to act on.

    The inputs you set, and where the outputs go

    Two required inputs, and one of them is a dropdown you'll ignore.

    ckpt_name is the usual list of files in ComfyUI/models/checkpoints. The one you care about is clip_skip, an INT from -24 to 0 with a default of 0 and the author's own note: "0 = all CLIP layers. Negative values match CLIP Set Last Layer (e.g. -2)."

    Two things to notice about that range. First, 0 is a sentinel, not a layer index - it means "don't touch the CLIP at all", which is why the node skips the clone entirely. Second, the widget has no positive values. Coming from A1111 where clip skip 2 means 2, you type -2 here, and the widget won't let you type 3 by reflex. That's a real guard rail: the sign convention is the most common way this setting errors out.

    Three outputs, all straight out of the checkpoint:

    • model → your KSampler or sampler chain
    • clip → CLIP Text Encode (positive and negative)
    • vae → VAE Decode

    No latent, no image output, not an output node - same slot in the flow as the stock CheckpointLoaderSimple.

    Installing it

    This is one node in AssetThingie, so you're installing the whole pack. In ComfyUI Manager, search the pack title (AssetThingie) and install, or do it by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/pogo-pedagog/asset-thingie
    pip install -e asset-thingie/at-comfy
    

    Then restart ComfyUI. That second step is not optional - see below.

    No model files to download. The backend pulls in aiohttp, httpx and pydantic, which almost every ComfyUI environment already has, so nothing heavy lands in your venv. Both packages want Python 3.11+ - fine on a current install, a problem on an old 3.10 one. First start also creates at_comfy.db, at_cache/ and at_comfy_config.json in your ComfyUI base directory; that config file is where a CivitAI API key goes.

    Why the sidebar drag is the actual feature

    Dragging a checkpoint card out of the AT Checkpoints sidebar drops a small payload onto the canvas. Hovering a compatible node highlights it; dropping sets ckpt_name. Because the sidebar enriches entries with CivitAI metadata - including the recommended settings block from the model page - the drop also sets clip_skip on this node. That's what it exists for. The drop target also accepts the stock CheckpointLoaderSimple, but there it can only fill the filename.

    Where people get burned

    The node doesn't appear at all. The pack's __init__.py boots the at_comfy backend and re-raises on failure, so if the pip install never happened the whole pack fails to register - console shows Failed to initialize at_comfy backend and you lose both loader nodes. Install at-comfy into the same Python that runs ComfyUI. On the Windows portable build that's python_embeded\python.exe -m pip install -e custom_nodes\asset-thingie\at-comfy.

    "I set clip skip and nothing changed." On SDXL, Pony and Illustrious, that's the expected result when you go from 0 to -2. Change it to -1 and you'll see plenty of change, all of it bad. If you're chasing a quality improvement on those models, it isn't here - suspect CFG or the VAE instead.

    Categoryloaders

    Inputs (2)

    NameTypeDefaultDescription
    ckpt_nameCOMBO0 options:
    clip_skipINT0-24–00 = all CLIP layers. Negative values match CLIP Set Last Layer (e.g. -2).

    Outputs (3)

    NameTypeDescription
    modelMODEL—
    clipCLIP—
    vaeVAE—