Nodes/ComfyUI-HMT-Suite/Model Downloader
ComfyUI Node

Model Downloader

Fetch a 7GB checkpoint without leaving the graph

By tuyenhm68·Created 8 months ago·Updated 28 days ago· 1
Model Downloader
    • status
    • file_path
    • message
    • progress_percentage
    download_typefile
    url
    destination_foldercheckpoints
    filename
    overwritefalse
    hf_token
    extract_repotrue

    Downloading models is the part of ComfyUI nobody enjoys. You find a checkpoint, copy a URL, open a terminal, curl it into models/checkpoints/, and pray the filename isn't mangled. HMT_ModelDownloader exists to kill that whole detour: it's an output node that pulls a file - or an entire GitHub repo - straight into your models/ folder when you hit Queue. Paste a URL, pick a destination, run. That's the pitch.

    It comes from the HMT Suite pack by tuyenhm68, a small utility pack whose flagship is this node. The pack only hard-depends on requests, so nothing heavy sneaks in with it.

    How it works

    Pick a download_type and the node hands off to one of two backends:

    • file - a direct URL. The downloader uses requests, splits the transfer across a few parallel connections, and includes resume, disk-space checking, and file-size verification. It's more careful than your average "grab a URL" node.
    • github - it parses the URL and handles repos, blob/ file links, raw URLs, and release assets. A repo URL gets downloaded as a zip and (by default) extracted; a file link lands in your chosen folder.

    Progress is tracked per download and pushed to the console every 10%, and it keeps a live record you can read from Python via ModelDownloaderNode.get_download_progress(). In the UI you just watch the progress_percentage output tick up.

    The inputs that matter

    • url and download_type - the source and its kind. Obvious, but the source of most errors, so double-check the link.
    • destination_folder - a name relative to ComfyUI/models/: checkpoints, loras, vae, unet, whatever. It creates the folder if needed.
    • filename - leave blank to auto-detect from the URL, or override to rename.
    • overwrite - the trap. With it false (default), if the file or extracted folder already exists the node skips the download and returns success with a note about the existing size. That's a feature - it makes re-running a workflow cheap - but it's also how you think you fetched a new model and actually got the old one. If you changed a URL and it "succeeded" suspiciously fast, check overwrite.

    Two optional inputs are worth knowing: hf_token lets you grab private or gated Hugging Face models, and extract_repo (default true) controls whether a GitHub repo is unzipped or kept as a zip.

    Outputs

    Four: status (success/error), file_path, message, and progress_percentage. For a download node these are mostly read-only - you wire nothing downstream. It runs the moment the queue starts, so put it first and let it do its thing while the rest of the graph waits.

    Install

    The standard HMT Suite install (this is one pack, so all its nodes come together):

    cd ComfyUI/custom_nodes
    git clone https://github.com/tuyenhm68/ComfyUI-HMT-Suite.git
    cd ComfyUI-HMT-Suite
    pip install -r requirements.txt
    

    Restart ComfyUI and you'll find it under HMT Suite > Utils > Model Downloader. Or just search "ComfyUI-HMT-Suite" in ComfyUI Manager and install there - same result, no terminal.

    Common issues

    • Download fails with a network error - some servers (and Cloudflare fronts) block scripted downloads. Verify the URL works in a browser first.
    • "File not found after download" - it went where you told it: ComfyUI/models/<destination_folder>/. Check write permissions there too.
    • "Skipped" when you expected a download - overwrite was false and the file already exists, as above.

    Where people actually get burned: a half-finished download on a flaky connection, then re-running with overwrite: false skips the corrupt file. If your model loads as garbage, delete the file and re-download with overwrite: true. Minor, but it'll save you an hour someday.

    CategoryHMT Suite/Utils

    Inputs (7)

    NameTypeDefaultDescription
    download_typeCOMBOfile2 options: file, github
    urlSTRING
    destination_folderSTRINGcheckpoints
    filenameSTRING
    overwriteBOOLEANfalse
    hf_tokenoptSTRING
    extract_repooptBOOLEANtrue

    Outputs (4)

    NameTypeDescription
    statusSTRING
    file_pathSTRING
    messageSTRING
    progress_percentageINT