External Checkpoint (ComfyUI Deploy)
Let API callers pick the checkpoint — or hot-download one from a URL
- path
Most deployed ComfyUI workflows pin one checkpoint and never let the caller near it - and that's smart, because checkpoints are multi-gigabyte files and letting randos swap them is a recipe for broken runs. "External Checkpoint" is the version of that input for when you do want the model selectable. It exposes a dropdown of the checkpoints installed on the machine, and it can even download a checkpoint from a URL on the fly, returning the filename for your loader node.
The output is a path string in the * wildcard type, so it plugs straight into a checkpoint loader. Choose from the dropdown in the editor, or have ComfyDeploy pass a model name per request - same shape either way. This is the input you reach for when you're serving a "pick your model" API or letting a client choose between a photoreal and an anime checkpoint without shipping two separate deployments.
How it works
Two modes, decided by what the value is. If the value starts with http, the node treats it as a direct link, downloads it to your models/checkpoints folder with a random uuid filename, and returns that filename so the loader picks it up. If the value is anything else, it's assumed to be the name of an installed checkpoint, and it's returned as-is.
Inputs and output
input_id- defaultinput_checkpoint. The key callers use to address this input.default_value- an enum populated from the checkpoints actually installed on the machine (or a URL string).- Optional:
display_name,description.
Output: path (wildcard *), wired into your checkpoint loader.
Installing it
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/BennyKok/comfyui-deploy.git
Restart ComfyUI, or install "ComfyUI Deploy" via ComfyUI Manager. No models bundled with the pack - the dropdown only lists what's already in your models/checkpoints folder.
Where people get burned
This node has the pack's sharpest footgun, and it's the URL mode: every request that downloads a checkpoint gets a fresh uuid filename, with no save-name check. That means a workflow that pulls a 6 GB checkpoint from a URL on every call re-downloads all 6 GB each time and slowly fills your checkpoints folder with orphaned duplicates. Compare that with the LoRA and face-model nodes in this same pack, which let you pin a save name and skip re-download if it already exists - the checkpoint node has no such option. If you're hot-downloading checkpoints, treat it as a "warm the cache once" path, not a per-request pattern, or you'll burn bandwidth and disk in equal measure.
Second, the wildcard path output means ComfyUI won't complain if you wire it into the wrong thing. If the loader downstream rejects it, check you're actually handing it a filename in the checkpoints folder, not a URL - the URL gets consumed here and only the saved filename comes out.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| input_id | STRING | input_checkpoint | — |
| default_valueopt | COMBO | 0 options: | |
| display_nameopt | STRING | — | |
| descriptionopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| path | * | — |