Load Checkpoint from URL (fal)
Loading a base model a remote worker can pull itself
- MODEL
- CLIP
- VAE
Every ComfyUI graph starts with a Load Checkpoint - the node that reads a full base model off disk and unpacks it into a MODEL, a CLIP, and a VAE. This is that node with the dropdown swapped for a URL. Instead of picking a file from models/checkpoints/, you paste a link, and the checkpoint gets downloaded at run time. Same three outputs, same role at the top of the graph; it just doesn't need the file to already be sitting on the machine.
It's part of the ComfyUI-fal-Connector, fal's system for running a ComfyUI workflow on their serverless GPUs. When you "Save as fal format" and POST the graph to fal.run/fal-ai/comfy-server, the remote worker is a fresh box with none of your local models. A checkpoint is a multi-gigabyte dependency, so this node hands the remote side a URL it can fetch on its own. That's the whole reason the node exists - remote execution needs remote-fetchable assets.
How it fits the graph
A checkpoint bundles three things a diffusion pipeline needs: the UNet/diffusion model (does the denoising), the CLIP text encoder (turns your prompt into conditioning), and the VAE (converts between pixels and latent space). This node returns all three from one file, exactly like the stock CheckpointLoaderSimple, so it drops into the same top-of-graph slot. The only difference from the reader's point of view is the input: a URL string instead of a filename.
Inputs and outputs
- ckpt_url (required) - a direct link to the checkpoint
.safetensors. Use the raw file URL, e.g.huggingface.co/<repo>/resolve/main/<model>.safetensors, not the repo's web page.
Three outputs - MODEL, CLIP, and VAE - the standard trio. MODEL and CLIP go into your sampler and CLIP Text Encode; VAE goes into your VAE Decode (or an Encode, for img2img). If you'd rather use a separate VAE, just leave this VAE output unwired and load one elsewhere.
One heads-up that'll save you a confused ten minutes: the default value in ckpt_url points at pixel-art-xl.safetensors, which is a LoRA, not a checkpoint. It's a placeholder, and loading it as a full checkpoint will fail. Always replace the default with a real base-model URL before you run.
Installing it
The connector arrives with fal's bundle, per the README:
git clone --recursive https://github.com/badayvedat/ComfyUI-fal.git
cd ComfyUI-fal
pip install -r requirements.txt
Then credentials in fal-config.ini: your fal API key, and - relevant for this node especially - the optional Hugging Face token, since a lot of base models live behind HF gates. The README calls out the path: that ini goes in ComfyUI-fal/custom_nodes/ComfyUI-fal-Connector/, not the repo root. Start with main.py.
Want just the node in a normal ComfyUI? ComfyUI Manager → search ComfyUI-fal-Connector, or cd ComfyUI/custom_nodes && git clone https://github.com/badayvedat/ComfyUI-fal-Connector, then restart. The connector downloads nothing itself; the checkpoint comes from whatever URL you give it.
Where people get burned
Three recurring ones. The URL must resolve to the actual file - a landing page or gallery link returns HTML and the load fails; grab the resolve/main/... raw link. Gated models on Hugging Face 401 unless the HF token is set in the config; this is the top "works on my machine, dies on fal" cause. And the default-value trap above: that placeholder LoRA URL is not a checkpoint, so a run that mysteriously errors on load is usually a ckpt_url you forgot to change. Beyond that, mind that checkpoints are big - the first remote run pays a real download cost while the file transfers, which is normal, not a hang.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_url | STRING | https://huggingface.co/nerijs/pixel-art-xl/resolve/main/pixel-art-xl.safetensors | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| VAE | VAE | — |