Nodes/ComfyUI-PixlStash/PixlStash Checkpoint Loader
ComfyUI Node

PixlStash Checkpoint Loader

The PixlStash checkpoint loader that refuses to download anything

By Pikselkroken·Created 3 months ago·Updated a day ago· 7
PixlStash Checkpoint Loader
    • model
    • clip
    • vae
    checkpoint_id

    Here's the thing nobody tells you until you queue it: of all the model-shelf loaders in ComfyUI-PixlStash, this is the one that cannot fetch its file. PixlStash serves adapter bytes and text-encoder bytes, but not checkpoint bytes. The checkpoint has to already be readable on the machine ComfyUI runs on. That's the normal case when ComfyUI and PixlStash live on the same box or share a drive mount - and never the case when they don't. If your ComfyUI reaches PixlStash over the network on separate hosts, this node is a dead end, no matter how good the connection is.

    What it is

    It's a drop-in for ComfyUI's built-in Load Checkpoint, producing the same three outputs in the same order: model, clip, vae. Instead of a dropdown of filenames there's a Browse checkpoints… button that opens a grid from the PixlStash model shelf, showing the names, base models and icons the shelf recorded. Pick one and the node loads it exactly like the built-in does.

    How it works

    The one input, checkpoint_id, is written by the Browse button - a shelf id, not a SHA-256. That's deliberate: a 24 GB checkpoint is listable long before the server has finished hashing it, so the shelf addresses checkpoints by id and this node follows. On load it resolves the record to a local path (with the same strict size-and-extension check the other loaders use), and if no usable copy exists it errors with a message that tells you exactly why: mount that drive here, or copy the file into a ComfyUI models folder and rescan it into PixlStash.

    The interesting edge case: a bare diffusion model - a Flux UNET sitting in models/diffusion_models, for instance - is filed as a checkpoint by PixlStash's parameter-count rule, so it shows up in the grid too. ComfyUI can't build a CLIP or a VAE out of a bare UNET, so the node loads it as a MODEL and returns empty clip and vae outputs. That's not a bug: wire the CLIP from a PixlStash CLIP Loader and the VAE from a PixlStash VAE Loader and you've rebuilt the pipeline the way the README's Flux.2 example does.

    Install and setup

    cd ComfyUI/custom_nodes
    git clone https://github.com/Pikselkroken/ComfyUI-PixlStash.git
    

    Or search ComfyUI-PixlStash in ComfyUI Manager. It only needs requests and Pillow - both already in any ComfyUI - so there are no heavy dependencies to fight. Restart, then put your PixlStash URL and API token in Settings > PixlStash. The shelf routes are OWNER_ONLY, so use an owner token, not a resource-scoped share token - the kind that works fine with the Picture Loader will 403 here. Multi-user ComfyUI (--multi-user) isn't supported either; run one single-user instance per PixlStash user.

    Where people get burned

    • Split-host setups simply don't work. If PixlStash isn't on the same filesystem as ComfyUI, this node can't load anything. The error message is honest about it; don't fight it, restructure.
    • Empty clip / vae outputs on bare diffusion models. Checkpoint loaders normally give you all three. If a grid entry is a UNET-only model, its CLIP and VAE are null - wire them from their own shelf loaders.
    • It's addressed by shelf id. If a checkpoint leaves the shelf, old workflows fail with "not on the shelf any more." Pick again with Browse.

    If you're only interested in this pack because it looks like a convenient way to load a checkpoint from somewhere else, the built-in Load Checkpoint already does that. The PixlStash Checkpoint Loader only pays off when your whole model library lives on the shelf.

    CategoryPixlStash

    Inputs (1)

    NameTypeDefaultDescription
    checkpoint_idSTRINGWritten by the Browse button — the shelf id of the checkpoint.

    Outputs (3)

    NameTypeDescription
    modelMODELThe diffusion model, for a KSampler.
    clipCLIPThe CLIP for encoding prompts. Empty for a checkpoint that carries no text encoder — wire a PixlStash CLIP Loader instead.
    vaeVAEThe VAE for encoding and decoding images. Empty for a checkpoint that carries none — wire a PixlStash VAE Loader instead.