Nodes/Symbiotica/NS Workflow Model Downloader
ComfyUI Node

NS Workflow Model Downloader

Find Every Missing Model in a Downloaded Workflow — and Fetch It

By symbiotica-ai·Created 6 months ago·Updated about 13 hours ago· 2
NS Workflow Model Downloader
    • report
    workflow_json_path
    auto_downloadfalse
    llm_model_lookup

    You know the loop. You grab a workflow JSON off the internet, drag it into ComfyUI, and the console lists eleven missing nodes and four missing model files, none of which match the filename you searched for. NS Workflow Model Downloader is the "why does no downloaded workflow work" fix for the model half: it reads the workflow's JSON, lists every checkpoint, LoRA, VAE, CLIP, ControlNet and upscaler it references, checks which ones you actually have, and - if you ask it to - downloads the missing ones into the right folders.

    It's a small utility node from the Symbiotica pack, but it's pack-agnostic: it knows the standard ComfyUI loader node types, not Symbiotica's own nodes. Think of it as a "missing models detector" that sits in your graph instead of living in a tool you have to run separately.

    How it works

    The node parses the workflow JSON three ways and merges the results:

    1. Structured loader parsing. It knows the standard loaders - CheckpointLoaderSimple, UNETLoader, VAELoader, CLIPLoader, DualCLIPLoader/TripleCLIPLoader, LoraLoader, UpscaleModelLoader, ControlNetLoader, GLIGENLoader, StyleModelLoader, CLIPVisionLoader, HypernetworkLoader, even LTX-Video's Gemma loader and a few audio-separation loaders - and which ComfyUI folder each writes to (checkpoints, diffusion_models, vae, loras, text_encoders, controlnet, …). It even walks inside subgraphs, which most naive scanners miss, and handles rgthree's Power Lora Loader.
    2. Deep string scan. Anything that looks like a model filename (.safetensors, .ckpt, .pth, .gguf, …) anywhere in the JSON gets flagged, with the target folder guessed from the name - so a loader this node doesn't recognize still gets caught.
    3. Embedded URL extraction. It hunts for properties.models[] entries that carry their own url, which is how some packs attach download links right inside the workflow.

    Then it checks each filename against ComfyUI's real model folders (via folder_paths) and reports what's missing. With auto_download on, it fetches them - using HuggingFace Hub when the URL is an HF link, a streamed HTTP download otherwise - and cleans up partial downloads if one fails.

    The inputs and output

    • workflow_json_path - the absolute path to the workflow .json file. There's no file browser; paste the full path.
    • auto_download - off by default, which is the safe move: the node only scans and reports until you flip this on. You want it off the first run anyway, so you can read the report and see what's about to land on your disk. Some of these files are multi-gigabyte.
    • llm_model_lookup - the clever bit. For models that have no embedded URL, you can paste an LLM's JSON response containing the download URLs; the node folds those in. The report tells you the expected format. This is how you close the gap for workflow files whose models have no URL attached.

    The single output is report (STRING) - it's an output node, so you run it and read the text in the node's preview.

    Install

    ComfyUI Manager → search Symbiotica → install, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
    pip install -r symbiotica/requirements.txt
    

    Restart ComfyUI after. The dependencies are light (requests, pillow), though if a model URL points at HuggingFace the node will happily use huggingface_hub if it's already in your environment - otherwise it falls back to plain HTTP and works fine.

    Common issues

    • "No model references found." Either the path was wrong (it returns an error string if the file isn't there) or the workflow genuinely uses only loaders this node doesn't map. The deep scan usually catches strays, but a workflow saved in a nonstandard format may slip through.
    • Downloads that never finish. Some model files are huge and the HTTP path is unthrottled. It streams and prints a percentage to the console, so a big checkpoint taking a while is normal. If it fails, it deletes the partial file rather than leaving you a corrupt one.
    • It downloaded but the workflow still errors. The node puts files where it thinks they belong, but a workflow that references a subfolder path may not line up with the flat filename it fetched. Check the report's target paths and move the file if the loader still can't see it.

    It won't fix missing nodes - only models - and it's only as good as the URLs it can find. But for the common "I downloaded a workflow and half the checkpoints are red" case, it turns an hour of hunting into one queue press.

    Categoryneuralsins/utils

    Inputs (3)

    NameTypeDefaultDescription
    workflow_json_pathSTRINGAbsolute path to the workflow .json file
    auto_downloadBOOLEANfalseAutomatically download models that have known URLs. When off, only scans and reports.
    llm_model_lookupoptSTRINGOptional: paste LLM response with download URLs as JSON (see report output for format)

    Outputs (1)

    NameTypeDescription
    reportSTRING