Nodes/comfyui-server-downloader/Server Downloader Helper
ComfyUI Node

Server Downloader Helper

Download missing models straight onto the ComfyUI server

By LittleLollipop·Created 5 months ago·Updated 4 months ago· 0
Server Downloader Helper

      First thing to know, because it will save you ten minutes of staring at the node menu: this is not a node you place on a canvas. ServerDownloader has zero inputs and zero outputs - its class is literally a noop whose only job is to register the pack. The real work happens invisibly: the pack installs a couple of HTTP routes on your ComfyUI backend and a browser extension that patches the "Missing Models" dialog. Search the node list for "Server Downloader Helper" and you'll find a graph node that does nothing if you drag it out; the thing you actually want is the button it injects elsewhere.

      Here's the problem it solves. When you load a workflow whose checkpoint, LoRA, or VAE isn't on the machine, ComfyUI pops up a "Missing Models / 缺失模型" dialog with a download link. That's fine on your own PC. It's a nightmare when ComfyUI runs on a remote box - a RunPod rental, a home server, a headless box - because that dialog's download button pulls the model into your browser's download folder, not the server's models/ directory. So you grab 6 GB on your laptop, then upload it back over a slow pipe, or you SSH in and hand-curl every missing file. This node kills that round trip: it adds a "⬇ Server Download" button right next to the existing one, and the server downloads the file itself, straight into the right folder.

      How it works

      The mechanism is a textbook ComfyUI extension split, and it's grounded in the code, not vibes:

      • The backend (server_downloader.py) registers five routes on PromptServer: POST /server_downloader/download kicks off the download as an async aiohttp task, GET /status/{task_id} reports progress, POST /cancel/{task_id} cancels, and GET /list_types returns the real registered model directories from folder_paths so the dialog's type dropdown isn't a hardcoded lie.
      • The frontend (web/js/server_downloader.js) runs a MutationObserver on the DOM. When a "Missing Models" dialog appears, it finds the Download button and inserts "⬇ Server Download" beside it.
      • Click that button and it tries to auto-extract the URL, filename, and model type from the dialog row (and your clipboard), then shows you a small form to confirm. Nice touch: the frontend rewrites HuggingFace blob/ links to resolve/, because blob is a viewer page, not the actual file.

      The inputs that matter

      There aren't any - no info_schema fields, no widgets, no sockets. What you actually set is the dialog the button opens: Download URL, Save Filename, and Model Type (which maps to a directory under models/, defaults to checkpoints, and includes a "custom type" escape hatch). That's the whole interface.

      Installing it

      Grab it in ComfyUI Manager (search comfyui-server-downloader), or the manual way:

      cd ComfyUI/custom_nodes
      git clone https://github.com/LittleLollipop/comfyui-server-downloader.git
      

      Then restart ComfyUI. No requirements.txt, no model files, no GPU footprint - it depends only on aiohttp, which ComfyUI already ships. The whole pack is one Python file plus one JS file.

      Where people get burned

      • Button not appearing after an update. Restart the backend, then hard-refresh the browser (Ctrl+Shift+R / Cmd+Shift+R), and confirm [ServerDownloader] loaded in the console. The frontend script is cached aggressively.
      • A button that shows "No URL" (or opens with an empty URL). The extension scrapes the dialog's DOM to find the download link, and some frontend versions bury that link deeper than it can reach - it then falls back to your clipboard, so copy the URL first. This is the pack's own acknowledged weak spot.
      • The download dies at HTTP 4xx/5xx. The server needs outbound access to Civitai or HuggingFace; a firewall-adjacent server will fail here where your laptop wouldn't.
      • Security, and this is the real one. You're adding unauthenticated endpoints to a ComfyUI instance that can download arbitrary URLs into its models directory. On an exposed server with no auth - the exact setup this node is for - that's a disk-filling and phishing-adjacent hole. Only run it on a box that isn't publicly reachable without credentials.

      The honest verdict

      If ComfyUI lives on the same machine you browse from, this saves you nothing and you can skip it. If your models live on a rented or remote box, it's the difference between "download, then scp back up" and one click. Small, sharp, and worth a handful of the minutes it takes to install - for one specific kind of user.

      CategoryServerDownloader

      Inputs (0)

      No inputs

      Outputs (0)

      No outputs