Model Linker
Getting your missing models back
Every shared workflow breaks in two ways: nodes you don't have, and models you don't have. ComfyUI Manager answered the first one years ago - it reads the graph and installs the missing packs. The second one is still you, a dropdown, and forty filenames, trying to remember whether the workflow wants flux1-dev-fp8.safetensors when yours is named flux-dev-fp8-e4m3fn.safetensors.
Model Linker is the pack that fixes that. And the Model Linker node is the little two-button bookmark that pack leaves behind in a workflow it prepared for sharing.
The node is a deliberate no-op
There's no point wiring anything to it. Its INPUT_TYPES returns an empty required dict, RETURN_TYPES is empty, and its only function is literally called noop. It never runs as part of a prompt, so it never shows up in your queue and it can't slow anything down.
What it does is rendered client-side: the extension's nodeCreated hook adds two widgets to the node - Open Model Linker and Export… - and marks them unserialized so they don't end up in the workflow file. The real payload is its properties: cnr_id is set to comfyui-model-linker and aux_id to kianxyzw/comfyui-model-linker, which is how ComfyUI Manager recognises the pack when you open the workflow and offers to install it.
So if you opened a workflow and found this floating near the top-left of the canvas, someone ran the pack's Export tab on it. Click Open Model Linker and you're in the panel that fixes the rest.
Why the node exists at all
It's aimed at the ecosystem's single most-complained-about thing. You grab a workflow from a post - or load your own after switching from Windows to Linux - and every loader is red. ComfyUI's own missing-models list tells you which files aren't there; it can't tell you the one you have is the same file under a different name or in the wrong folder. Relinking by hand is boring, and models almost never travel with a shared workflow, because a workflow is just JSON.
How the matching actually works
When you load a workflow with gaps, the panel scans for model references in every node - including inside nested subgraphs - and scores your local files against them.
Filenames are normalised, then compared with rapidfuzz (falling back to Python's difflib if it's missing, which is noticeably worse). Precision and quantisation tokens - fp8, bf16, e4m3fn, Q4_K_M - count as the same model. A different parameter count or generation does not: a 4B is never suggested for an 8B. Path separators are normalised, so a Windows-authored workflow matches on Linux. Only 100% matches get auto-linked; everything else is a suggestion at 70% confidence or better that you approve by hand.
The neat bit is how it finds model fields in loader nodes it's never seen - GGUF nodes, LoRA Manager, whatever. It calls the node's INPUT_TYPES() with folder_paths.get_filename_list temporarily swapped for a tracer that hands back one marker filename per call. Whichever combo widget ends up holding a marker is, by construction, reading from that folder. No hardcoded node list, and it works even when the folder is empty. LoRAs in an rgthree Power Lora Loader are picked up too, with strength and on/off state shown.
For files you genuinely don't have, Download checks the URLs in the workflow, a bundled index of every Comfy-Org and Kijai HuggingFace repo file, a copy of Manager's model list, then online search. If the workflow carries a SHA-256, it's looked up on HuggingFace, CivitAI or CivArchive - which finds models that were renamed or deleted from CivitAI.
Installing it
Through ComfyUI Manager, search for Model Linker and install the pack, then restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/kianxyzw/comfyui-model-linker
cd comfyui-model-linker
pip install -r requirements.txt
The requirements are requests, aiohttp, rapidfuzz and huggingface_hub. All but rapidfuzz usually ship with ComfyUI already, and huggingface_hub is deliberately unpinned so installing never upgrades the copy transformers depends on. No model files to download.
Once it's in, the panel opens from ComfyUI's top menu bar, from Ctrl+Shift+L, or from the button it injects into ComfyUI's own Missing Models popup - plus the node's own buttons. It applies links to the live graph in place and leaves saving the workflow to you.
Where people get burned
Don't run an old build. Older versions had two real bugs, both in the "you're loading a stranger's workflow" threat model this tool lives in: a crafted filename could execute script in ComfyUI's page as soon as the dialog auto-opened, and a download link that merely contained "civitai.com" could be handed your saved token. Both are fixed; update anyway.
Gated HuggingFace models need a token. Paste a Read-scoped one into ⚙ Settings, or set HF_TOKEN in ComfyUI's environment, and accept the model's terms on its HF page once. Downloads never use a token cached by hf auth login.
Killed mid-download? Look for a hidden .model_linker_tmp_* folder next to the destination. That's a partial file, up to full model size. Safe to delete.
A "wrong folder" warning isn't a match. The file exists but sits somewhere that loader can't read from, so it's flagged rather than silently linked and left to fail at prompt time.
Restart after updating the pack, or the new version of the node type won't be registered and the Export tab will refuse to add it.
Inputs (0)
No inputs
Outputs (0)
No outputs