comfyui-mcp 0.52.118 → 0.52.119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +110 -110
- package/dist/comfyui/client.js +4 -3
- package/dist/comfyui/client.js.map +1 -1
- package/dist/comfyui/cloud-client.js.map +1 -1
- package/dist/orchestrator/agent-backend.js.map +1 -1
- package/dist/orchestrator/ai-proposer.js.map +1 -1
- package/dist/orchestrator/antigravity-backend.js +0 -1
- package/dist/orchestrator/antigravity-backend.js.map +1 -1
- package/dist/orchestrator/claude-backend.js +10 -9
- package/dist/orchestrator/claude-backend.js.map +1 -1
- package/dist/orchestrator/index.js +46 -17
- package/dist/orchestrator/index.js.map +1 -1
- package/dist/orchestrator/ollama-backend.js +3 -0
- package/dist/orchestrator/ollama-backend.js.map +1 -1
- package/dist/orchestrator/panel-agent.js.map +1 -1
- package/dist/orchestrator/panel-tools.js +51 -30
- package/dist/orchestrator/panel-tools.js.map +1 -1
- package/dist/orchestrator/pi-backend.js +0 -1
- package/dist/orchestrator/pi-backend.js.map +1 -1
- package/dist/services/api-nodes.js +1 -1
- package/dist/services/api-nodes.js.map +1 -1
- package/dist/services/generate-audio.js +1 -2
- package/dist/services/generate-audio.js.map +1 -1
- package/dist/services/generate-conditioned.js.map +1 -1
- package/dist/services/generate-image.js +1 -2
- package/dist/services/generate-image.js.map +1 -1
- package/dist/services/generate-video.js +1 -2
- package/dist/services/generate-video.js.map +1 -1
- package/dist/services/health-check.js +1 -1
- package/dist/services/health-check.js.map +1 -1
- package/dist/services/local-vram.js +29 -0
- package/dist/services/local-vram.js.map +1 -1
- package/dist/services/lora-catalog.js +2 -2
- package/dist/services/lora-catalog.js.map +1 -1
- package/dist/services/node-management.js +4 -2
- package/dist/services/node-management.js.map +1 -1
- package/dist/services/panel-secrets.js +0 -1
- package/dist/services/panel-secrets.js.map +1 -1
- package/dist/services/process-control.js.map +1 -1
- package/dist/services/remove-background.js +1 -2
- package/dist/services/remove-background.js.map +1 -1
- package/dist/services/storage/http.js +1 -1
- package/dist/services/storage/http.js.map +1 -1
- package/dist/services/test-isolation-guard.js.map +1 -1
- package/dist/services/workflow-converter.js +2 -0
- package/dist/services/workflow-converter.js.map +1 -1
- package/dist/services/workflow-lock.js +2 -3
- package/dist/services/workflow-lock.js.map +1 -1
- package/dist/services/workflow-slicer.js +1 -1
- package/dist/services/workflow-slicer.js.map +1 -1
- package/dist/tools/catalog.js +6 -4
- package/dist/tools/catalog.js.map +1 -1
- package/dist/tools/compact.js +3 -0
- package/dist/tools/compact.js.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/missing-models.js +1 -1
- package/dist/tools/missing-models.js.map +1 -1
- package/dist/tools/retired-redirect.js +5 -1
- package/dist/tools/retired-redirect.js.map +1 -1
- package/dist/tools/tool-surface-filter.js +1 -22
- package/dist/tools/tool-surface-filter.js.map +1 -1
- package/dist/tools/workflow-library.js.map +1 -1
- package/locales/ar/main.json +1 -0
- package/locales/en/main.json +1 -0
- package/locales/es/main.json +1 -0
- package/locales/fa/main.json +1 -0
- package/locales/fr/main.json +1 -0
- package/locales/ja/main.json +1 -0
- package/locales/ko/main.json +1 -0
- package/locales/pt-BR/main.json +1 -0
- package/locales/ru/main.json +1 -0
- package/locales/tr/main.json +1 -0
- package/locales/zh/main.json +1 -0
- package/locales/zh-TW/main.json +1 -0
- package/package.json +1 -1
- package/plugin/agents/debugger.md +5 -5
- package/plugin/agents/explorer.md +9 -9
- package/plugin/agents/optimizer.md +11 -11
- package/plugin/agents/researcher.md +4 -4
- package/plugin/commands/batch.md +16 -16
- package/plugin/commands/compare.md +8 -8
- package/plugin/commands/convert.md +9 -9
- package/plugin/commands/debug.md +8 -8
- package/plugin/commands/director.md +15 -15
- package/plugin/commands/gallery.md +3 -3
- package/plugin/commands/gen.md +6 -6
- package/plugin/commands/install.md +5 -5
- package/plugin/commands/node-skill.md +1 -1
- package/plugin/commands/recipe.md +27 -27
- package/plugin/commands/viz.md +3 -3
- package/plugin/skills/ai-toolkit-trainer/SKILL.md +42 -42
- package/plugin/skills/anima-base/SKILL.md +33 -33
- package/plugin/skills/anima-lora-trainer/SKILL.md +25 -25
- package/plugin/skills/civitai/SKILL.md +26 -26
- package/plugin/skills/color-correction/SKILL.md +51 -51
- package/plugin/skills/comfyui-core/SKILL.md +62 -62
- package/plugin/skills/comfyui-core/references/common-nodes.md +7 -7
- package/plugin/skills/comfyui-frontend-extensions/SKILL.md +34 -34
- package/plugin/skills/comfyui-frontend-extensions/references/migrate-v1-to-v2.md +10 -10
- package/plugin/skills/comfyui-launch-flags/SKILL.md +39 -39
- package/plugin/skills/comfyui-node-registry/SKILL.md +26 -26
- package/plugin/skills/debug-render/SKILL.md +44 -44
- package/plugin/skills/director/SKILL.md +45 -45
- package/plugin/skills/ernie-image/SKILL.md +49 -50
- package/plugin/skills/flux-txt2img/SKILL.md +23 -23
- package/plugin/skills/report-bug/SKILL.md +137 -130
- package/plugin/skills/train-character-lora/SKILL.md +39 -38
- package/plugin/skills/triton-sageattention/SKILL.md +110 -109
- package/plugin/skills/troubleshooting/SKILL.md +84 -84
- package/plugin/skills/video-extend/SKILL.md +141 -140
- package/plugin/skills/video-extend/references/chaining.md +19 -19
- package/plugin/skills/video-upscale/SKILL.md +109 -108
- package/plugin/skills/wan-flf-video/SKILL.md +54 -54
- package/plugin/skills/wan-flf-video/references/workflows.md +1 -1
- package/plugin/skills/wan-multitalk/SKILL.md +22 -22
- package/plugin/skills/wan-scail-replacement/SKILL.md +24 -24
- package/plugin/skills/wan-t2v-video/SKILL.md +24 -24
- package/plugin/skills/workflow-layout/SKILL.md +55 -55
- package/plugin/skills/z-image-txt2img/SKILL.md +25 -25
- package/scripts/gen-tool-docs.ts +2 -2
- package/dist/i18n/catalogs.test.js +0 -208
- package/dist/i18n/catalogs.test.js.map +0 -1
- package/dist/i18n/i18n.test.js +0 -117
- package/dist/i18n/i18n.test.js.map +0 -1
- package/dist/orchestrator/codex-error.test.js +0 -71
- package/dist/orchestrator/codex-error.test.js.map +0 -1
- package/dist/orchestrator/error-text.test.js +0 -221
- package/dist/orchestrator/error-text.test.js.map +0 -1
- package/dist/orchestrator/oauth-bridge.test.js +0 -129
- package/dist/orchestrator/oauth-bridge.test.js.map +0 -1
- package/dist/orchestrator/queue-note.test.js +0 -74
- package/dist/orchestrator/queue-note.test.js.map +0 -1
- package/dist/services/a2ui-spec.test.js +0 -174
- package/dist/services/a2ui-spec.test.js.map +0 -1
- package/dist/services/code-provider-auth-redact.test.js +0 -83
- package/dist/services/code-provider-auth-redact.test.js.map +0 -1
- package/dist/services/oauth-flow.test.js +0 -179
- package/dist/services/oauth-flow.test.js.map +0 -1
- package/dist/services/oauth-landing.test.js +0 -45
- package/dist/services/oauth-landing.test.js.map +0 -1
- package/dist/services/queue-monitor.poll.test.js +0 -267
- package/dist/services/queue-monitor.poll.test.js.map +0 -1
- package/dist/services/queue-monitor.self-attribution.test.js +0 -132
- package/dist/services/queue-monitor.self-attribution.test.js.map +0 -1
- package/dist/services/queue-monitor.stall.test.js +0 -163
- package/dist/services/queue-monitor.stall.test.js.map +0 -1
- package/dist/services/queue-status-broadcast.test.js +0 -226
- package/dist/services/queue-status-broadcast.test.js.map +0 -1
- package/dist/tools/report-issue.test.js +0 -592
- package/dist/tools/report-issue.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<a href="https://comfyui-mcp.artokun.io/docs">
|
|
5
5
|
<img src="docs/images/demo-poster.jpg" width="760"
|
|
6
|
-
alt="The Agent panel driving ComfyUI end to end
|
|
6
|
+
alt="The Agent panel driving ComfyUI end to end. Click to watch the demo">
|
|
7
7
|
</a>
|
|
8
8
|
</p>
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
|
-
<em>The Agent panel driving ComfyUI end to end
|
|
12
|
-
|
|
11
|
+
<em>The Agent panel driving ComfyUI end to end. It reads what is installed locally,
|
|
12
|
+
wires the graph, frees VRAM, and runs the render.<br>
|
|
13
13
|
<a href="https://comfyui-mcp.artokun.io/docs">Watch the 76s demo →</a></em>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
|
-
**The local-first, agent-native control plane for [ComfyUI](https://github.com/comfyanonymous/ComfyUI)
|
|
16
|
+
**The local-first, agent-native control plane for [ComfyUI](https://github.com/comfyanonymous/ComfyUI).** An MCP server plus a live sidebar agent that generates images, video and audio, authors and runs workflows, manages models and custom nodes, and **edits your live ComfyUI graph in natural language**. Bring whatever model you have: **Claude or ChatGPT on your subscription, Gemini on your Google login, a free local model via Ollama (fully offline), or any hosted model over one API key** (DeepSeek, GLM, MiMo, Kimi, GPT, Claude via OpenRouter). The tools and the panel are the same on every tier, and the built-in [LLM Arena](https://comfyui-mcp.artokun.io/docs/arena) scores each model on real ComfyUI tasks so you know what yours can do. One config targets local installs, LAN, VPS, or Comfy Cloud.
|
|
17
17
|
|
|
18
18
|
[](https://www.npmjs.com/package/comfyui-mcp)
|
|
19
19
|
[](https://nodejs.org)
|
|
@@ -23,21 +23,21 @@
|
|
|
23
23
|
[](https://glama.ai/mcp/servers/artokun/comfyui-mcp)
|
|
24
24
|
[](https://glama.ai/mcp/servers/artokun/comfyui-mcp)
|
|
25
25
|
|
|
26
|
-
[](https://console.runpod.io/deploy?template=bnqtkvcer3&ref=dkx71w9b) [](https://discord.gg/cW9arBhzCu) **One-click GPU pod
|
|
26
|
+
[](https://console.runpod.io/deploy?template=bnqtkvcer3&ref=dkx71w9b) [](https://discord.gg/cW9arBhzCu) **One-click GPU pod.** A ready-to-run ComfyUI with this project + [Agent Panel](https://github.com/artokun/comfyui-mcp-panel) + ComfyUI-Manager v2 preinstalled, on your own GPU. No setup.
|
|
27
27
|
|
|
28
|
-
Works on
|
|
28
|
+
Works on macOS, Linux, and Windows. Auto-detects your ComfyUI installation and port.
|
|
29
29
|
|
|
30
|
-
**Stuck or have a question? [Join the Discord](https://discord.gg/cW9arBhzCu)**
|
|
30
|
+
**Stuck or have a question? [Join the Discord](https://discord.gg/cW9arBhzCu)** for help, model tips, and release announcements.
|
|
31
31
|
|
|
32
32
|
**38 MCP tools** | **41 AI skills** (Flux · WAN · LTX 2.3 video · MiniMax H3 · Qwen · Z-Image · Ideogram 4 · ERNIE · ANIMA · model registry · Civitai · node authoring · launch/perf flags) | **56 installer packs** | **11 slash commands** | **4 autonomous agents** | **3 hooks**
|
|
33
33
|
|
|
34
|
-
The plugin ships
|
|
34
|
+
The plugin ships skills that grow with every release: model-specific generation guides with curated download URLs, workflow recipes, troubleshooting, and custom-node authoring. With them, Claude knows the right sampler, CFG, resolution, and model files for each architecture without trial and error.
|
|
35
35
|
|
|
36
|
-
> ###
|
|
37
|
-
> An autonomous AI agent in your ComfyUI sidebar
|
|
38
|
-
> Search
|
|
36
|
+
> ### Now available: the [ComfyUI Agent Panel](https://registry.comfy.org/nodes/comfyui-agent-panel) on ComfyUI-Manager & the Comfy Registry
|
|
37
|
+
> An autonomous AI agent in your ComfyUI sidebar, running **on Claude, ChatGPT, Gemini, or ANY local/hosted LLM** (Ollama and every OpenAI-compatible endpoint). Subscriptions work with no API key; local models work with no account at all. Pick a provider and it drives your live graph: edits, spatial layout, one-shot workflow/pack loads, rewind/rollback, a pending-message tray, activity cards, multi-tab. It asks before spending paid API credits.
|
|
38
|
+
> Search `comfyui-agent-panel` in ComfyUI-Manager to install. [Read more →](https://comfyui-mcp.artokun.io/docs/panel)
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
**Full documentation: [comfyui-mcp.artokun.io/docs](https://comfyui-mcp.artokun.io/docs)**
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
@@ -69,25 +69,25 @@ The plugin ships **expert skills that grow with every release** — model-specif
|
|
|
69
69
|
|
|
70
70
|
Claude will find (or download) a checkpoint, build a workflow, execute it, and return the image.
|
|
71
71
|
|
|
72
|
-
> **Note**: This runs as a standalone MCP server
|
|
72
|
+
> **Note**: This runs as a standalone MCP server, so there is no need to clone this repo. `npx` downloads and runs it.
|
|
73
73
|
|
|
74
74
|
### Scope: local, remote, or Comfy Cloud
|
|
75
75
|
|
|
76
|
-
`comfyui-mcp` is **local-first
|
|
76
|
+
`comfyui-mcp` is **local-first**. A self-hosted ComfyUI on Mac/Linux/Windows is the primary target, and the same agent reaches remote installs (RunPod, VPS, LAN, reverse-proxied) from one config. Local-first, not local-only.
|
|
77
77
|
|
|
78
|
-
**More than a bridge.** Most ComfyUI MCP servers are thin connectors
|
|
78
|
+
**More than a bridge.** Most ComfyUI MCP servers are thin connectors. They forward a prompt and hand back an image. `comfyui-mcp` is a full control plane. It authors and edits the graph node by node, runs and iterates on workflows, manages models and custom nodes, and ships model-specific expertise (samplers, CFG, resolutions, curated model URLs) so the agent gets it right without trial and error. If you want a minimal local relay, a lightweight server is fine. If you want an agent that *operates* ComfyUI, that's this project.
|
|
79
79
|
|
|
80
|
-
For
|
|
80
|
+
For Comfy Cloud users, Comfy-Org ships its own [agent tooling](https://docs.comfy.org/agent-tools): Comfy Cloud MCP (public beta, hosted on Comfy Cloud GPUs), the Comfy In-App Agent (private alpha, inside Comfy Cloud), and a first-party Comfy Local MCP (private test, not publicly available yet), all maintained by the Comfy team. If you don't have a GPU or you want zero setup, that's the better path; go use it.
|
|
81
81
|
|
|
82
|
-
Where this project differs is that it runs on **your** install and **your** choice of model
|
|
82
|
+
Where this project differs is that it runs on **your** install and **your** choice of model, including a free local one via Ollama with no account and no network at all. `comfyui-mcp` *also* includes a community cloud mode (set `COMFYUI_API_KEY`, see [Deployment modes](#deployment-modes)) so a single MCP can target all three deployment shapes from one config.
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
**[Local vs. Comfy Cloud agent](https://comfyui-mcp.artokun.io/docs/local-vs-comfy-cloud)** is a side-by-side comparison, including when Comfy Cloud is the right answer. *(Statuses above are as of July 2026. Comfy-Org ships fast, so check their docs for the current state.)*
|
|
85
85
|
|
|
86
86
|
### Remote / hosted connector (one command)
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
client
|
|
90
|
-
authenticated, publicly
|
|
88
|
+
To use `comfyui-mcp` from Claude Desktop's Custom Connectors or any remote
|
|
89
|
+
client, like Comfy's own `cloud.comfy.org/mcp` connector, run it as an
|
|
90
|
+
authenticated, publicly reachable Streamable-HTTP server with one flag:
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
93
|
npx -y comfyui-mcp@latest --tunnel
|
|
@@ -96,20 +96,20 @@ npx -y comfyui-mcp@latest --tunnel
|
|
|
96
96
|
This forces the HTTP transport, generates an auth token, opens a
|
|
97
97
|
[cloudflared](https://github.com/cloudflare/cloudflared) quick tunnel, and prints
|
|
98
98
|
a ready-to-paste `https://…/mcp` URL + token + Claude Desktop connector snippet.
|
|
99
|
-
Auth accepts `Authorization: Bearer <token>`
|
|
99
|
+
Auth accepts `Authorization: Bearer <token>` or `X-API-Key: <token>` (matching
|
|
100
100
|
Comfy Cloud's convention). See the
|
|
101
101
|
[Remote / hosted connector guide](https://comfyui-mcp.artokun.io/docs/remote-connector)
|
|
102
102
|
for the full walkthrough and headless usage.
|
|
103
103
|
|
|
104
|
-
> Auth is opt-in
|
|
105
|
-
> default stdio (and plain `--http` on loopback) behavior is unchanged
|
|
104
|
+
> Auth is opt-in. With no `COMFYUI_MCP_HTTP_TOKEN` set and no `--tunnel`, the
|
|
105
|
+
> default stdio (and plain `--http` on loopback) behavior is unchanged. It stays open and
|
|
106
106
|
> local. OAuth (Comfy's browser sign-in flow) is a planned follow-up.
|
|
107
107
|
|
|
108
108
|
---
|
|
109
109
|
|
|
110
110
|
## Claude Code Plugin
|
|
111
111
|
|
|
112
|
-
This package also ships as a
|
|
112
|
+
This package also ships as a Claude Code plugin that adds slash commands, skills, agents, and hooks on top of the MCP tools.
|
|
113
113
|
|
|
114
114
|
### Install as a plugin
|
|
115
115
|
|
|
@@ -136,9 +136,9 @@ This package also ships as a **Claude Code plugin**, providing slash commands, s
|
|
|
136
136
|
|
|
137
137
|
### Built-in skills
|
|
138
138
|
|
|
139
|
-
41 skills total
|
|
139
|
+
41 skills total: model-family guides (Flux, WAN, LTX 2.3, MiniMax H3, Qwen, Z-Image, Ideogram 4, ERNIE, ANIMA + anime / WAN / Z-Image LoRA training), the **model-registry** (curated download URLs), the **civitai** pairing skill, node authoring, the **launch/performance-flags** matrix, and the core four below. Full list on the [plugin docs page](https://comfyui-mcp.artokun.io/docs/plugin).
|
|
140
140
|
|
|
141
|
-
> **Installer packs.** [`packs/`](packs/) bundles 13 one-command ComfyUI setups
|
|
141
|
+
> **Installer packs.** [`packs/`](packs/) bundles 13 one-command ComfyUI setups: ANIMA, Ideogram 4, LTX-2.3, ERNIE, WAN (animate / longer-videos / transparent), Qwen (image / image-edit), Z-Image (turbo / base / xy-plot) and artokun-flow (WAN Animate: replace / animate). Each is a manifest of custom nodes + model URLs + workflow that drives both `apply_manifest` and generated `install-windows.bat` / `install-runpod.sh`, with CI that validates every model link + payload size. See [`packs/README.md`](packs/README.md).
|
|
142
142
|
|
|
143
143
|
| Skill | Description |
|
|
144
144
|
|-------|-------------|
|
|
@@ -151,7 +151,7 @@ This package also ships as a **Claude Code plugin**, providing slash commands, s
|
|
|
151
151
|
|
|
152
152
|
| Agent | Model | Description |
|
|
153
153
|
|-------|-------|-------------|
|
|
154
|
-
| **comfy-explorer** | Sonnet | Researches custom node packs — reads docs, queries `/object_info`, generates
|
|
154
|
+
| **comfy-explorer** | Sonnet | Researches custom node packs — reads docs, queries `/object_info`, generates skill files |
|
|
155
155
|
| **comfy-debugger** | Sonnet | Autonomously diagnoses workflow failures — gathers logs + history, identifies failing node, checks models + custom nodes, proposes and optionally applies fixes |
|
|
156
156
|
| **comfy-optimizer** | Sonnet | Analyzes workflows for performance — detects redundant nodes, VRAM waste, wrong CFG/steps for model family, precision issues, suggests optimizations |
|
|
157
157
|
| **comfy-researcher** | Sonnet | Discovers and ranks ComfyUI custom node packs for a stated image-generation problem |
|
|
@@ -174,10 +174,10 @@ This package also ships as a **Claude Code plugin**, providing slash commands, s
|
|
|
174
174
|
|
|
175
175
|
## Panel agent (Claude · ChatGPT · Gemini · any local/hosted LLM)
|
|
176
176
|
|
|
177
|
-
Beyond the headless MCP server, this package ships the
|
|
178
|
-
powers the
|
|
177
|
+
Beyond the headless MCP server, this package ships the panel orchestrator that
|
|
178
|
+
powers the [ComfyUI Agent Panel](https://github.com/artokun/comfyui-mcp-panel),
|
|
179
179
|
an autonomous agent embedded in ComfyUI's sidebar that drives the live canvas. It
|
|
180
|
-
runs in the background on
|
|
180
|
+
runs in the background on your own subscription (Claude *or* ChatGPT), started
|
|
181
181
|
on demand by the panel's **Connect** button:
|
|
182
182
|
|
|
183
183
|
```bash
|
|
@@ -186,61 +186,61 @@ npx -y comfyui-mcp@latest connect
|
|
|
186
186
|
|
|
187
187
|
### Drive a REMOTE ComfyUI from your own machine (`connect`)
|
|
188
188
|
|
|
189
|
-
When ComfyUI runs somewhere with
|
|
190
|
-
can still run the agent on
|
|
191
|
-
agent login on the box
|
|
189
|
+
When ComfyUI runs somewhere with no Node or agent (a RunPod pod, a cloud box) you
|
|
190
|
+
can still run the agent on your machine and drive that remote ComfyUI. There is no
|
|
191
|
+
agent login on the box and nothing to install or configure remotely:
|
|
192
192
|
|
|
193
193
|
```bash
|
|
194
194
|
npx -y comfyui-mcp@latest connect https://abcd1234-3000.proxy.runpod.net
|
|
195
195
|
```
|
|
196
196
|
|
|
197
|
-
This is sugar for `--panel-orchestrator` with `COMFYUI_URL` set from the URL
|
|
197
|
+
This is sugar for `--panel-orchestrator` with `COMFYUI_URL` set from the URL. The
|
|
198
198
|
orchestrator runs locally on your Claude/ChatGPT login and reaches the remote
|
|
199
|
-
ComfyUI over its public proxy URL. For a
|
|
200
|
-
|
|
201
|
-
the local agent bridge and hands the pod's panel that URL
|
|
202
|
-
reaches your machine with
|
|
203
|
-
can't open a plain `ws://` socket to your box
|
|
204
|
-
Access
|
|
205
|
-
|
|
206
|
-
your own path to it, e.g. an SSH port-forward
|
|
207
|
-
|
|
199
|
+
ComfyUI over its public proxy URL. For a remote HTTPS pod, `connect`
|
|
200
|
+
opens a token-gated `wss://` tunnel (via Cloudflare) to
|
|
201
|
+
the local agent bridge and hands the pod's panel that URL, so the pod's HTTPS page
|
|
202
|
+
reaches your machine with no browser prompt, in any browser. A secure page
|
|
203
|
+
can't open a plain `ws://` socket to your box because of mixed-content and Private Network
|
|
204
|
+
Access rules. A local ComfyUI uses the plain `ws://127.0.0.1:9199` loopback bridge.
|
|
205
|
+
Add `--insecure-bridge` to force that loopback for a remote pod, then arrange
|
|
206
|
+
your own path to it, e.g. an SSH port-forward. Either way the panel JS runs in
|
|
207
|
+
your local browser, and the agent and your login run only on your
|
|
208
208
|
machine, so nothing is installed remotely.
|
|
209
209
|
|
|
210
|
-
To finish
|
|
211
|
-
your browser and click **Connect** in the Agent panel.
|
|
212
|
-
extension
|
|
213
|
-
than asking the ComfyUI host to spawn an orchestrator it cannot run.
|
|
210
|
+
To finish, with `connect` still running on your machine, open the remote ComfyUI in
|
|
211
|
+
your browser and click **Connect** in the Agent panel. The panel is a pure-frontend
|
|
212
|
+
extension. It links to the bridge your `connect` process is already serving, rather
|
|
213
|
+
than asking the ComfyUI host to spawn an orchestrator it cannot run.
|
|
214
214
|
|
|
215
215
|
**Multi-provider, full parity.** The orchestrator depends on a provider-neutral
|
|
216
|
-
|
|
216
|
+
`AgentBackend` port (dependency injection), with two adapters:
|
|
217
217
|
|
|
218
|
-
-
|
|
218
|
+
- `ClaudeBackend` wraps the [Claude Agent SDK](https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk)
|
|
219
219
|
(`@anthropic-ai/claude-agent-sdk`), a persistent streaming session over the
|
|
220
220
|
claude.ai subscription (OAuth, no key).
|
|
221
|
-
-
|
|
221
|
+
- `CodexBackend` wraps OpenAI Codex over the `codex app-server` JSON-RPC
|
|
222
222
|
protocol (`@openai/codex`), on the ChatGPT subscription (`codex login`, no key).
|
|
223
223
|
|
|
224
|
-
Further adapters follow the same port
|
|
225
|
-
(`agy`, the Google AI Pro/Ultra subscription path
|
|
224
|
+
Further adapters follow the same port: Gemini CLI (ACP), Antigravity
|
|
225
|
+
(`agy`, the Google AI Pro/Ultra subscription path; install from
|
|
226
226
|
[antigravity.google](https://antigravity.google) and run `agy` once to sign
|
|
227
|
-
in)
|
|
227
|
+
in), Grok, Kimi, GLM, Ollama/LM Studio/llama.cpp (local), OpenRouter, and
|
|
228
228
|
any OpenAI-compatible endpoint. See
|
|
229
229
|
[docs/backends](https://comfyui-mcp.artokun.io/docs/backends) for the full
|
|
230
230
|
matrix.
|
|
231
231
|
|
|
232
|
-
Both are optional dependencies, and the panel picks a
|
|
233
|
-
|
|
234
|
-
capability matrix
|
|
232
|
+
Both are optional dependencies, and the panel picks a provider, not a port.
|
|
233
|
+
Each backend runs its own orchestrator on its own loopback bridge port. A
|
|
234
|
+
capability matrix tells the panel which features each backend supports (e.g. conversation-rollback is
|
|
235
235
|
Claude-only today, since the Codex app-server resumes whole threads only).
|
|
236
236
|
|
|
237
237
|
**The live-canvas tools and model knowledge are identical across providers.** The
|
|
238
|
-
`panel_*` tool definitions live in
|
|
238
|
+
`panel_*` tool definitions live in one shared list, registered onto both the
|
|
239
239
|
in-process Claude SDK MCP server *and* a `@modelcontextprotocol/sdk` server over a
|
|
240
|
-
loopback
|
|
240
|
+
loopback streamable-HTTP MCP that the orchestrator hosts for Codex (which can
|
|
241
241
|
only host config-declared MCP servers). The headless `comfyui` MCP is likewise
|
|
242
|
-
injected into both
|
|
243
|
-
mcp_servers` for ChatGPT
|
|
242
|
+
injected into both, in-process for Claude and declared via `codex app-server -c
|
|
243
|
+
mcp_servers` for ChatGPT, so generation, models, and workflow tools are the same
|
|
244
244
|
everywhere.
|
|
245
245
|
|
|
246
246
|
New tools that give every backend the same expertise and a cost guardrail:
|
|
@@ -255,9 +255,9 @@ New tools that give every backend the same expertise and a cost guardrail:
|
|
|
255
255
|
| `panel_load_workflow` | (panel tool) Load a full workflow onto the live canvas in one shot — by bundled `pack` name (read server-side, never shuttled through chat) or by graph JSON |
|
|
256
256
|
| `panel_strip_workflow` / `panel_slice_workflow` | (panel tools) De-virtualize a tangled graph (Get/Set buses, Reroutes, subgraphs, bypass → real connections) or carve one rgthree-toggled pipeline out of a monolith — by `pack`, server-side `path`, or inline graph; for understanding/rebuilding expert workflows without hand-tracing |
|
|
257
257
|
|
|
258
|
-
See the design doc
|
|
258
|
+
See the design doc, [design/agent-backend-injection.md](design/agent-backend-injection.md),
|
|
259
259
|
for the port, the capability matrix, and the per-provider "clink" points, and the
|
|
260
|
-
|
|
260
|
+
[panel docs](https://comfyui-mcp.artokun.io/docs/panel) for the full sidebar UX.
|
|
261
261
|
|
|
262
262
|
---
|
|
263
263
|
|
|
@@ -359,7 +359,7 @@ for the port, the capability matrix, and the per-provider "clink" points, and th
|
|
|
359
359
|
|
|
360
360
|
### Official comfy-cli
|
|
361
361
|
|
|
362
|
-
Install [comfy-cli](https://docs.comfy.org/comfy-cli/getting-started#install-cli) 1.11.1 or newer to enable the official JSON-backed tools. The MCP resolves `comfy` from `COMFY_CLI_PATH`, `PATH`, or the selected workspace's `.venv`/`venv`. Local custom-node operations prefer `comfy node` when a supported CLI is available and otherwise fall back to Manager HTTP; remote targets
|
|
362
|
+
Install [comfy-cli](https://docs.comfy.org/comfy-cli/getting-started#install-cli) 1.11.1 or newer to enable the official JSON-backed tools. The MCP resolves `comfy` from `COMFY_CLI_PATH`, `PATH`, or the selected workspace's `.venv`/`venv`. Local custom-node operations prefer `comfy node` when a supported CLI is available and otherwise fall back to Manager HTTP; remote targets keep using Manager HTTP.
|
|
363
363
|
|
|
364
364
|
| Tool | Description |
|
|
365
365
|
|------|-------------|
|
|
@@ -389,7 +389,7 @@ Install [comfy-cli](https://docs.comfy.org/comfy-cli/getting-started#install-cli
|
|
|
389
389
|
| `get_history` `action: "suggest"` | Suggest proven sampler/scheduler/steps/CFG settings from local generation history — query by model family, LoRA hash, or text search |
|
|
390
390
|
| `get_history` `action: "stats"` | Show local generation tracking statistics — total runs, unique combos, breakdown by model family |
|
|
391
391
|
|
|
392
|
-
Every `enqueue_workflow` call
|
|
392
|
+
Every `enqueue_workflow` call logs settings to a local SQLite database (`generations.db`). Repeated settings combos get a `reuse_count` bump instead of a duplicate row, so the count works as a popularity signal. The tracker identifies models and LoRAs by content hash (AutoV2 / SHA256), not filename, so renamed files still group together.
|
|
393
393
|
|
|
394
394
|
```bash
|
|
395
395
|
# View local stats from the CLI
|
|
@@ -443,7 +443,7 @@ flowchart LR
|
|
|
443
443
|
> /comfy:debug
|
|
444
444
|
```
|
|
445
445
|
|
|
446
|
-
|
|
446
|
+
Reads the last execution history and logs, identifies the failing node, checks for missing models or node packs, and suggests a fix.
|
|
447
447
|
|
|
448
448
|
```
|
|
449
449
|
> /comfy:debug abc123-def456
|
|
@@ -467,7 +467,7 @@ Supported sweep parameters: `cfg`, `steps`, `sampler`, `scheduler`, `seed`, `den
|
|
|
467
467
|
> /comfy:recipe hires-fix a dramatic fantasy landscape with castles
|
|
468
468
|
```
|
|
469
469
|
|
|
470
|
-
Runs
|
|
470
|
+
Runs two passes: txt2img at 512x768, then an img2img upscale to 1024x1536 that adds detail.
|
|
471
471
|
|
|
472
472
|
Available recipes:
|
|
473
473
|
|
|
@@ -501,7 +501,7 @@ Searches the registry, shows details, clones the repo to `custom_nodes/`, instal
|
|
|
501
501
|
> /comfy:gallery today
|
|
502
502
|
```
|
|
503
503
|
|
|
504
|
-
Lists recent outputs with embedded metadata
|
|
504
|
+
Lists recent outputs with their embedded metadata: checkpoint, prompt, seed, steps, CFG, and sampler for each image.
|
|
505
505
|
|
|
506
506
|
### Compare workflows
|
|
507
507
|
|
|
@@ -517,7 +517,7 @@ Shows added/removed nodes, changed parameters (old → new values), and optional
|
|
|
517
517
|
> Validate this workflow before I run it
|
|
518
518
|
```
|
|
519
519
|
|
|
520
|
-
Checks for missing node types, broken connections, invalid output indices, and missing model files
|
|
520
|
+
Checks for missing node types, broken connections, invalid output indices, and missing model files without executing the workflow.
|
|
521
521
|
|
|
522
522
|
### Manage models
|
|
523
523
|
|
|
@@ -548,7 +548,7 @@ Reads the PNG metadata chunks to recover the exact workflow and prompt used to g
|
|
|
548
548
|
> /comfy:node-skill comfyui-impact-pack
|
|
549
549
|
```
|
|
550
550
|
|
|
551
|
-
Generates a
|
|
551
|
+
Generates a skill file documenting every node, its inputs/outputs, and usage patterns.
|
|
552
552
|
|
|
553
553
|
### Process control
|
|
554
554
|
|
|
@@ -566,9 +566,9 @@ The server auto-detects your ComfyUI installation and port. Override with enviro
|
|
|
566
566
|
|
|
567
567
|
Where to put keys and overrides:
|
|
568
568
|
|
|
569
|
-
- **Panel users
|
|
570
|
-
- **MCP-only setups** (Claude Desktop, Claude Code, etc.)
|
|
571
|
-
- Real environment variables always take precedence over stored keys.
|
|
569
|
+
- **Panel users.** Use the **API Keys** card (▾ menu next to "connected"). Keys are stored in `~/.comfyui-mcp/panel-secrets.json` and take effect without a restart.
|
|
570
|
+
- **MCP-only setups** (Claude Desktop, Claude Code, etc.). Use the `env` block of your MCP client config, as shown in the setup examples above.
|
|
571
|
+
- Real environment variables always take precedence over stored keys. For development, the server also loads `~/.comfyui-mcp/.env` as an override file; regular installs shouldn't need it.
|
|
572
572
|
|
|
573
573
|
### Deployment modes
|
|
574
574
|
|
|
@@ -581,8 +581,8 @@ Where to put keys and overrides:
|
|
|
581
581
|
| **Cloud** | `COMFYUI_API_KEY` is set (targets [Comfy Cloud](https://cloud.comfy.org)) | no — HTTP primitives route via `cloud.comfy.org` over `X-API-Key`; WebSocket and local-only tools throw `CLOUD_UNSUPPORTED` |
|
|
582
582
|
|
|
583
583
|
Some setups (e.g. [dstack](https://dstack.ai) driving ComfyUI on RunPod) port-forward
|
|
584
|
-
a remote ComfyUI back to `localhost:8188`, so the loopback check above
|
|
585
|
-
|
|
584
|
+
a remote ComfyUI back to `localhost:8188`, so the loopback check above reports a
|
|
585
|
+
local install that isn't one. Pass `--force-remote` (or set
|
|
586
586
|
`COMFYUI_MCP_FORCE_REMOTE=1`) alongside `--comfyui-url`/`COMFYUI_URL` to force
|
|
587
587
|
remote mode regardless of hostname:
|
|
588
588
|
|
|
@@ -623,7 +623,7 @@ npx -y comfyui-mcp@latest --comfyui-url http://localhost:8188 --force-remote
|
|
|
623
623
|
|
|
624
624
|
### Transports
|
|
625
625
|
|
|
626
|
-
The server speaks
|
|
626
|
+
The server speaks stdio by default, which is what Claude Code, Claude Desktop, and the MCP Inspector expect, so no flags are needed. For MCP gateways, remote/hosted setups, or `fetch`-based clients, opt into streamable-HTTP:
|
|
627
627
|
|
|
628
628
|
```bash
|
|
629
629
|
# stdio (default)
|
|
@@ -644,9 +644,9 @@ npx -y comfyui-mcp@latest --http --host 0.0.0.0 --port 9100 # bind/port overri
|
|
|
644
644
|
|
|
645
645
|
### Other agents & local LLMs (Hermes, OpenClaw, Copilot CLI, Ollama)
|
|
646
646
|
|
|
647
|
-
comfyui-mcp
|
|
648
|
-
writes the server entry into the harness's own config (
|
|
649
|
-
|
|
647
|
+
comfyui-mcp supports non-Claude harnesses. One command
|
|
648
|
+
writes the server entry into the harness's own config (it merges into an existing
|
|
649
|
+
file rather than overwriting it):
|
|
650
650
|
|
|
651
651
|
```bash
|
|
652
652
|
npx -y comfyui-mcp setup hermes # → ~/.hermes/config.yaml (compact by default)
|
|
@@ -655,41 +655,41 @@ npx -y comfyui-mcp setup copilot # → ~/.copilot/mcp-config.json (full by de
|
|
|
655
655
|
# flags: --compact | --full, --comfyui-url <url>, --dry-run
|
|
656
656
|
```
|
|
657
657
|
|
|
658
|
-
**Model requirements
|
|
659
|
-
doesn't work
|
|
658
|
+
**Model requirements.** Tool calling is a hard requirement; a model without tool calling
|
|
659
|
+
doesn't work. Thinking and vision are recommended. Without
|
|
660
660
|
thinking, multi-step tool chains degrade; without vision the agent can
|
|
661
661
|
generate but can't see its own outputs.
|
|
662
662
|
|
|
663
|
-
**Compact tool mode
|
|
663
|
+
**Compact tool mode.** `--compact` /
|
|
664
664
|
`COMFYUI_MCP_TOOL_MODE=compact` registers 3 meta-tools (`list_tools` →
|
|
665
|
-
`describe_tool` → `call_tool`) instead of the direct
|
|
666
|
-
into context one tool at a time
|
|
667
|
-
direct
|
|
665
|
+
`describe_tool` → `call_tool`) instead of the direct tool set, pulling schemas
|
|
666
|
+
into context one tool at a time. That is the right trade for small local models. The
|
|
667
|
+
direct tool set is the default and is what frontier-model harnesses want.
|
|
668
668
|
**Run it locally
|
|
669
|
-
for free with our fine-tuned models
|
|
670
|
-
(also `:e2b` for ~2 GB VRAM, `:12b` for ~8 GB)
|
|
671
|
-
server-verified trajectories over the full comfyui-mcp tool
|
|
672
|
-
panel's Ollama default. Stock `gemma4:*`/`qwen3:4b` also validated end-to-end
|
|
669
|
+
for free with our fine-tuned models.** `ollama pull artokun/gemma4-comfyui-mcp:e4b`
|
|
670
|
+
(also `:e2b` for ~2 GB VRAM, `:12b` for ~8 GB) is Gemma 4, QLoRA-trained on 1,055
|
|
671
|
+
server-verified trajectories over the full comfyui-mcp tool set, and is the
|
|
672
|
+
panel's Ollama default. Stock `gemma4:*`/`qwen3:4b` are also validated end-to-end
|
|
673
673
|
(`npm run test:local-llm`); gemma3 has no native tool calling and is
|
|
674
|
-
unsupported.
|
|
675
|
-
per-harness setup, troubleshooting
|
|
674
|
+
unsupported. The full guide, covering hosted-model guidance (DeepSeek/MiMo/GLM class),
|
|
675
|
+
per-harness setup, and troubleshooting, is
|
|
676
676
|
**[Local LLMs & other agents](https://comfyui-mcp.artokun.io/docs/local-llms)**.
|
|
677
677
|
|
|
678
678
|
| Flag | Env | Default | Description |
|
|
679
679
|
|------|-----|---------|-------------|
|
|
680
680
|
| `setup <agent>` | | | Write the comfyui entry into hermes / openclaw / copilot config, then exit |
|
|
681
|
-
| `--compact` / `--tool-mode compact` | `COMFYUI_MCP_TOOL_MODE=compact` | `full` | Opt into the 3 meta-tools (`list_tools` / `describe_tool` / `call_tool`) instead of the direct
|
|
681
|
+
| `--compact` / `--tool-mode compact` | `COMFYUI_MCP_TOOL_MODE=compact` | `full` | Opt into the 3 meta-tools (`list_tools` / `describe_tool` / `call_tool`) instead of the direct tool set — recommended for small local models. `--full` is still accepted and is now a no-op |
|
|
682
682
|
|
|
683
683
|
### Remote ComfyUI
|
|
684
684
|
|
|
685
|
-
Point the server at a ComfyUI running anywhere
|
|
685
|
+
Point the server at a ComfyUI running anywhere; no local install is required:
|
|
686
686
|
|
|
687
687
|
```bash
|
|
688
688
|
npx -y comfyui-mcp@latest --comfyui-url http://192.168.1.50:8188
|
|
689
689
|
npx -y comfyui-mcp@latest --http --comfyui-url https://comfy.example.com:8443
|
|
690
690
|
```
|
|
691
691
|
|
|
692
|
-
**Behind a reverse proxy / API gateway** (path prefix + auth header)
|
|
692
|
+
**Behind a reverse proxy / API gateway** (path prefix + auth header). For a
|
|
693
693
|
self-hosted ComfyUI exposed under a prefixed route with its own auth layer (this
|
|
694
694
|
is *not* Comfy Cloud, which is `COMFYUI_API_KEY`):
|
|
695
695
|
|
|
@@ -726,12 +726,12 @@ Set `COMFYUI_PATH` to skip detection and use an explicit path.
|
|
|
726
726
|
|
|
727
727
|
The server communicates with ComfyUI through its REST API and WebSocket interface:
|
|
728
728
|
|
|
729
|
-
- **WebSocket
|
|
730
|
-
- **REST API
|
|
731
|
-
- **File system
|
|
732
|
-
- **External APIs
|
|
729
|
+
- **WebSocket.** Enqueue workflows, receive real-time progress updates (step by step via the background monitor script), get execution results
|
|
730
|
+
- **REST API.** System stats, node definitions (`/object_info`), logs, history, queue management, workflow library, VRAM control (`/free`), embeddings
|
|
731
|
+
- **File system.** Read/write the models directory, detect installation paths, upload images, extract PNG metadata, browse outputs
|
|
732
|
+
- **External APIs.** HuggingFace (model search), ComfyUI Registry (custom node discovery), GitHub (skill generation), CivitAI (model downloads)
|
|
733
733
|
|
|
734
|
-
All communication with the MCP client (Claude Code) happens over
|
|
734
|
+
All communication with the MCP client (Claude Code) happens over stdio using the [Model Context Protocol](https://modelcontextprotocol.io). Logs go to stderr so they never mix into the protocol stream.
|
|
735
735
|
|
|
736
736
|
---
|
|
737
737
|
|
|
@@ -876,46 +876,46 @@ Make sure ComfyUI is running. The Desktop app uses port 8000 by default; the CLI
|
|
|
876
876
|
The auto-detection couldn't find your ComfyUI data directory. Set `COMFYUI_PATH` to the directory containing your `models/` folder (e.g., `~/Documents/ComfyUI`).
|
|
877
877
|
|
|
878
878
|
**"Multiple ComfyUI installations detected"**
|
|
879
|
-
This is informational
|
|
879
|
+
This is informational. The server uses the first one found. Set `COMFYUI_PATH` to pick a specific installation.
|
|
880
880
|
|
|
881
881
|
**Model downloads fail**
|
|
882
882
|
For HuggingFace gated models, set `HUGGINGFACE_TOKEN`. For CivitAI, set `CIVITAI_API_TOKEN`.
|
|
883
883
|
|
|
884
884
|
**Workflow execution errors**
|
|
885
|
-
Use `/comfy:debug` to
|
|
885
|
+
Use `/comfy:debug` to diagnose failures. Or call `get_history` (`action: "diagnose"`) / `get_system_stats (action:"logs")` directly to see the full error messages, including Python tracebacks from ComfyUI.
|
|
886
886
|
|
|
887
887
|
**Out of memory (OOM)**
|
|
888
|
-
Use `clear_vram` to free GPU memory before running large workflows. The VRAM watchdog hook
|
|
888
|
+
Use `clear_vram` to free GPU memory before running large workflows. The VRAM watchdog hook warns you when less than 1GB is free before a workflow runs. See the **troubleshooting** skill for model-specific VRAM estimates.
|
|
889
889
|
|
|
890
890
|
**Missing custom nodes**
|
|
891
|
-
Use `/comfy:install <pack>` to install missing node packs from the registry. The debug command
|
|
891
|
+
Use `/comfy:install <pack>` to install missing node packs from the registry. The debug command detects missing packs and suggests them.
|
|
892
892
|
|
|
893
893
|
---
|
|
894
894
|
|
|
895
895
|
## Contributing
|
|
896
896
|
|
|
897
|
-
Contributions are welcome
|
|
897
|
+
Contributions are welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md) for the dev setup, project
|
|
898
898
|
conventions, how to add an MCP tool, and the release process.
|
|
899
899
|
|
|
900
|
-
Quick version: fork → branch (`feat/my-feature`) → make changes (
|
|
900
|
+
Quick version: fork → branch (`feat/my-feature`) → make changes (make sure `npm run build` and
|
|
901
901
|
`npm test` pass; run `npm run docs:gen` if you touched tools) → open a PR.
|
|
902
902
|
|
|
903
903
|
---
|
|
904
904
|
|
|
905
905
|
## Maintainer
|
|
906
906
|
|
|
907
|
-
Built and maintained by [**@artokun**](https://github.com/artokun)
|
|
907
|
+
Built and maintained by [**@artokun**](https://github.com/artokun), a regular contributor across the Comfy-Org ecosystem:
|
|
908
908
|
|
|
909
|
-
- **[Comfy-Org/ComfyUI_frontend](https://github.com/Comfy-Org/ComfyUI_frontend/pulls?q=is%3Apr+author%3Aartokun)
|
|
910
|
-
- **[Comfy-Org/ComfyUI](https://github.com/Comfy-Org/ComfyUI/pulls?q=is%3Apr+author%3Aartokun)** (core)
|
|
909
|
+
- **[Comfy-Org/ComfyUI_frontend](https://github.com/Comfy-Org/ComfyUI_frontend/pulls?q=is%3Apr+author%3Aartokun).** 10 merged PRs, mostly on the v2 graph renderer: subgraph rendering, promoted-widget plumbing, viewport persistence, with backports across `cloud/1.41`, `cloud/1.42`, `core/1.41`, and `core/1.42`.
|
|
910
|
+
- **[Comfy-Org/ComfyUI](https://github.com/Comfy-Org/ComfyUI/pulls?q=is%3Apr+author%3Aartokun)** (core). Crash fixes in the Python backend's video/audio save path ([#12683](https://github.com/Comfy-Org/ComfyUI/pull/12683), [#12550](https://github.com/Comfy-Org/ComfyUI/pull/12550)).
|
|
911
911
|
|
|
912
|
-
|
|
912
|
+
If you're at Comfy-Org (or hiring around the ComfyUI ecosystem), I'd love to chat. Email me at **[art.longbottom.jr@gmail.com](mailto:art.longbottom.jr@gmail.com)**.
|
|
913
913
|
|
|
914
914
|
---
|
|
915
915
|
|
|
916
916
|
## License
|
|
917
917
|
|
|
918
|
-
MIT
|
|
918
|
+
MIT. See [LICENSE](./LICENSE) for details.
|
|
919
919
|
|
|
920
920
|
---
|
|
921
921
|
|
package/dist/comfyui/client.js
CHANGED
|
@@ -397,17 +397,18 @@ export function resetObjectInfoCache() {
|
|
|
397
397
|
export async function backfillObjectInfo(objectInfo, nodeTypes) {
|
|
398
398
|
if (isCloudMode())
|
|
399
399
|
return objectInfo;
|
|
400
|
-
const
|
|
401
|
-
const missing = [...new Set(nodeTypes)].filter((t) => t && !(t in oi));
|
|
400
|
+
const missing = [...new Set(nodeTypes)].filter((t) => t && !(t in objectInfo));
|
|
402
401
|
if (missing.length === 0)
|
|
403
402
|
return objectInfo;
|
|
404
403
|
const base = `${getComfyUIBaseUrl()}/object_info`;
|
|
405
|
-
const merged = { ...
|
|
404
|
+
const merged = { ...objectInfo };
|
|
406
405
|
await Promise.all(missing.map(async (t) => {
|
|
407
406
|
try {
|
|
408
407
|
const res = await comfyuiFetch(`${base}/${encodeURIComponent(t)}`);
|
|
409
408
|
if (!res.ok)
|
|
410
409
|
return;
|
|
410
|
+
// `/object_info/<Type>` answers with the same shape as the bulk endpoint,
|
|
411
|
+
// keyed by the node's live registration name.
|
|
411
412
|
const def = (await res.json());
|
|
412
413
|
if (!def || typeof def !== "object")
|
|
413
414
|
return;
|