You found a workflow on Civitai or OpenArt, dragged it into ComfyUI, and half the graph turned red. Or it loaded and then stopped at the first loader with “Value not in list”. Both are normal: a ComfyUI workflow file is only the graph, meaning nodes, links and settings. The custom nodes, model files and versions the author used are not inside it, and each of them has to match on your machine.
Below is the checklist we use when a client sends us a workflow from Civitai, OpenArt or GitHub, in the order we go through it.
Where the workflow lives: JSON, image or zip
Downloaded workflows come in three shapes:
- A
.jsonfile. The standard save format with the full graph and its layout. Drag it onto the canvas or use File → Open. - A zip archive. Civitai lists workflows as a separate resource type, usually downloaded as an archive with one or more
.jsonfiles inside, sometimes with notes or sample images. - An image or video with the graph embedded. ComfyUI’s built-in save nodes write the workflow into the file’s metadata: PNG text chunks, animated WebP, MP4 and WebM. Drop the file onto the canvas and ComfyUI rebuilds the graph from it.
Two catches. First, re-encoding strips metadata: saving in an editor, compressing in a messenger, converting on upload. If ComfyUI loads your dropped image as a plain image, the graph is gone; ask the author for the .json or the original file.
Second, there are two JSON formats. The UI format is what you open and edit. The API format (File → Export Workflow (API)) keys nodes by numeric ID and drops positions, colors and groups, since it is meant for scripts. It still loads in the UI without layout, so take the UI version when both are offered.
Before installing anything, read the author’s description: good authors list the models, LoRA versions and node packs they used, sometimes even the ComfyUI version.
Missing custom nodes: ComfyUI-Manager and its limits
Red nodes and a “the following node types were not found” message mean ComfyUI does not know those node classes. There are two cases:
- A core node is missing. The workflow was built on a newer ComfyUI than yours. Update ComfyUI itself.
- A custom node is missing. The workflow uses a third-party node pack you have not installed.
ComfyUI-Manager handles the second case. It now ships inside ComfyUI core: the desktop app has it enabled, while portable and manual installs need its requirements and the --enable-manager launch flag. In the legacy Manager interface the button is Install Missing Custom Nodes. In the new interface, opening a workflow with missing nodes shows a prompt with Install All and Open Manager, and the node list has a filter for missing nodes.
After installing, restart the ComfyUI server. Refreshing the browser tab does not load new Python code.
Manager does not solve everything:
- It only resolves packs it knows about. If a node stays unresolved, search its class name on GitHub.
- Two packs can register nodes with the same name. You need the one the author actually used.
- A pack can be installed and still fail to load. In the startup log,
(IMPORT FAILED)next to the pack’s folder means its Python import crashed, and the traceback above explains why.
Versions, Python dependencies and pinned commits
Each custom node pack brings its own requirements.txt, and pip installs it into the same Python environment as ComfyUI. One pack can upgrade or downgrade a library that other packs rely on: numpy, transformers and opencv are frequent offenders. Packs with compiled code also need builds that match your PyTorch and CUDA versions.
The other trap is time. The workflow was saved against the pack version the author had that week; today’s version may rename an input or add a widget. Widget values are stored by position, so one new widget can push values into the wrong fields. The graph opens, but validation fails or the output quietly changes.
That is why we pin versions. For a pack installed from git:
cd ComfyUI/custom_nodes
git clone https://github.com/<author>/<repo>.git
cd <repo>
git checkout <commit> # the commit the workflow was built with
pip install -r requirements.txt # in ComfyUI’s Python environment
If you work through Manager, press Save snapshot before experimenting (Update All saves one automatically). Restore brings that state back on the next ComfyUI start; for packs not installed through git, restore is incomplete.
Also remember that a custom node is ordinary Python code running with ComfyUI’s permissions. In 2024 the ComfyUI_LLMVISION pack was caught pulling in malicious dependencies that stole browser passwords. Install packs from repositories you can inspect.
Missing models: which folder, which file, which version
A loader node stores a file name, usually without a link or a hash. ComfyUI looks for that name in the folder for the model type:
Folder in ComfyUI/models/ | What goes there | Typical loader node |
|---|---|---|
checkpoints | Full checkpoints: model, text encoder and VAE in one file | Load Checkpoint |
diffusion_models (older name unet) | The diffusion model alone, e.g. Flux or WAN weights | Load Diffusion Model |
text_encoders (older name clip) | Text encoders: CLIP, T5 and similar | Load CLIP, Load CLIP (Dual) |
vae | VAE | Load VAE |
loras | LoRA | Load LoRA |
controlnet | ControlNet models and T2I adapters | Load ControlNet Model |
clip_vision | Image encoders | Load CLIP Vision |
upscale_models | ESRGAN-style upscalers | Load Upscale Model |
embeddings | Textual inversion embeddings | Referenced in the prompt |
Custom loader nodes sometimes read their own folders; the pack’s README says which. If your models are stored elsewhere, extra_model_paths.yaml maps extra directories. After adding files, press r in the UI to refresh the lists, or restart ComfyUI.
Finding the exact file
The file name in the node is your main lead, and names are not unique. The same model often exists in several versions and precisions (fp16, fp8, pruned) with near-identical names. Our routine:
- Start from the author’s description and the list of resources on the workflow page.
- On the model page, pick the exact version. On Civitai, the selected version’s ID appears in the page URL (
?modelVersionId=). - Compare hashes. Civitai and Hugging Face both show a file’s SHA256; check your copy locally (
sha256sum model.safetensorson Linux). - Have a file and no idea what it is? Civitai can look it up:
https://civitai.com/api/v1/model-versions/by-hash/<sha256>returns the model and version, if Civitai hosts it.
Watch the subfolder. If the author kept a model in models/loras/flux/, the node stores flux/name.safetensors, and the same file at the root of loras will not match. Workflows saved on Windows store such paths with a backslash. Reselecting the file in the node’s dropdown fixes both.
Check the base model as well. A LoRA trained for one base model will not work properly on another; ComfyUI prints lora key not loaded lines in the log when the keys do not match. And prefer .safetensors: the older .ckpt and .pt formats use Python pickle, which can execute code when the file is loaded.
Gated models: Civitai API keys and Hugging Face tokens
Downloading in a browser is easy. Downloading straight to the GPU server where ComfyUI runs needs tokens.
Civitai. Many files download anonymously, but some require a logged-in user. For scripts, create an API key in your Civitai account settings and send it in the Authorization: Bearer header. The ?token= URL parameter also works, but Civitai’s docs discourage it because the key ends up in logs.
curl -L -H "Authorization: Bearer $CIVITAI_TOKEN" \
-o ComfyUI/models/loras/<file>.safetensors \
"https://civitai.com/api/download/models/<versionId>"
Hugging Face. Gated repositories such as FLUX.1 [dev] ask you to accept the author’s conditions on the model page while logged in. Access is granted automatically or after the author’s review, and the author can revoke it. Then download with a user access token from your Hugging Face settings, via hf auth login on the machine or the same Bearer header:
curl -L -H "Authorization: Bearer $HF_TOKEN" \
-o ComfyUI/models/diffusion_models/<file>.safetensors \
"https://huggingface.co/<org>/<repo>/resolve/main/<file>"
Keep tokens out of workflow files, shared notebooks and screenshots. If a Civitai page will not open for you, check whether the author also published the model on Hugging Face. Some do; confirm it is the same file by its SHA256.
Workflow not loading or failing: common errors
Most failures come down to a handful of messages. Read the ComfyUI console as well as the browser popup: the console has the full traceback.
| Message | Usual cause | What to do |
|---|---|---|
| Red nodes, “the following node types were not found” | Pack not installed, or server not restarted | Install the pack, restart the server |
(IMPORT FAILED) in the startup log | Pack dependencies failed to install or conflict | Read the traceback, fix the library version, pin the pack |
| “Prompt outputs failed validation”, “Value not in list” | Model file missing, renamed or in another subfolder | Put the file in the right folder, refresh, reselect it in the node |
| “Required input is missing” | An input is not connected, often after a pack update added one | Connect it, or pin the pack version the author used |
Could not detect model type | Wrong loader (a diffusion-only file in Load Checkpoint) or a broken download | Use the right loader, check the hash |
mat1 and mat2 shapes cannot be multiplied | Usually a text encoder, VAE or CLIP Vision that does not match the model | Use the exact files from the author’s list |
lora key not loaded in the log | LoRA made for a different base model | Get the LoRA version for your base model |
| Out of memory: “you ran out of memory on your GPU” | Resolution, batch size, frame count or precision too heavy for your VRAM | Lower them; try fp8 or GGUF builds (GGUF needs its own loader pack), VAE Decode (Tiled), or a bigger GPU |
| A recent workflow opens broken | Old ComfyUI or frontend (subgraphs need frontend 1.24.3+) | Update ComfyUI |
Can you use the result commercially?
Getting a workflow to run and being allowed to sell its output are separate questions. The workflow, the checkpoint and each LoRA can carry their own license, and some forbid commercial use. Details are in a separate guide: can you use Civitai models commercially.
How we run client workflows
Clients send a Civitai, OpenArt or GitHub link or their own .json, plus the task, the inputs and the volume. The team then does everything above by hand:
- reads the graph and lists every node and model it needs; unknown nodes and models without a version are checked manually before anything runs;
- installs custom nodes from git at pinned commits, so the setup does not drift mid-order;
- takes models from Hugging Face, Civitai or a direct link you provide;
- tells you before the start if a model is paid, closed or licensed for non-commercial use only;
- makes a trial batch for your approval, then runs the volume on our own or rented GPUs, reviews the output manually and removes defects;
- delivers a ZIP archive or a link to a folder.
Scaling a working workflow to thousands of runs is a separate topic: how to scale a ComfyUI workflow.
When it’s easier to hand it to us
For a handful of images, the checklist above is enough. If you need hundreds or thousands of images or videos from one template, your GPU lacks the VRAM, or you would rather not spend days on dependencies, send us the workflow. Setup and the trial batch are part of the order. Images start from $0.10 each, videos from $1.50 each, and the minimum order is $50. Details are on the ComfyUI workflow service page, or send a request with a link to your workflow.