When CivitAI hash lookup fails, now tries: 1. Pattern matching for known model families (Gemma, CLIP, SAM, YOLO, etc.) 2. HuggingFace API search by filename This identifies sources for models from HuggingFace, GitHub, and other repositories that aren't on CivitAI. Also fixed lookup getting stuck on hint results by properly filtering out already-checked models regardless of source_type. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ComfyUI-ModelSync
Model Auto-Update & Multi-GPU Sync for ComfyUI
A custom node extension that provides:
- Model Version Tracking - Detect when HuggingFace/CivitAI models have updates
- Auto-Update System - Configurable automatic model downloads
- Multi-GPU Sync - Sync models to secondary machines filtered by VRAM capacity
- Metadata Management - Track installed models with hashes, versions, sources
Features
Model Version Tracking
- Automatically detect updates for models from HuggingFace and CivitAI
- Compare local files with remote versions using SHA256 hashes
- Cache version information to minimize API calls
Auto-Update System
- Background scheduler for periodic update checks
- Configurable update intervals
- Automatic downloads with hash verification
- Backup old versions before updating
Multi-GPU Sync
- Sync models to secondary machines using rsync over SSH
- Filter models by VRAM requirements
- Generate standalone sync scripts for manual execution
- Configurable per-target settings
Web UI
- Integrated panel in ComfyUI interface
- View all tracked models and their status
- Configure sync targets and settings
- Trigger manual updates and syncs
Installation
Using ComfyUI Manager (Recommended)
Search for "ModelSync" in ComfyUI Manager and install.
Manual Installation
-
Clone this repository into your ComfyUI custom_nodes directory:
cd ComfyUI/custom_nodes git clone https://github.com/benfinklea/ComfyUI-ModelSync.git -
Install dependencies:
cd ComfyUI-ModelSync pip install -r requirements.txt -
Restart ComfyUI
Usage
Web Interface
-
Click the "Model Sync" button in the ComfyUI menu
-
Models Tab: View and manage tracked models
- Click "Scan" to discover models in your models directory
- Click "Check Updates" to query HuggingFace/CivitAI for updates
- Enable auto-update per model using the checkbox
- Click "Download" to update individual models
-
Sync Targets Tab: Configure machines to sync to
- Add targets with SSH host and models path
- Set VRAM limits to filter which models sync
- Click "Sync Now" to sync to a specific target
-
Settings Tab: Configure global options
- Enable/disable auto-update
- Set check interval
- Toggle download verification and backups
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/modelsync/models |
GET | List all tracked models |
/modelsync/models/scan |
POST | Scan filesystem for models |
/modelsync/models/{id} |
GET | Get model details |
/modelsync/models/{id} |
PATCH | Update model settings |
/modelsync/check |
POST | Check models for updates |
/modelsync/download/{id} |
POST | Download model update |
/modelsync/config |
GET/POST | Get/set configuration |
/modelsync/targets |
GET/POST | List/add sync targets |
/modelsync/targets/{id} |
DELETE | Remove sync target |
/modelsync/sync/{id} |
POST | Sync to specific target |
/modelsync/sync |
POST | Sync to all targets |
/modelsync/status |
GET | Get overall status |
Setting Model Sources
To enable update checking for a model, set its source URL:
curl -X PATCH http://localhost:8188/modelsync/models/1 \
-H "Content-Type: application/json" \
-d '{"source_url": "https://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl_vae.safetensors"}'
Or use the optional workflow node "Set Model Source".
Configuring Sync Targets
Add a sync target:
curl -X POST http://localhost:8188/modelsync/targets \
-H "Content-Type: application/json" \
-d '{
"name": "secondary-gpu",
"ssh_host": "user@192.168.1.100",
"model_path": "/home/user/ComfyUI/models",
"max_vram_mb": 16000
}'
VRAM Filtering
Models are filtered based on estimated VRAM requirements:
| Pattern | Estimated VRAM |
|---|---|
| wan, hunyuan, mochi | 48 GB |
| flux-dev | 24 GB |
| flux-schnell | 12 GB |
| sdxl | 12 GB |
| sd15, sd1.5 | 6 GB |
| lora | 2 GB |
Models larger than the target's max_vram_mb will be skipped during sync.
Configuration
Default configuration values:
| Key | Default | Description |
|---|---|---|
auto_update_enabled |
false | Enable automatic updates |
check_interval_hours |
24 | Hours between update checks |
cache_ttl_hours |
6 | Hours to cache version info |
verify_downloads |
true | Verify file hash after download |
backup_before_update |
true | Create .bak before replacing |
max_concurrent_downloads |
2 | Max simultaneous downloads |
Optional Workflow Nodes
Three utility nodes are included for workflow integration:
- Model Info (ModelSync) - Output model metadata (source URL, VRAM, update status)
- Check Model Update (ModelSync) - Check if a specific model has updates
- Set Model Source (ModelSync) - Associate a model with its source URL
Database
ModelSync uses SQLite for metadata storage. The database is stored at:
ComfyUI/custom_nodes/ComfyUI-ModelSync/modelsync.db
Requirements
- Python 3.10+
- ComfyUI
huggingface_hub>=0.20.0aiohttp>=3.9.0- SSH and rsync (for multi-GPU sync)
License
MIT License - see LICENSE file for details.
Contributing
Contributions are welcome! Please open an issue or pull request on GitHub.
Support
For issues and feature requests, please use the GitHub issue tracker.