Advanced
Plugin Management
Advanced guide to managing ComfyUI plugins — mapping nodes to repos, handling migrations, and avoiding common traps.
Beyond basic custom node installation, managing plugins in a production ComfyUI environment requires understanding node mapping, repo migrations, Git LFS issues, and plugin lifecycle management.
Mapping Missing Nodes to Plugins
When a workflow shows red/missing nodes, you need to figure out which plugin provides them. This is harder than it sounds.
The Lookup Priority
Follow this order — don't jump straight to searching GitHub:
Check
cnr_id— Open the workflow JSON and look forcnr_idin node data. This is the ComfyUI Node Registry ID and is the most reliable pointer.Check
Node name for S&R— The "Search and Replace" name in the workflow JSON often maps directly to a plugin.Check existing
custom_nodes/— The plugin might already be installed but failed to import. Check startup logs forIMPORT FAILED.Check ComfyUI-Manager's database — Manager maintains
extension-node-map.jsonandcustom-node-list.jsonwithnodename_patternrules that can match node families (e.g., all nodes ending with(rgthree)belong torgthree-comfy).Search GitHub — Last resort. Be careful of forks and abandoned repos.
Common Mapping Traps
| Trap | Example | How to Avoid |
|---|---|---|
| Same node, different repos | ApplyFBCacheOnModel is from Comfy-WaveSpeed, not WaveSpeedAI/wavespeed-comfyui |
Always verify by checking the plugin's actual exported node list |
| Repo migration | ComfyUI-LBMWrapper moved from ratatule2/ to kijai/ |
Check if the old URL redirects or is archived |
| Platform-native nodes | LibLibOptions, LibLibVision are Liblib cloud platform nodes |
No local plugin exists — classify as platform_native, don't try to install |
| Stale cnr_id | Workflow contains an old cnr_id pointing to a dead repo |
Override with current known-good repo URL |
Handling Node Name Changes
Plugins update and rename their nodes. When this happens, old workflows break.
Example: InpaintCrop → InpaintCropImproved
Solutions (in order of preference):
- Update the workflow — Change the node type in the JSON file
- Add an alias — In the plugin's
__init__.py, map the old name to the new implementation:
NODE_CLASS_MAPPINGS = {
"InpaintCropImproved": InpaintCropImproved,
"InpaintCrop": InpaintCropImproved, # legacy alias
}
Plugin Health Checks
"Plugin directory exists" is NOT the same as "plugin works". A healthy plugin must pass:
| Check | What It Means |
|---|---|
Directory exists in custom_nodes/ |
Plugin was downloaded |
.git directory is intact |
Plugin can be updated via git pull |
| Source files are real code, not Git LFS pointers | Plugin can actually be imported |
No IMPORT FAILED in startup logs |
Python can load the plugin |
Node appears in /object_info |
ComfyUI has registered the node |
The Git LFS Trap
Some plugin repos use Git LFS for their source code (not just models). If you clone with GIT_LFS_SKIP_SMUDGE=1 (recommended to avoid downloading large files), the .py files may be LFS pointers instead of real code:
version https://git-lfs.github.com/spec/v1
oid sha256:abc123...
size 12345
How to fix: Download the actual source files from the GitHub web interface, or run git lfs pull in the plugin directory (this will also download any large files in the repo). If this causes dependency issues, you may need to selectively restore only source files.
Plugin Isolation by Workflow Batch
When managing multiple workflow batches with different plugin needs, keeping all plugins active creates problems:
- Unrelated plugins add startup time
- Network-dependent plugins (BizyAir, etc.) cause retry loops
- More plugins = more dependency conflicts
Strategy: Active/Disabled separation
custom_nodes/ ← Active plugins (current batch needs these)
disabled_custom_nodes/ ← Inactive plugins (moved out of active directory)
Move plugins you don't need for the current batch to disabled_custom_nodes/. ComfyUI won't load them. This also reduces dependency conflicts between unrelated plugins.
Batch Installation Best Practices
When setting up plugins for a new set of workflows:
- Scan first — List all missing nodes across all workflows
- Group by plugin — Multiple missing nodes often come from the same plugin
- Install in batches — Add 3-5 plugins at a time, restart between batches
- Check after each batch — If something breaks, you know which plugin caused it
- Clone efficiently:
# Fast: shallow clone without large files
GIT_LFS_SKIP_SMUDGE=1 git clone --depth 1 --filter=blob:none --single-branch <repo-url>
# If the above fails, try without filter
GIT_LFS_SKIP_SMUDGE=1 git clone --depth 1 --single-branch <repo-url>
# Last resort: full clone
git clone <repo-url>
Updating Plugins Safely
cd custom_nodes/<plugin-name>
git pull
pip install -r requirements.txt # if exists
Before updating, check if the update changes node names or removes nodes your workflows use. Read the plugin's changelog or commit messages.
After updating, restart ComfyUI and verify your workflows still load correctly.
Related Guides
- Custom Nodes — Basic installation guide for beginners
- Workflow Environment Setup — Full 7-stage SOP for complex environments
- Dependency Conflicts — When plugin installs break your Python environment
- Troubleshooting Decision Tree — Systematic diagnosis of any ComfyUI issue
Need Help?
Plugin management in complex environments is exactly what our remote fix service handles. If you're dealing with missing nodes, repo migrations, or plugin conflicts, we can resolve it live.
Wonderful Launcher Docs