Nodes/Preset Download Manager/HF Preset Download Manager
ComfyUI Node

HF Preset Download Manager

Batch-download your model stash from HuggingFace, then forget the URLs

By Smyshnikof·Created 10 months ago·Updated 10 months ago· 36
HF Preset Download Manager

      The most annoying part of ComfyUI was never the graph - it's the downloading. The community has been saying it for years: "feels like I am downloading models and installing missing nodes 90% of the time." HF Preset Download Manager takes a swing at one half of that. Instead of hunting down the same checkpoint, LoRA, and VAE links every time you set up a machine, you save them once as a named preset, and one click re-downloads the whole list into the right folders.

      It's a download manager, not a generation node. It touches no pixels, wires into nothing, and sits in the canvas purely as a launcher for its own UI. Drop it anywhere, click ⚙ Open Manager, and a dark-themed modal opens where you manage presets: add a model, pick where it lands, hit download, and the file shows up in ComfyUI/models/ where the checkpoints/VAE/LoRA loaders expect it.

      How it works

      Under the hood the node class PresetDownloadManager is about as simple as a ComfyUI node gets: empty INPUT_TYPES, no RETURN_TYPES, OUTPUT_NODE - a pure UI node whose real work lives on the backend. It registers its own HTTP routes on ComfyUI's server (/preset_download_manager/presets, /preset_download_manager/download, and a HuggingFace model-search endpoint), and the bundled JavaScript draws the button and the entire manager interface. Presets persist to a presets.json file in the pack's folder, so they survive restarts and are trivial to back up or share.

      Downloads take one of two paths, and the code picks per model:

      • Direct URL (the default) streams via aiohttp. It retries up to 5 times with backoff (capped at 60s), and it does one genuinely clever thing: it reads the first kilobyte of the response and bails with a readable error if the server returned an HTML "you need to authenticate" page instead of the file. That's the exact failure mode that makes people think their link is broken.
      • HuggingFace repository uses huggingface_hub, with resume_download=True so interrupted downloads pick up where they stopped, and a disk-space check via model_info before it commits. Tuning env vars exist too: PDM_MAX_RETRIES, PDM_RETRY_DELAY, PDM_DOWNLOAD_TIMEOUT, PDM_SNAPSHOT_WORKERS.

      What you actually set

      Nothing to wire - there are no inputs or outputs at all. Everything happens inside the manager UI, and only a few fields matter:

      • Direct URL - paste the https://huggingface.co/user/model/resolve/main/file.safetensors link. This is the README's recommended path for grabbing a single file.
      • Use HuggingFace Repository - flip this on instead and give a model ID (user/model) plus an optional Model Path like vae/vae.safetensors.
      • Save to Folder - standard ComfyUI folders (checkpoints, loras, vae, upscale_models) or a custom path.
      • HF API Token - only for private or gated models; tokens start with hf_. Public models need nothing.

      Installing it

      ComfyUI Manager handles it - search for "ComfyUI-PresetDownloadManager" or "Preset Download Manager" - or clone it by hand:

      cd ComfyUI/custom_nodes
      git clone https://github.com/Smyshnikof/ComfyUI-PresetDownloadManager
      

      Its dependencies are huggingface-hub>=0.34 and aiohttp>=3.8, which almost every ComfyUI install already has (ComfyUI's own server and model manager pull both in). So install is light, no heavy torch-adjacent deps. Restart ComfyUI and the node shows up under utils.

      Where people get burned

      • Leaving Model Path empty downloads the entire repository. A diffusers repo can be 10+ GB of files you mostly don't need. Give a specific file path if you want one file.
      • "Already exists" is judged by size, not integrity. A killed direct-URL download leaves a partial file behind, and the next run skips it as "already downloaded." If a file won't load after a failed download, delete it and re-fetch.
      • HF unreachable or slow? It retries on its own (up to 5), but if access is throttled in your region, the README suggests export HF_ENDPOINT=https://hf-mirror.com or a proxy.
      • Button not appearing after adding the node: refresh the page and check the browser console - it's a JS overlay, so a stale frontend cache is the usual culprit.

      Honest verdict: this is a niche quality-of-life tool from a small indie author (Smyshnikof, who you may recognize from GalaxyAce LoRA posts), with almost no community footprint - don't expect a support army. If you just need one checkpoint today, ComfyUI Manager's own model download does it with less ceremony. But if you rebuild machines or keep several setups in sync, a JSON preset list you can commit to a repo and replay with one click is a genuinely nice way to provision a fresh install.

      Categoryutils

      Inputs (0)

      No inputs

      Outputs (0)

      No outputs