Extensions/ComfyUI-ModelSync
ComfyUI Extension

ComfyUI-ModelSync

A custom node extension that provides model version tracking, auto-update system, multi-GPU sync, and metadata management for HuggingFace and CivitAI models.

By benfinklea·Created 7 months ago·Updated 7 months ago· 0
benfinklea/ComfyUI-ModelSync
Nodes
On cloudLocal install
Stars0
Updated7 months ago
Readme

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

  1. Clone this repository into your ComfyUI custom_nodes directory:

    cd ComfyUI/custom_nodes
    git clone https://github.com/benfinklea/ComfyUI-ModelSync.git
    
  2. Install dependencies:

    cd ComfyUI-ModelSync
    pip install -r requirements.txt
    
  3. Restart ComfyUI

Usage

Web Interface

  1. Click the "Model Sync" button in the ComfyUI menu

  2. 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
  3. 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
  4. 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": "[email protected]",
    "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.0
  • aiohttp>=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.