Nodes/Model Utility Toolkit/Checkpoint Downloader
ComfyUI Node

Checkpoint Downloader

Checkpoint Downloader — bulk-fetch metadata for every checkpoint you own

By silveroxides·Created about a year ago·Updated 4 days ago· 14
Checkpoint Downloader
    • status
    subdirectory/
    recursivetrue
    nsfw_levelAll
    max_examples0
    threads4
    api_key

    This is the node that does the actual fetching for the whole "Info Loader" side of this pack. Where DiffusionModelInfoLoader and friends just read a local cache and show you what's there, this one goes and builds that cache: it scans a folder of your checkpoints, works out what each file actually is, and pulls down metadata, preview images, and example workflows so the loader nodes have something to show. Run it once against a folder full of ambiguously-named .safetensors files, and you go from "no idea" to "full model page, per file, without leaving ComfyUI."

    It's one of four ModelUtils/Downloader nodes in silveroxides' ComfyUI-ModelUtils - checkpoints, VAEs, ControlNets, and diffusion models all get one. They share the same shape, so what's here applies to the others too. Judging by the field names, this is talking to something CivitAI-shaped: nsfw_level as an explicit filter category and an api_key that's needed to reach some content are CivitAI's own vocabulary, not a generic convention, and hashing local files to match them against a hosted database is exactly how CivitAI's model-lookup API works.

    Inputs that matter. subdirectory (default /) is which folder under your checkpoints directory to scan - leave it at root to cover everything, or point it at a subfolder if you organize by base model. recursive (default on) decides whether it descends into subfolders from there. nsfw_level (default "All") filters what comes back based on the content rating in the source metadata - set it tighter if you'd rather not pull adult-rated examples. max_examples (0–100) caps how many example images/workflows it grabs per model; leave it at 0 if you're not sure, but a higher number means more disk and more requests per file. threads (1–32, default 4) is how many files it processes in parallel - turn it up if you have a big folder and don't mind hammering the API a bit harder. api_key is exactly what it sounds like: paste your API key here if you want NSFW-rated content included, since most hosted model repositories gate that behind authentication now.

    Output. status (STRING) - a summary of what happened. This node is flagged as an output node, so ComfyUI runs it as a terminal step even without wiring status anywhere else, the same way a Save Image node runs regardless of what's downstream of it. Wire it into a text-preview node if you want to actually read the summary instead of just trusting it worked.

    Installing it. ComfyUI Manager, search "Model Utility Toolkit," or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/silveroxides/ComfyUI-ModelUtils
    

    then restart. The README doesn't spell out a required API key or rate limits anywhere, so treat both as things you'll discover by running it.

    Troubleshooting. A big recursive scan with a high max_examples and low threads is going to be slow - that's not a bug, it's a lot of network requests. If you're not getting metadata back for files you know exist on the source site, the most likely culprits are nsfw_level filtering them out, or a missing/invalid api_key blocking anything gated. And since this whole pipeline matches by file hash, a checkpoint you renamed or re-saved (pruned to fp16, for instance) can come back with nothing even though the "same" model is findable online - the hash changed, so as far as the lookup is concerned, it's a different file.

    CategoryModelUtils/Downloader

    Inputs (6)

    NameTypeDefaultDescription
    subdirectoryCOMBO/1 options: /
    recursiveBOOLEANtrueWhether to scan subdirectories recursively.
    nsfw_levelCOMBOAllFilter models based on NSFW level in metadata.
    max_examplesINT00–100Maximum number of examples to process.
    threadsINT41–32Number of threads to use for processing.
    api_keySTRINGAPI key for accessing the model repository.

    Outputs (1)

    NameTypeDescription
    statusSTRING