[PR #57] [MERGED] feat(comfy): images from a local ComfyUI server, no API key #89

Closed
opened 2026-10-15 20:53:19 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/rehan-remade/universal-modder/pull/57
Author: @rehan-remade
Created: 10/5/2026
Status: ✅ Merged
Merged: 10/5/2026
Merged by: @rehan-remade

Base: main ← Head: feat/comfy


📝 Commits (1)

  • 01cc0a5 feat(comfy): images from a local ComfyUI server, no API key

📊 Changes

8 files changed (+419 additions, -3 deletions)

View changed files

📝 .github/workflows/test.yml (+1 -1)
📝 AGENTS.md (+1 -0)
📝 README.md (+2 -1)
📝 skills/fal-assets/SKILL.md (+2 -0)
📝 tests/test_um.py (+102 -0)
📝 um/__init__.py (+1 -0)
📝 um/cli.py (+1 -1)
➕ um/comfy.py (+309 -0)

📄 Description

What: um comfy, which makes images on your own GPU through a local ComfyUI server, with no API key (#44).

  • um comfy status: is ComfyUI running, its version, devices and checkpoints. It reads /models/checkpoints, or /object_info on older servers, in both COMBO formats.
  • um comfy image "...": ComfyUI's stock text-to-image graph (checkpoint, two prompts, KSampler, VAE decode) for SD 1.5 and SDXL checkpoints.
    • Defaults: the first checkpoint listed; 512 px, or 1024 px for SDXL-looking names; a random seed, recorded in the manifest.
    • --sprite asks for a single sprite on a plain white background (the same style text as um fal sprite), then cuts it out locally with um sprite cutout.
  • um comfy run workflow.json --set NODE.INPUT=value: any graph saved with Export (API), for Flux, img2img, ControlNet or LoRAs.
    • NODE is a node id or title, and := takes JSON.
    • A UI-format file is refused, with a pointer to Export (API).
  • Outputs land in --out (default assets/gen) like fal's, with comfy_manifest.jsonl (workflow, seed, prompt id, files).
  • ComfyUI's validation errors are shown per node, for example "node 4 (CheckpointLoaderSimple): Value not in list: ckpt_name …".
  • Docs: AGENTS.md, the README tool table and fal-key paragraph, and the fal-assets skill (a "No fal key?" line). CI also checks um comfy --help.

Tested against a stand-in for ComfyUI's HTTP API (two new tests: image --sprite end to end, then run with --set, the error paths and the older /object_info listing). The CLI output was checked by hand against a mock server. Not tested against a live ComfyUI: please try um comfy status, then um comfy image "a red potion" --sprite, before merging.

Checklist

  • uv run --with pytest pytest -q tests passes (50); um kb check --index and um publish check . pass
  • authored by: Claude Code (Opus 5.5) with @rehan-remade

Closes #44

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/rehan-remade/universal-modder/pull/57 **Author:** [@rehan-remade](https://github.com/rehan-remade) **Created:** 10/5/2026 **Status:** ✅ Merged **Merged:** 10/5/2026 **Merged by:** [@rehan-remade](https://github.com/rehan-remade) **Base:** `main` ← **Head:** `feat/comfy` --- ### 📝 Commits (1) - [`01cc0a5`](https://github.com/rehan-remade/universal-modder/commit/01cc0a5070d7eed3db86974be35aafdd8930fd15) feat(comfy): images from a local ComfyUI server, no API key ### 📊 Changes **8 files changed** (+419 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/test.yml` (+1 -1) 📝 `AGENTS.md` (+1 -0) 📝 `README.md` (+2 -1) 📝 `skills/fal-assets/SKILL.md` (+2 -0) 📝 `tests/test_um.py` (+102 -0) 📝 `um/__init__.py` (+1 -0) 📝 `um/cli.py` (+1 -1) ➕ `um/comfy.py` (+309 -0) </details> ### 📄 Description **What:** `um comfy`, which makes images on your own GPU through a local ComfyUI server, with no API key (#44). - `um comfy status`: is ComfyUI running, its version, devices and checkpoints. It reads `/models/checkpoints`, or `/object_info` on older servers, in both COMBO formats. - `um comfy image "..."`: ComfyUI's stock text-to-image graph (checkpoint, two prompts, KSampler, VAE decode) for SD 1.5 and SDXL checkpoints. - Defaults: the first checkpoint listed; 512 px, or 1024 px for SDXL-looking names; a random seed, recorded in the manifest. - `--sprite` asks for a single sprite on a plain white background (the same style text as `um fal sprite`), then cuts it out locally with `um sprite cutout`. - `um comfy run workflow.json --set NODE.INPUT=value`: any graph saved with Export (API), for Flux, img2img, ControlNet or LoRAs. - `NODE` is a node id or title, and `:=` takes JSON. - A UI-format file is refused, with a pointer to Export (API). - Outputs land in `--out` (default `assets/gen`) like fal's, with `comfy_manifest.jsonl` (workflow, seed, prompt id, files). - ComfyUI's validation errors are shown per node, for example "node 4 (CheckpointLoaderSimple): Value not in list: ckpt_name …". - Docs: AGENTS.md, the README tool table and fal-key paragraph, and the fal-assets skill (a "No fal key?" line). CI also checks `um comfy --help`. **Tested** against a stand-in for ComfyUI's HTTP API (two new tests: `image --sprite` end to end, then `run` with `--set`, the error paths and the older `/object_info` listing). The CLI output was checked by hand against a mock server. **Not tested against a live ComfyUI**: please try `um comfy status`, then `um comfy image "a red potion" --sprite`, before merging. **Checklist** - [x] `uv run --with pytest pytest -q tests` passes (50); `um kb check --index` and `um publish check .` pass - [x] authored by: Claude Code (Opus 5.5) with @rehan-remade Closes #44 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 20:53:19 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
rehan-remade/universal-modder#89
No description provided.