ComfyUI Model Installer Scan Workflow
The Node That Reads Your Workflow's Mind and Lists Every Model It Needs
- assets_json
- count
You load a shared workflow, hit Queue, and ComfyUI silently reds out a loader because a model file doesn't exist on your machine. That's the missing-models half of ComfyUI dependency hell - ComfyUI Manager solves the missing-nodes half, but it can't install a checkpoint you don't have. ComfyUIModelInstallerScanWorkflow is the part of ComfyUI Model Installer that tells you which models you're missing, before you waste an afternoon discovering them one at a time.
Drop it on the canvas, and it reads the current workflow graph, digs out every model reference it can find, and hands you two outputs: assets_json - a pretty-printed JSON manifest of all detected assets - and count, the number of assets found. No inputs to set. No parameters to misconfigure. It's the closest thing to "export a shopping list of my workflow's models" that the ecosystem ships.
How it works
The node gets the entire workflow graph from ComfyUI through a hidden PROMPT input - you never see the wire, the framework just passes it in. Its run() then calls collect_assets(), the pack's scanner, which hunts for model references in three places:
properties.modelsmetadata - structured model info embedded in workflow nodes (name, URL, target directory). Highest confidence.- MarkdownNote / Model Links - note nodes titled something like "Model Links" or "Required Models" that contain URLs; it parses links and guesses the target folder.
- Inferred loader nodes - the workhorse. It knows the standard loaders and maps each to a folder:
CheckpointLoaderSimple→checkpoints,LoraLoader→loras,VAELoader→vae,CLIPLoader→text_encoders,UNETLoader→diffusion_models,ControlNetLoader→controlnet,UpscaleModelLoader→upscale_models, and more.
Results are deduplicated (metadata beats a note beats an inference) and sorted by folder. For inferred assets the URL is empty - that's expected; actual resolution to a download link happens in the pack's Model Installer panel, which uses a local cache, an optional known_models.json catalog, then Hugging Face search.
The outputs and what to do with them
assets_json(STRING) - the manifest, indented JSON. Wire it into aShow Textnode to eyeball it, or into any string consumer.count(INT) - number of assets. Handy for a quick conditional: a workflow withcount == 0has nothing the scanner recognizes, which usually means custom loader nodes, not "no models."
Realistic use: download someone's workflow, add this node, and know exactly what to fetch before you queue. It's also great for auditing your own workflows - you'll be surprised what undocumented LoRAs they quietly depend on.
Installing it
Same as the rest of the pack, done once:
- ComfyUI Manager - search for ComfyUI-Model-Installer, or
- Manually -
cd ComfyUI/custom_nodes && git clone https://github.com/arleckk/ComfyUI-Model-Installer, restart ComfyUI.
Dependencies are just requests and huggingface_hub from requirements.txt - no heavy install. Gated Hugging Face repos need an HF_TOKEN (or hf auth login) or you'll hit 401; public models don't.
Common issues
A count of 0 is the usual confusion - it doesn't mean your workflow has no models, it means the scanner didn't recognize any loader, metadata, or model-link note. Custom loader packs won't be inferred yet, so don't treat zero as proof of anything. Ambiguous model names can also resolve to no or wrong candidates; the pack shows a resolve dialog so you can pick manually, and confirmed picks get cached for next time. And remember: this node only reports. For the actual install, progress bars, and cancellation, you use the Model Installer button in the top bar - this node is the reconnaissance, the panel is the logistics.
Inputs (0)
No inputs
Outputs (2)
| Name | Type | Description |
|---|---|---|
| assets_json | STRING | — |
| count | INT | — |