Adding Custom Nodes¶
Learn how to install custom nodes from the ComfyUI registry, GitHub repositories, and local development directories.
Overview¶
ComfyGit provides several ways to add custom nodes to your environment:
- Registry lookup - Search the official ComfyUI registry by name
- GitHub URLs - Install directly from any GitHub repository
- Development nodes - Track local nodes you're actively developing
- Batch installation - Add multiple nodes in one command
Prerequisites¶
Before adding nodes, make sure you have:
- An active environment (created with
cg createor set withcg use) - Internet connection for downloading repositories
- Registry cache downloaded (runs automatically on first use)
Check registry status
If the registry cache is outdated or missing, update it:
Adding nodes from the registry¶
The ComfyUI registry contains hundreds of community-maintained custom nodes. ComfyGit searches this registry to find the correct GitHub repository.
Basic installation¶
What happens:
- Registry lookup - ComfyGit searches for "comfyui-impact-pack" in the registry
- Package download - Downloads pre-packaged node archive from ComfyUI Registry CDN to
custom_nodes/(or clones from GitHub if CDN package unavailable) - Dependency installation - Scans for
requirements.txtorinstall.pyand installs Python packages - Configuration update - Adds the node to
.cec/pyproject.toml
Example output:
📦 Adding node: comfyui-impact-pack
✓ Node 'ComfyUI-Impact-Pack' added to pyproject.toml
Run 'cg -e my-env env status' to review changes
Specifying versions¶
Install a specific version using the @version syntax:
# Install specific release version
cg node add comfyui-impact-pack@1.2.0
# Install from a branch
cg node add comfyui-impact-pack@main
# Install from a commit hash
cg node add comfyui-impact-pack@abc1234
Version resolution
For registry nodes: ComfyGit queries the registry API for the specific version (if available in the registry's CDN)
For GitHub nodes: ComfyGit passes the version/ref to git during clone. Works with:
- Release tags:
@v1.0.0,@1.0.0 - Branches:
@main,@develop - Commit hashes:
@abc1234(short or full)
How registry lookup works¶
When you provide a registry ID like comfyui-impact-pack:
- ComfyGit checks the local registry cache (if
prefer_registry_cache=truein config) - If not found or cache disabled, queries the live ComfyUI registry API
- Retrieves the node's download URL (CDN package) and metadata
- Downloads the pre-packaged node from the registry CDN to your environment's
custom_nodes/directory - If no CDN package is available, falls back to cloning from the node's GitHub repository
Registry ID vs. repository name
Registry IDs are usually lowercase with hyphens (e.g., comfyui-impact-pack), while repository names may have different casing (e.g., ComfyUI-Impact-Pack). ComfyGit handles this automatically.
Adding nodes from GitHub¶
Install directly from any GitHub repository without registry lookup:
Full GitHub URLs¶
This bypasses the registry entirely and clones directly from GitHub using git (not the CDN download method).
GitHub URLs with versions¶
# Specific branch
cg node add https://github.com/ltdrdata/ComfyUI-Impact-Pack@main
# Specific tag
cg node add https://github.com/ltdrdata/ComfyUI-Impact-Pack@v1.2.0
# Specific commit
cg node add https://github.com/ltdrdata/ComfyUI-Impact-Pack@abc1234
When to use GitHub URLs
Use GitHub URLs when:
- The node isn't in the registry yet
- You want to install from a fork
- You need a specific branch or commit that isn't packaged in the registry
- The registry ID is ambiguous
Note: GitHub URLs use git clone, while registry IDs typically use faster CDN downloads. Registry installation is usually preferred when available.
Batch installation¶
Add multiple nodes in a single command:
Output:
📦 Adding 3 nodes...
[1/3] Installing comfyui-impact-pack... ✓
[2/3] Installing comfyui-controlnet-aux... ✓
[3/3] Installing comfyui-video-helper-suite... ✓
✅ Installed 3/3 nodes
Run 'cg -e my-env env status' to review changes
Handling batch failures¶
If some nodes fail during batch installation:
📦 Adding 3 nodes...
[1/3] Installing comfyui-impact-pack... ✓
[2/3] Installing invalid-node... ✗ (Node not found in registry)
[3/3] Installing comfyui-controlnet-aux... ✓
✅ Installed 2/3 nodes
⚠️ Failed to install 1 nodes:
• invalid-node: Node not found in registry
Run 'cg -e my-env env status' to review changes
ComfyGit continues installing other nodes even if one fails.
Development nodes¶
Track local nodes you're actively developing without managing them as regular installed nodes.
What are development nodes?¶
Development nodes are:
- Local directories in
custom_nodes/that you're editing - Tracked separately from regular nodes in pyproject.toml
- Not managed by ComfyGit (you handle git operations yourself)
- Dependency-aware - ComfyGit syncs their
requirements.txtto your environment
Adding a development node¶
If you have a local node directory in custom_nodes/my-custom-node/:
What happens:
- ComfyGit scans
custom_nodes/my-custom-node/requirements.txt - Installs Python dependencies to the environment
- Marks the node as
developmentin pyproject.toml - Does not git clone or manage updates
Example output:
📦 Adding development node: my-custom-node
✓ Development node 'my-custom-node' added and tracked
Run 'cg -e my-env env status' to review changes
Development node workflow¶
# 1. Clone your node repo manually
cd ~/comfygit/environments/my-env/ComfyUI/custom_nodes/
git clone https://github.com/you/your-custom-node
# 2. Track it as a development node
cg node add your-custom-node --dev
# 3. Edit code locally
cd your-custom-node
# ... make changes ...
# 4. Update dependencies if you change requirements.txt
cg node update your-custom-node
# 5. When done, commit your environment
cg commit -m "Added dev node: your-custom-node"
Why use development nodes?
Development nodes let you:
- Work on node code while using it in ComfyUI
- Keep your own git workflow separate from ComfyGit
- Have ComfyGit manage Python dependencies automatically
- Track which dev nodes are part of the environment
Advanced options¶
Force overwrite¶
Replace an existing node directory:
This removes the existing custom_nodes/ComfyUI-Impact-Pack/ directory and re-downloads/re-installs the node.
Destructive operation
--force deletes the existing directory. Any uncommitted local changes will be lost. Use with caution.
Skip resolution testing¶
By default, ComfyGit tests that the node's dependencies can be resolved. Skip this with:
Useful when:
- You know the dependencies are fine
- You want faster installation
- The node has complex dependencies that may show false conflicts
What gets tracked¶
When you add a node, ComfyGit updates .cec/pyproject.toml:
[tool.comfygit.nodes]
"comfyui-impact-pack" = {name = "ComfyUI-Impact-Pack", repository = "https://github.com/ltdrdata/ComfyUI-Impact-Pack", version = "abc1234", source = "registry"}
This tracks:
- name - The node's directory name in
custom_nodes/ - repository - The git repository URL
- version - The git commit hash (for reproducibility)
- source - Where it came from (
registry,git, ordevelopment)
Dependency installation¶
ComfyGit automatically handles node dependencies:
requirements.txt¶
If the node has requirements.txt:
ComfyGit runs:
These get added to your environment's pyproject.toml under a dedicated dependency group.
install.py scripts¶
Some nodes have install.py scripts for custom installation. ComfyGit:
- Scans for
requirements.txtfirst - If
install.pyexists, does not run it automatically - You may need to run it manually:
Why not auto-run install.py?
ComfyGit doesn't run arbitrary scripts for security reasons. Review the script first, then run manually if needed.
How node caching works¶
ComfyGit uses a two-stage installation process for efficiency:
- Download to global cache - Nodes are first downloaded to a workspace-level cache directory
- Copy to environment - The cached node is then copied to your environment's
custom_nodes/directory
Benefits of caching:
- Fast reinstallation - Reinstalling the same node version is instant (no re-download)
- Shared across environments - Multiple environments can share the same cached node files
- Preserved on removal - Removing a node from an environment doesn't delete the cached copy
- Reduced bandwidth - CDN packages are only downloaded once per workspace
Cache location:
~/comfygit/cache/custom_nodes/
├── ComfyUI-Impact-Pack@abc1234/
├── ComfyUI-ControlNet-Aux@def5678/
└── ...
Quick reinstallation
If you remove a node and then re-add it (same version), ComfyGit will copy it from cache instantly instead of re-downloading.
Avoiding ComfyUI-Manager¶
Don't install ComfyUI-Manager
ComfyGit replaces ComfyUI-Manager's functionality. Installing comfyui-manager can cause conflicts because both tools manage custom nodes.
Instead of ComfyUI-Manager:
- Use
cg node addto install nodes - Use
cg node updateto update nodes - Use
cg node listto see installed nodes - Use
cg workflow resolveto resolve workflow dependencies
Common patterns¶
Installing from a requirements file¶
If you have a list of nodes:
Install them all:
Or manually:
Installing a fork¶
# Install from your fork instead of the original
cg node add https://github.com/yourusername/ComfyUI-Impact-Pack
Installing a specific commit for stability¶
Troubleshooting¶
Node not found in registry¶
Solutions:
- Check spelling and try again
- Use the GitHub URL directly:
- Update the registry cache:
Registry cache unavailable¶
✗ Cannot add node - registry data unavailable
Cache location: ~/comfygit/comfygit_cache/registry/
To fix this issue:
1. Download registry data:
→ cg registry update
2. Check download status:
→ cg registry status
Follow the suggested commands to download the registry.
Directory already exists¶
✗ Cannot add node 'comfyui-impact-pack'
Directory custom_nodes/ComfyUI-Impact-Pack already exists
Filesystem: https://github.com/user/fork
Registry: https://github.com/ltdrdata/ComfyUI-Impact-Pack
Suggested actions:
1. Remove existing node
→ cg node remove comfyui-impact-pack
2. Force overwrite existing directory
→ cg node add comfyui-impact-pack --force
Choose one of the suggested actions based on what you want.
Dependency conflicts¶
If a node has conflicting dependencies:
✗ Failed to add node 'problematic-node'
Dependency conflict: torch==2.0.0 (required) conflicts with torch>=2.1.0 (installed)
See Node Conflicts for detailed conflict resolution strategies.
Next steps¶
-
List, update, remove, and prune installed nodes
-
Resolve dependency conflicts between nodes
-
Automatically resolve node dependencies from workflows