Managing Custom Nodes¶
View, update, remove, and clean up custom nodes in your environment.
Overview¶
Once you've added custom nodes, ComfyDock provides commands to manage their lifecycle:
- List - View all installed nodes with version info
- Update - Pull latest changes from repositories
- Remove - Uninstall nodes (single or batch)
- Prune - Clean up unused nodes automatically
Listing installed nodes¶
View all custom nodes in your environment:
Example output:
Custom nodes in 'my-project':
âĸ comfyui-impact-pack (registry) @ abc12345
âĸ comfyui-controlnet-aux (git) @ def67890
âĸ my-custom-node (development) (dev)
Understanding the output¶
Each line shows:
- Node name - The registry ID or directory name
- Source type - Where the node came from:
registry- Installed from ComfyUI registry lookupgit- Installed directly from GitHub URLdevelopment- Local development node tracked with--dev- Version - The git commit hash (short form) or
(dev)for development nodes
When no nodes are installed¶
This means your environment only has ComfyUI's built-in nodes.
Updating nodes¶
Update a node to the latest version from its repository:
What happens:
- Git pull - Fetches latest changes from the node's repository
- Dependency scan - Checks for updated
requirements.txt - Dependency update - Installs any new or updated Python packages
- Version update - Updates the commit hash in pyproject.toml
Example output (changes detected):
đ Updating node: comfyui-impact-pack
â Updated to commit abc1234 (10 commits ahead)
Run 'cfd status' to review changes
Example output (no changes):
Auto-confirm updates¶
Skip the confirmation prompt with --yes:
Useful for scripting or CI/CD pipelines.
Skip resolution testing¶
By default, ComfyDock tests that updated dependencies don't conflict. Skip this with:
Updating development nodes¶
Development nodes have a different update behavior:
For development nodes:
- Does not run
git pull(you manage git yourself) - Does re-scan
requirements.txtand sync dependencies - Shows what dependencies were added or removed
Example output:
đ Updating node: my-custom-node
â Development node dependencies synced
Added dependencies:
+ opencv-python>=4.8.0
Removed dependencies:
- pillow<9.0.0
Run 'cfd status' to review changes
When to update development nodes
Run cfd node update <dev-node> when you:
- Change
requirements.txtin your dev node - Want ComfyDock to sync dependencies to your environment
- See "Dev node updates available" in
cfd status
Removing nodes¶
Remove custom nodes from your environment:
What happens:
- Removes from pyproject.toml - Node configuration deleted
- Deletes directory - Removes
custom_nodes/ComfyUI-Impact-Pack/ - Preserves in cache - Node is cached globally and can be reinstalled quickly
Example output:
đ Removing node: comfyui-impact-pack
â Node 'ComfyUI-Impact-Pack' removed from environment
(cached globally, can reinstall)
Run 'comfydock -e my-env env status' to review changes
Batch removal¶
Remove multiple nodes at once:
Output:
đ Removing 3 nodes...
[1/3] Removing comfyui-impact-pack... â
[2/3] Removing comfyui-controlnet-aux... â
[3/3] Removing comfyui-video-helper-suite... â
â
Removed 3/3 nodes
Run 'comfydock -e my-env env status' to review changes
Removing development nodes¶
Development nodes are handled differently:
Output:
đ Removing node: my-custom-node
âšī¸ Development node 'my-custom-node' removed from tracking
Files preserved at: custom_nodes/my-custom-node.disabled/
Development nodes are:
- Removed from tracking - No longer in pyproject.toml
- Directory renamed - Moved to
.disabledsuffix to prevent ComfyUI from loading it - Not deleted - Your code is preserved
Why preserve development nodes?
ComfyDock assumes you want to keep local development work. The directory is disabled (renamed) so ComfyUI won't load it, but your code remains intact.
Remove development nodes with --dev flag¶
Explicitly remove a development node:
This has the same behavior as regular removal of dev nodes (renames to .disabled).
Pruning unused nodes¶
Remove all nodes that aren't used by any tracked workflow:
What it does:
- Analyzes all workflows in your environment
- Identifies nodes not referenced by any workflow
- Prompts for confirmation
- Removes unused nodes
Example output:
Found 2 unused node(s):
âĸ comfyui-old-pack
âĸ comfyui-experimental-feature
Remove 2 node(s)? [y/N]: y
đ Pruning 2 unused nodes...
[1/2] Removing comfyui-old-pack... â
[2/2] Removing comfyui-experimental-feature... â
â Removed 2 node(s)
Auto-confirm pruning¶
Skip the confirmation prompt:
Exclude specific nodes¶
Keep certain nodes even if unused:
This removes unused nodes except the excluded ones.
When no unused nodes exist¶
All installed nodes are referenced by at least one workflow.
When to use prune
Use cfd node prune when:
- Cleaning up after testing many nodes
- Reducing environment size before export
- Keeping only workflow-essential nodes
- Preparing a production environment
Viewing node status¶
The cfd status command shows node-related information:
Example output:
Environment: my-project â
đĻ Nodes (3 installed):
â comfyui-impact-pack @ abc1234
â comfyui-controlnet-aux @ def6789
â comfyui-old-node @ ghi0123 (update available)
đ§ Dev node updates available:
âĸ my-custom-node
Status indicators¶
- â Green checkmark - Node installed and up to date
- â Warning - Update available or issue detected
- Dev node updates - Development node
requirements.txtchanged since last sync
Syncing development node changes¶
When you see "Dev node updates available":
This re-syncs the node's dependencies to your environment.
Node types explained¶
ComfyDock tracks three types of nodes:
Registry nodes¶
- Source: ComfyUI registry lookup
- Management: Full ComfyDock control (update, remove)
- Version tracking: Git commit hash
- Listed as:
comfyui-impact-pack (registry) @ abc1234
Git nodes¶
- Source: Direct GitHub URL
- Management: Full ComfyDock control
- Version tracking: Git commit hash
- Listed as:
custom-node (git) @ def5678
Development nodes¶
- Source: Local development directory
- Management: You handle git, ComfyDock handles dependencies
- Version tracking: Marked as
dev - Listed as:
my-local-node (development) (dev)
Common workflows¶
Update all nodes¶
ComfyDock doesn't have a built-in "update all" command, but you can script it:
# List node names and update each
cfd node list | grep 'âĸ' | awk '{print $2}' | while read node; do
cfd node update "$node" --yes
done
Use with caution
Updating all nodes at once can introduce breaking changes. Test in a non-production environment first.
Clean up after workflow testing¶
# Remove unused nodes after experimenting
cfd node prune --yes
# Commit the cleanup
cfd commit -m "Pruned unused nodes"
Temporarily disable a node¶
Instead of removing:
# Manually rename the directory
cd ~/comfydock/environments/my-env/ComfyUI/custom_nodes/
mv ComfyUI-SomeNode ComfyUI-SomeNode.disabled
ComfyUI won't load .disabled directories. Re-enable by renaming back.
Keep development nodes in sync¶
Create a git hook in your dev node repository:
This auto-syncs dependencies when you checkout branches.
Troubleshooting¶
Node not found when updating¶
Solutions:
- Check installed nodes:
- Verify spelling matches the listed name
- The node may have been removed - reinstall:
Update fails with git errors¶
Solutions:
- Check the node directory for local changes:
- Commit or stash changes:
- Try updating again:
Prune removes important nodes¶
If you accidentally pruned nodes you need:
# Rollback to previous version
cfd rollback
# Or reinstall specific nodes
cfd node add comfyui-important-pack
Development node not detected¶
If cfd node list doesn't show your dev node:
- Verify it was added with
--dev: - Check pyproject.toml:
Next steps¶
-
Install nodes from registry, GitHub, or local development
-
Resolve dependency conflicts between nodes
-
Fix environment sync issues with
cfd repair