Model Download
A download button that lives inside the graph
- download_control
The worst part of the ComfyUI hobby has never been generation. It's the file hunting: you load a workflow, it wants flux2-vae.safetensors, and now you're alt-tabbing to a browser, pulling 4 GB into your Downloads folder, dragging it into the right subfolder, and praying you picked vae and not checkpoints. Model's Download collapses that into three text fields and a button that sits on the canvas.
What it is, and the weird part
It's an output node with no outputs. Nothing wires out of it - no MODEL, no path string, nothing. It's a terminal node whose entire job is to put a file on disk in the right place, and version 0.5 gutted everything else on purpose: no model_path or status outputs, no token input, no subfolder or revision widgets. Status, Details and Destination show up on the node, but they're read-only displays, not inputs. If you've seen an older tutorial wiring a path out of this thing, that's a pre-0.5 copy.
The three fields that matter
repo_id-owner/repository, e.g.black-forest-labs/FLUX.2-klein-base-9b-fp8. Not a URL. The code rejects anything that isn't exactly that shape.filename- the full path inside the repo, e.g.split_files/vae/flux2-vae.safetensors. This is the number one thing people get wrong. Comfy-Org's repackaged repos keep the upstreamsplit_files/…tree, so you need the whole path, not just the basename. The file lands under its basename locally.category- nine choices that map straight onto ComfyUI's registered model folders:diffusion_models,text_encoders,vae,loras,checkpoints,controlnet,clip_vision,upscale_models,embeddings. Pick the folder; that's where it goes.download_control(optional) - theORELS_DOWNLOAD_CONTROLsocket that Download All drives. Leave it unconnected and the node's own button works fine.
The pack ships presets for the FLUX.2 Klein stack: Klein Base 9B FP8, the Qwen text encoder, and the FLUX.2 VAE. Worth knowing that Klein 9B carries a non-commercial license - and that accepting a gated repo's terms is a separate act from having a token.
How it actually works
It's not a one-line hf_hub_download wrapper, and the difference is what makes it safe to keep in a workflow. The download lands in a hidden staging folder inside the target model directory, and only then is the finished file hard-linked (os.link) into place - atomic, same-volume, and physically incapable of overwriting something. A .orels.json receipt recording the source and size is written next to it. Two concurrent downloads, max. And crucially: Queue/Run never starts a download. Only the buttons do. That's why you can share a workflow with this node in it without your friend accidentally pulling 15 GB.
Install
ComfyUI Manager → search Orel's Nodes (registry publisher darkorel). Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/DarkOrel/Orels-Nodes orels-nodes
python -m pip install -r orels-nodes/requirements.txt
That's huggingface_hub and filelock, nothing exotic. Restart ComfyUI, then hard-refresh the browser. If you have older copies lying around (Orels_Nodes, orels-nodesv2), move them out of custom_nodes first - 0.5 unified the node IDs, and split copies make the Extensions panel claim ownership twice.
Where people get burned
401/403 on a gated repo. Accept the repository agreement on the HF page, logged into the same account as your token, then set the token with the Hugging Face Token node (or HF_TOKEN in the server environment). The token itself never grants license access.
"This model volume does not support atomic hard-link installation." That's exFAT, SMB or some network mounts. Weight storage needs a real Linux filesystem, or you'll get an obscure errno instead of a downloaded model.
"Existing file belongs to another source." If a receipt is present and its recorded source or size no longer matches, the node refuses. Rename the requested file or move the old one aside. Nothing here ever overwrites.
"Repository or filename not found." Nine times out of ten it's a missing split_files/ component. Copy the exact path from the repo's Files tab.
Is it the right tool for a one-off local install? Honestly, plain hf CLI is fine. The value shows up on a remote box, where you can't drag files into anything - though remember the node only downloads to wherever ComfyUI thinks its folders are. On RunPod, that's ephemeral container storage unless you've mounted a volume.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| repo_id | STRING | black-forest-labs/FLUX.2-klein-base-9b-fp8 | — |
| filename | STRING | flux-2-klein-base-9b-fp8.safetensors | — |
| category | COMBO | 9 options: diffusion_models, text_encoders, vae, loras, checkpoints, controlnet, +3 | |
| download_controlopt | ORELS_DOWNLOAD_CONTROL | — |
Outputs (0)
No outputs