ComfyUI companion node for ComfyChair Android app — model hashing, Civitai metadata, and downloads
- JavaScript 51.3%
- Python 48.7%
Pre-filling the source path forced the operator to hand-edit every row before bulk-move could enable. Now wrong_subfolder findings carry a suggested_dest_path computed by routing civitai_base_model through the same reverse alias map as missing_subfolder. UI pre-fills with that suggestion when available, falling back to the source path (and the "edit first" guard) when the base model has no canonical home. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| js | ||
| .gitignore | ||
| __init__.py | ||
| api.py | ||
| audit.py | ||
| base_models.py | ||
| config.py | ||
| covers.py | ||
| db.py | ||
| downloader.py | ||
| gallery.py | ||
| header_reader.py | ||
| live_ingest.py | ||
| README.md | ||
| RESEARCH-UI.md | ||
| scanner.py | ||
| TASK-UI-CLEANUP.md | ||
| workflow_synth.py | ||
ComfyChair Helper
Companion ComfyUI custom node for the ComfyChair Android app.
What it does
- Scans your model directories on startup, SHA256-hashes every file, and looks each hash up against the Civitai API to identify the model + version
- Provides a REST API for the app to query locally installed models, trigger downloads, and track progress — without going through ComfyUI-Manager's whitelist
- Registers newly downloaded files automatically (hashes + Civitai lookup after each download)
Installation
Via ComfyUI Manager: search "ComfyChair Helper" (once listed).
Manual:
cd ComfyUI/custom_nodes
git clone https://git.bun.cafe/cinnabrad/comfyui-comfychair-helper
# restart ComfyUI
API
All endpoints are on the ComfyUI server (default: http://localhost:8188).
| Method | Path | Description |
|---|---|---|
GET |
/comfychair/ping |
Health check, returns {"version": "1.0.0", "ok": true} |
GET |
/comfychair/models |
All scanned models with Civitai metadata |
GET |
/comfychair/models/{sha256} |
Lookup by SHA256 hash |
GET |
/comfychair/models/version/{id} |
Lookup by Civitai version ID |
GET |
/comfychair/scan/status |
Scan progress |
POST |
/comfychair/scan |
Trigger a manual rescan {"force": false} |
POST |
/comfychair/download |
Start a download (see below) |
GET |
/comfychair/download/{job_id} |
Download progress |
GET |
/comfychair/downloads |
All download jobs |
GET |
/comfychair/config |
Current config |
POST |
/comfychair/config |
Set {"civitai_api_key": "..."} |
Download request
{
"url": "https://civitai.com/api/download/models/556208?type=Model&format=SafeTensor",
"filename": "my_lora.safetensors",
"model_type": "lora",
"save_path": "default",
"civitai_version_id": 556208
}
Download response
{
"id": "a3f2b1c0",
"status": "downloading",
"bytes_done": 52428800,
"bytes_total": 228589568,
"progress": 22.9
}
Configuration
Set your Civitai API key via the app settings or directly:
curl -X POST http://localhost:8188/comfychair/config \
-H "Content-Type: application/json" \
-d '{"civitai_api_key": "your-key-here"}'
The key is persisted in the node's local SQLite database.