ComfyUI companion node for ComfyChair Android app — model hashing, Civitai metadata, and downloads
  • JavaScript 51.3%
  • Python 48.7%
Find a file
Roxy 0bcebb7e2e feat(audit): auto-suggest dest for Wrong-subfolder rows
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>
2026-06-13 21:23:25 -04:00
js feat(audit): auto-suggest dest for Wrong-subfolder rows 2026-06-13 21:23:25 -04:00
.gitignore
__init__.py feat(gallery): live ingest hook on PromptServer.send_sync 2026-05-07 17:49:50 -04:00
api.py feat(audit): multi-select bulk-move + editable subfolder alias config 2026-06-13 19:46:23 -04:00
audit.py feat(audit): auto-suggest dest for Wrong-subfolder rows 2026-06-13 21:23:25 -04:00
base_models.py fix: add User-Agent and X-Meilisearch-Client headers to base model facet fetch 2026-04-18 16:17:09 -04:00
config.py feat(audit): multi-select bulk-move + editable subfolder alias config 2026-06-13 19:46:23 -04:00
covers.py feat: cover images, download progress sidebar, browsingLevel fix 2026-04-18 22:33:46 -04:00
db.py feat(gallery): multi-select with bulk download/favorite/delete/re-extract/move 2026-05-10 12:43:48 -04:00
downloader.py fix(installed): link version_id directly when CivitAI hash lookup fails 2026-04-20 17:55:09 -04:00
gallery.py fix(gallery): keep positive/negative prompts on their own branches 2026-05-10 10:30:59 -04:00
header_reader.py fix: Flux/WAN LoRAs no longer misclassified as unet 2026-03-16 22:26:11 -04:00
live_ingest.py feat(gallery): live ingest hook on PromptServer.send_sync 2026-05-07 17:49:50 -04:00
README.md
RESEARCH-UI.md refactor: remove redundant API key and mature toggle from browser settings 2026-04-18 14:52:43 -04:00
scanner.py feat: resolve civitaiResources to names with clickable model links 2026-04-16 09:14:26 -04:00
TASK-UI-CLEANUP.md docs: mark all UI cleanup tasks complete 2026-04-16 10:26:38 -04:00
workflow_synth.py feat(gallery): synthesize loadable workflow from API prompt (Tier 2) 2026-05-07 11:59:42 -04:00

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.