comfyui-mcp 0.46.0 → 0.47.0

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.
Files changed (55) hide show
  1. package/README.md +3 -3
  2. package/dist/config.js +30 -9
  3. package/dist/config.js.map +1 -1
  4. package/dist/orchestrator/codex-backend.js +195 -53
  5. package/dist/orchestrator/codex-backend.js.map +1 -1
  6. package/dist/orchestrator/index.js +33 -3
  7. package/dist/orchestrator/index.js.map +1 -1
  8. package/dist/orchestrator/panel-tools.js +2 -1
  9. package/dist/orchestrator/panel-tools.js.map +1 -1
  10. package/dist/services/ai-toolkit.js +11 -1
  11. package/dist/services/ai-toolkit.js.map +1 -1
  12. package/dist/services/download-jobs.js +92 -0
  13. package/dist/services/download-jobs.js.map +1 -0
  14. package/dist/services/download-progress.js +36 -0
  15. package/dist/services/download-progress.js.map +1 -1
  16. package/dist/services/env-capabilities.js +3 -2
  17. package/dist/services/env-capabilities.js.map +1 -1
  18. package/dist/services/generate-conditioned.js +1 -0
  19. package/dist/services/generate-conditioned.js.map +1 -1
  20. package/dist/services/queue-monitor.js +8 -2
  21. package/dist/services/queue-monitor.js.map +1 -1
  22. package/dist/services/runpod-client.js +146 -6
  23. package/dist/services/runpod-client.js.map +1 -1
  24. package/dist/services/runpod-ssh.js +3 -1
  25. package/dist/services/runpod-ssh.js.map +1 -1
  26. package/dist/services/runpod-watch.js +69 -10
  27. package/dist/services/runpod-watch.js.map +1 -1
  28. package/dist/services/secure-bridge.js +2 -11
  29. package/dist/services/secure-bridge.js.map +1 -1
  30. package/dist/services/training-datasets.js +168 -0
  31. package/dist/services/training-datasets.js.map +1 -0
  32. package/dist/services/workflow-composer.js +3 -0
  33. package/dist/services/workflow-composer.js.map +1 -1
  34. package/dist/tools/generate-conditioned.js +4 -0
  35. package/dist/tools/generate-conditioned.js.map +1 -1
  36. package/dist/tools/image-management.js +24 -0
  37. package/dist/tools/image-management.js.map +1 -1
  38. package/dist/tools/model-extras.js +73 -42
  39. package/dist/tools/model-extras.js.map +1 -1
  40. package/dist/tools/model-management.js +90 -4
  41. package/dist/tools/model-management.js.map +1 -1
  42. package/dist/tools/prompt-director.js +2 -1
  43. package/dist/tools/prompt-director.js.map +1 -1
  44. package/dist/tools/runpod.js +12 -3
  45. package/dist/tools/runpod.js.map +1 -1
  46. package/dist/tools/train.js +104 -10
  47. package/dist/tools/train.js.map +1 -1
  48. package/docker/runpod/Dockerfile +15 -2
  49. package/docker/runpod/README.md +23 -0
  50. package/docker/runpod/deadman_server.py +71 -0
  51. package/docker/runpod/deadman_watch.sh +106 -0
  52. package/docker/runpod/post_start.sh +17 -0
  53. package/docker/runpod/test_deadman_harness.py +206 -0
  54. package/package.json +1 -1
  55. package/scripts/asset-counts.mjs +129 -0
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-director.js","sourceRoot":"","sources":["../../src/tools/prompt-director.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,SAAS,SAAS;IAChB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CACtG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC;AAGD,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,kHAAkH;QAChH,mHAAmH;QACnH,oHAAoH;QACpH,uHAAuH;QACvH,mGAAmG,EACrG;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mFAAmF,CAAC;KAC7H,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,EAAE,8BAA8B,KAAK,EAAE,CAAC,CAAC;YAClF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,iBAAiB,CACtB,IAAI,KAAK,CACP,mCAAmC,QAAQ,CAAC,MAAM,0DAA0D,CAC7G,CACF,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC7E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAGD,eAAe,2BAA2B,CAAC"}
1
+ {"version":3,"file":"prompt-director.js","sourceRoot":"","sources":["../../src/tools/prompt-director.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,SAAS,SAAS;IAChB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CACtG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC;AAGD,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,kHAAkH;QAChH,mHAAmH;QACnH,oHAAoH;QACpH,uHAAuH;QACvH,mGAAmG,EACrG;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mFAAmF,CAAC;KAC7H,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,SAAS,EAAE,8BAA8B,KAAK,EAAE,CAAC,CAAC;YACzF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,iBAAiB,CACtB,IAAI,KAAK,CACP,mCAAmC,QAAQ,CAAC,MAAM,0DAA0D,CAC7G,CACF,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC7E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAGD,eAAe,2BAA2B,CAAC"}
@@ -57,8 +57,15 @@ function summarizePod(pod) {
57
57
  if (pod.runtime) {
58
58
  lines.push(`Uptime: ${fmtUptime(pod.runtime.uptimeInSeconds)}`);
59
59
  const g = pod.runtime.gpus?.[0];
60
- if (g)
61
- lines.push(`GPU util: ${g.gpuUtilPercent}% · VRAM: ${g.memoryUtilPercent}%`);
60
+ // Telemetry leaves are nullable in RunPod's schema (#269 r2) — render
61
+ // each only when actually reported, never a literal "null%".
62
+ if (g) {
63
+ const util = g.gpuUtilPercent != null ? `GPU util: ${g.gpuUtilPercent}%` : "";
64
+ const vram = g.memoryUtilPercent != null ? `VRAM: ${g.memoryUtilPercent}%` : "";
65
+ const both = [util, vram].filter(Boolean).join(" · ");
66
+ if (both)
67
+ lines.push(both);
68
+ }
62
69
  }
63
70
  if (comfyuiPortExposed(pod)) {
64
71
  lines.push(`ComfyUI: ${runpodProxyUrl(pod.id)} (connect with runpod_pod_connect)`);
@@ -170,17 +177,19 @@ export function registerRunpodTools(server) {
170
177
  }
171
178
  });
172
179
  // ── CREATE (deploy our template via the API — referral-earning) ───────────
173
- server.tool("runpod_pod_create", "Deploy a BRAND-NEW RunPod pod from our comfyui-mcp template (image with the panel + Manager + our nodes preinstalled), then it can be started/connected like any pod. One-tap alternative to the console deploy link for a user who already has a RunPod account + API key. Because our template is used, the agent can install the user's exact custom nodes/LoRAs + download models on it → full canvas parity. Tries several GPU types until one has capacity (on-demand availability fluctuates). NOTE: this bills GPU-time as soon as the pod boots — confirm with the user first, and stop it (runpod_pod_stop) when done. For onboarding a NEW RunPod user, prefer runpod_deploy_link so their signup credits our referral.", {
180
+ server.tool("runpod_pod_create", "Deploy a BRAND-NEW RunPod pod from our comfyui-mcp template (image with the panel + Manager + our nodes preinstalled), then it can be started/connected like any pod. One-tap alternative to the console deploy link for a user who already has a RunPod account + API key. Because our template is used, the agent can install the user's exact custom nodes/LoRAs + download models on it → full canvas parity. Tries several GPU types until one has capacity (on-demand availability fluctuates). NOTE: this bills GPU-time as soon as the pod boots — confirm with the user first, and stop it (runpod_pod_stop) when done. Created pods carry a DEAD-MAN SWITCH: if comfyui-mcp stops minding the pod (crash/offline), the pod STOPS ITSELF after a grace period so it can't bill forever — it uses the pod-scoped key RunPod auto-injects, so your account key never leaves this machine (disable with deadman:false). For onboarding a NEW RunPod user, prefer runpod_deploy_link so their signup credits our referral.", {
174
181
  name: z.string().optional().describe("Pod name (default 'comfyui-mcp')."),
175
182
  gpu_type: z.string().optional().describe(`GPU type to prefer, e.g. "NVIDIA GeForce RTX 4090". Default tries: ${RUNPOD_DEFAULT_GPU_TYPES.join(", ")}.`),
176
183
  cloud_type: z.enum(["COMMUNITY", "SECURE"]).optional().describe("COMMUNITY (cheaper, default) or SECURE."),
177
184
  connect: z.boolean().optional().describe("Auto-connect when booted: the ORCHESTRATOR waits for ComfyUI to answer (1-3min), then retargets + watches — this call returns immediately (default false: deploy only; connect later with runpod_pod_connect)."),
185
+ deadman: z.boolean().optional().describe("Arm the pod-side dead-man watchdog (default true for OUR stock template): the pod STOPS ITSELF if comfyui-mcp's heartbeats stop (process crash/offline — boot grace ~45min, then ~20min without beats). Uses the pod-scoped API key RunPod auto-injects into every pod — your account key never leaves this machine. false deploys without the watchdog. With a custom template (RUNPOD_TEMPLATE_ID) the default is OFF — pass true only if that image ships our watchdog."),
178
186
  }, async (args) => {
179
187
  try {
180
188
  const pod = await createPod({
181
189
  name: args.name,
182
190
  gpuTypeIds: args.gpu_type ? [args.gpu_type] : undefined,
183
191
  cloudType: args.cloud_type,
192
+ deadman: args.deadman,
184
193
  });
185
194
  const cost = pod.costPerHr != null ? ` at $${pod.costPerHr.toFixed(3)}/hr` : "";
186
195
  const gpu = pod.machine?.gpuDisplayName ? ` on ${pod.machine.gpuDisplayName}` : "";
@@ -1 +1 @@
1
- {"version":3,"file":"runpod.js","sourceRoot":"","sources":["../../src/tools/runpod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runpod.js","sourceRoot":"","sources":["../../src/tools/runpod.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import { z } from "zod";
2
2
  import { fileURLToPath } from "node:url";
3
3
  import { existsSync } from "node:fs";
4
- import { join } from "node:path";
4
+ import { realpath } from "node:fs/promises";
5
+ import { basename, join, resolve, sep } from "node:path";
6
+ import { resolveInputDir, resolveOutputDir } from "../services/output-dir.js";
5
7
  import { buildTrainerImage, dockerAvailable, trainerDoctor, trainerImageExists, TRAINER_IMAGE, } from "../services/ai-toolkit.js";
6
8
  import { DEFAULT_PARAMS } from "../services/training-config.js";
7
9
  import { cancelJob, getJob, hfCacheRoot, listJobs, prepareDataset, startTrainingJob, trainingRoot, } from "../services/training-jobs.js";
10
+ import { getDataset, getJobConfig, listDatasets, readTrainingFile } from "../services/training-datasets.js";
8
11
  import { errorToToolResult } from "../utils/errors.js";
9
12
  import { isRemoteMode } from "../config.js";
10
13
  function textEnvelope(envelope) {
@@ -38,12 +41,52 @@ async function resolvePodForTraining(podId) {
38
41
  }
39
42
  return pod;
40
43
  }
44
+ /** Map tool items (path | ComfyUI ref) to host-absolute DatasetItems. Refs
45
+ * resolve against the connected ComfyUI's output/input root with containment:
46
+ * the filename must be a plain basename and the resolved path must stay INSIDE
47
+ * the root — otherwise a crafted ref could stage ANY host file into a dataset
48
+ * (path traversal). prepareDataset then verifies existence/type per item. */
49
+ async function resolveDatasetItems(items) {
50
+ const norm = (p) => (process.platform === "win32" ? p.toLowerCase() : p);
51
+ return Promise.all(items.map(async (it) => {
52
+ // An explicit host path always wins over a ref (both are allowed so a
53
+ // caller can attach a ref for traceability).
54
+ if (it.path)
55
+ return { path: it.path, caption: it.caption };
56
+ // Refs resolve on the ORCHESTRATOR's filesystem — against a remote
57
+ // ComfyUI (pod/LAN) the root would come from that machine's stats while
58
+ // prepareDataset checks/copies locally (codex finding). Reject honestly.
59
+ if (isRemoteMode()) {
60
+ throw new Error("ref items need a LOCAL ComfyUI (the orchestrator must share its filesystem) — pass absolute paths, or fetch the remote outputs first");
61
+ }
62
+ const { filename, subfolder, type } = it.ref;
63
+ if (filename !== basename(filename)) {
64
+ throw new Error(`ref filename must be a plain basename, got "${filename}"`);
65
+ }
66
+ const kind = type ?? "output";
67
+ const root = resolve(kind === "input" ? await resolveInputDir() : await resolveOutputDir());
68
+ const candidate = resolve(root, subfolder ?? "", filename);
69
+ // Containment on REAL paths — a symlinked subfolder/file pointing outside
70
+ // the root must not smuggle the copy across (codex finding). A missing
71
+ // target keeps its lexical path; prepareDataset reports it not-found.
72
+ const realRoot = await realpath(root).catch(() => root);
73
+ const realCandidate = await realpath(candidate).catch(() => candidate);
74
+ if (norm(realCandidate) !== norm(realRoot) && !norm(realCandidate).startsWith(norm(realRoot) + sep)) {
75
+ throw new Error(`ref "${subfolder ?? ""}/${filename}" escapes the ${kind} dir`);
76
+ }
77
+ return { path: realCandidate, caption: it.caption };
78
+ }));
79
+ }
41
80
  const paramsSchema = z
42
81
  .object({
43
- steps: z.number().int().min(1).optional().describe("Total training steps (200 = smoke test, 1500-3000 real)."),
44
- lr: z.number().positive().optional().describe("Learning rate."),
45
- rank: z.number().int().min(1).optional().describe("LoRA rank (16 simple, 16-32 detailed)."),
46
- resolution: z.array(z.number().int().positive()).min(1).optional().describe("Resolution buckets, e.g. [512,768,1024]."),
82
+ // Upper bounds (panel #104): the Custom preset is free-form, and a typo
83
+ // like steps=10^9 / rank=100000 / resolution=100000 starts a doomed,
84
+ // OOM, BILLED run. Ceilings are generous but sane; the panel wizard
85
+ // mirrors them client-side.
86
+ steps: z.number().int().min(1).max(100_000).optional().describe("Total training steps (200 = smoke test, 1500-3000 real; max 100000)."),
87
+ lr: z.number().positive().max(1).optional().describe("Learning rate (max 1)."),
88
+ rank: z.number().int().min(1).max(1024).optional().describe("LoRA rank (16 simple, 16-32 detailed; max 1024)."),
89
+ resolution: z.array(z.number().int().min(64).max(4096)).min(1).optional().describe("Resolution buckets, e.g. [512,768,1024] (each 64-4096)."),
47
90
  batchSize: z.number().int().min(1).optional(),
48
91
  saveEvery: z.number().int().min(1).optional().describe("Checkpoint cadence (steps)."),
49
92
  sampleEvery: z.number().int().min(1).optional().describe("Sample-image cadence (steps)."),
@@ -78,18 +121,29 @@ export function registerTrainTools(server) {
78
121
  return errorToToolResult(error);
79
122
  }
80
123
  });
81
- server.tool("train_prepare_dataset", "Stage training images + captions into a dataset dir the trainer consumes. Each item is an image path with an optional caption (a missing caption falls back to defaultCaption — typically the trigger word). Returns the datasetPath to pass to train_start. Character LoRA guidance: 10-30 varied images; caption what changes between images, keep the trigger word constant.", {
124
+ server.tool("train_prepare_dataset", "Stage training images + captions into a dataset dir the trainer consumes. Each item is an image (absolute `path`, OR a ComfyUI `ref` {filename,subfolder?,type?} resolved against the connected ComfyUI's output/input dirs — how phone/panel pickers hand over selections) with an optional caption (a missing caption falls back to defaultCaption — typically the trigger word). Returns the datasetPath to pass to train_start. Character LoRA guidance: 10-30 varied images; caption what changes between images, keep the trigger word constant.", {
82
125
  name: z.string().min(1).describe("Dataset name (becomes the staging dir name)."),
83
126
  items: z
84
- .array(z.object({
85
- path: z.string().min(1).describe("Absolute path to a source image (png/jpg/jpeg/webp)."),
127
+ .array(z
128
+ .object({
129
+ path: z.string().min(1).optional().describe("Absolute path to a source image (png/jpg/jpeg/webp)."),
130
+ ref: z
131
+ .object({
132
+ filename: z.string().min(1).describe("Basename only — no path separators."),
133
+ subfolder: z.string().optional().describe("Subfolder under the root (default top level)."),
134
+ type: z.enum(["output", "input"]).optional().default("output").describe("Which ComfyUI dir to resolve against (default output)."),
135
+ })
136
+ .optional()
137
+ .describe("ComfyUI file ref (e.g. from list_output_images format:json) — resolved server-side with containment checks. Give path OR ref."),
86
138
  caption: z.string().optional().describe("Caption for this image."),
87
- }))
139
+ })
140
+ .refine((it) => !!it.path || !!it.ref, { message: "each item needs path or ref" }))
88
141
  .min(1),
89
142
  defaultCaption: z.string().optional().describe("Fallback caption for items without one — usually the trigger word."),
90
143
  }, async (args) => {
91
144
  try {
92
- const prepared = await prepareDataset({ name: args.name, items: args.items, defaultCaption: args.defaultCaption });
145
+ const items = await resolveDatasetItems(args.items);
146
+ const prepared = await prepareDataset({ name: args.name, items, defaultCaption: args.defaultCaption });
93
147
  return textEnvelope({ ok: true, ...prepared });
94
148
  }
95
149
  catch (error) {
@@ -233,6 +287,46 @@ export function registerTrainTools(server) {
233
287
  return errorToToolResult(error);
234
288
  }
235
289
  });
290
+ // ── Datasets + job config (read-only views for the panel/mobile surfaces) ──
291
+ server.tool("train_list_datasets", "List staged training datasets (the dirs from train_prepare_dataset), newest-first, with image/caption counts. Read-only — pair with train_dataset_detail to see one dataset's images + captions.", {}, async () => {
292
+ try {
293
+ return textEnvelope({ ok: true, datasets: listDatasets() });
294
+ }
295
+ catch (error) {
296
+ return errorToToolResult(error);
297
+ }
298
+ });
299
+ server.tool("train_dataset_detail", "Show one staged dataset: its dir (datasetPath — reusable as train_start's datasetPath) and every image with its caption (null when uncaptioned). Images render via train_file. Read-only.", {
300
+ name: z.string().min(1).describe("Dataset name (from train_list_datasets)."),
301
+ }, async (args) => {
302
+ try {
303
+ return textEnvelope({ ok: true, ...getDataset(args.name) });
304
+ }
305
+ catch (error) {
306
+ return errorToToolResult(error);
307
+ }
308
+ });
309
+ server.tool("train_job_config", "Show the effective settings a training job ran with (steps/lr/rank/resolution/batch/saveEvery/sampleEvery/quantize) read back from the ai-toolkit config.yml it consumed, plus flow/model/trigger/datasetPath — everything needed to run the job again with tweaks. Read-only.", {
310
+ id: z.string().min(1).describe("Job id from train_start."),
311
+ }, async (args) => {
312
+ try {
313
+ return textEnvelope({ ok: true, ...(await getJobConfig(args.id)) });
314
+ }
315
+ catch (error) {
316
+ return errorToToolResult(error);
317
+ }
318
+ });
319
+ server.tool("train_file", "Fetch an image under the training root (dataset image, job sample) as an inline image — the tunnel-safe way for a phone/panel to render training files it can't reach over /view. Bounded: image files only, ≤ 2MB.", {
320
+ path: z.string().min(1).describe("Absolute path under the training root (from train_dataset_detail's datasetPath or train_status's samples)."),
321
+ }, async (args) => {
322
+ try {
323
+ const { data, mimeType } = readTrainingFile(args.path);
324
+ return { content: [{ type: "image", data, mimeType }] };
325
+ }
326
+ catch (error) {
327
+ return errorToToolResult(error);
328
+ }
329
+ });
236
330
  server.tool("train_cancel", "Stop a running training job (docker stop) and mark it cancelled. Checkpoints already saved stay in the job's output dir; no LoRA is handed off to models/loras. Returns ok:false when the container could not be confirmed stopped (the job reverts to running).", {
237
331
  id: z.string().min(1).describe("Job id from train_start."),
238
332
  }, async (args) => {
@@ -1 +1 @@
1
- {"version":3,"file":"train.js","sourceRoot":"","sources":["../../src/tools/train.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"train.js","sourceRoot":"","sources":["../../src/tools/train.ts"],"names":[],"mappings":"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"}
@@ -315,6 +315,12 @@ COPY starting.html /usr/share/nginx/html/readme.html
315
315
  COPY post_start.sh /post_start.sh
316
316
  RUN chmod +x /post_start.sh
317
317
 
318
+ # Dead-man switch (#269) — heartbeat server + self-stop watchdog, launched by
319
+ # post_start.sh only when the pod env carries RUNPOD_API_KEY + DEADMAN_TOKEN
320
+ # (i.e. pods created via runpod_pod_create). See deadman_watch.sh's header.
321
+ COPY deadman_server.py deadman_watch.sh /opt/comfyui-mcp-deadman/
322
+ RUN chmod +x /opt/comfyui-mcp-deadman/deadman_watch.sh
323
+
318
324
  # File Browser (https://filebrowser.org) — a single Go binary web file manager.
319
325
  # Placed LATE so it doesn't bust the expensive torch/ComfyUI layer cache. The
320
326
  # entrypoint runs it rooted at /workspace (browse/upload/download/delete), fronted
@@ -418,12 +424,18 @@ RUN set -e; \
418
424
  "${COMFY_HOME}/custom_nodes_seed/comfyui-mcp-panel/web/js/comfyui-mcp-panel.js" \
419
425
  "${COMFY_HOME}/extra_model_paths.yaml" \
420
426
  "${COMFY_HOME}/config.ini.seed" \
421
- /post_start.sh; do \
427
+ /post_start.sh \
428
+ /opt/comfyui-mcp-deadman/deadman_server.py \
429
+ /opt/comfyui-mcp-deadman/deadman_watch.sh; do \
422
430
  [ -s "$f" ] || { echo "INTEGRITY GATE FAILED: $f is missing or 0 bytes"; exit 1; }; \
423
431
  done; \
424
432
  EMPTY="$(find "${COMFY_HOME}/custom_nodes_seed" -type f -size 0 | head -20)"; \
425
433
  [ -z "$EMPTY" ] || { echo "INTEGRITY GATE FAILED: 0-byte files in custom_nodes_seed:"; echo "$EMPTY"; exit 1; }; \
426
434
  bash -n /post_start.sh || { echo "INTEGRITY GATE FAILED: /post_start.sh has syntax errors"; exit 1; }; \
435
+ bash -n /opt/comfyui-mcp-deadman/deadman_watch.sh \
436
+ || { echo "INTEGRITY GATE FAILED: deadman_watch.sh has syntax errors"; exit 1; }; \
437
+ "${COMFY_HOME}/venv/bin/python" -m py_compile /opt/comfyui-mcp-deadman/deadman_server.py \
438
+ || { echo "INTEGRITY GATE FAILED: deadman_server.py does not compile"; exit 1; }; \
427
439
  "${COMFY_HOME}/venv/bin/python" -c "import torch; import importlib.metadata as m; m.version('comfyui-manager')" \
428
440
  || { echo "INTEGRITY GATE FAILED: venv torch import / comfyui-manager package"; exit 1; }; \
429
441
  command -v aria2c >/dev/null \
@@ -482,5 +494,6 @@ RUN rm -rf /workspace/.cache /workspace/.logs && mkdir -p /workspace
482
494
  # 8083 File Browser (via nginx -> :8082; rooted at /workspace)
483
495
  # 8081 code-server (via nginx -> :8080)
484
496
  # 8001 app-manager (via nginx -> :8000)
497
+ # 8189 dead-man heartbeat server (token-gated; only armed on API-created pods)
485
498
  # 22 SSH (base; RunPod PUBLIC_KEY)
486
- EXPOSE 3000 8888 8083 8081 8001 22
499
+ EXPOSE 3000 8888 8083 8081 8001 8189 22
@@ -345,11 +345,34 @@ transparent to ComfyUI and the agent.
345
345
  | **runpod-uploader** | — | COPY from donor | file uploader; best-effort |
346
346
  | **croc** | — | COPY from donor | on-demand P2P transfer |
347
347
  | **cron** | — | apt | best-effort |
348
+ | **dead-man watchdog** | 8189 (heartbeat) | `deadman_server.py` + `deadman_watch.sh` | see below |
348
349
 
349
350
  All ancillary services are launched **best-effort** — if a binary is absent (e.g.
350
351
  you dropped the donor COPYs) the entrypoint logs `skip` and carries on, so the
351
352
  image still boots ComfyUI fine.
352
353
 
354
+ ### Dead-man switch (#269)
355
+
356
+ Pods **created via `runpod_pod_create`** carry a billing dead-man switch. The
357
+ in-process idle auto-stop dies with the orchestrator (crash / closed laptop);
358
+ without a pod-side guard the pod would bill forever. So:
359
+
360
+ - `deadman_server.py` (:8189, token-gated) receives the orchestrator's
361
+ heartbeats (one per watch poll) and refreshes a beat file;
362
+ - `deadman_watch.sh` stops the pod **itself** (GraphQL `podStop` — stop, never
363
+ terminate, so `/workspace` survives) when the beats stop: 20 min without a
364
+ beat once managed, or 45 min after boot with no heartbeat at all
365
+ (`DEADMAN_BEAT_GRACE_S` / `DEADMAN_BOOT_GRACE_S`).
366
+
367
+ The stop is authorized by the **pod-scoped `RUNPOD_API_KEY` RunPod auto-injects
368
+ into every pod** — the owner's account-wide key never leaves the orchestrator.
369
+ Arming is signaled by the pod env carrying `DEADMAN_TOKEN` (injected by
370
+ `runpod_pod_create`; a sha256 of key + unique deploy name, authorizes
371
+ heartbeats **only** — it is not an API key and cannot stop the pod).
372
+ Console-deployed pods have no token, so their watchdog stays inert. Opt out of
373
+ arming with `deadman:false` / `RUNPOD_DEADMAN=0` at create, or
374
+ `DEADMAN_DISABLE=1` as a pod env.
375
+
353
376
  ---
354
377
 
355
378
  ## Topology: where the agent runs
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env python3
2
+ """comfyui-mcp dead-man heartbeat server (pod side) — #269.
3
+
4
+ Part of the dead-man switch: pods created via runpod_pod_create carry a
5
+ watchdog (deadman_watch.sh) that STOPS THE POD when comfyui-mcp's heartbeats
6
+ stop (orchestrator crash / laptop closed = the in-process idle auto-stop is
7
+ gone too, and without this the pod would bill forever). This tiny stdlib-only
8
+ HTTP server is the heartbeat receiver: each GET /heartbeat?token=... refreshes
9
+ the beat file the watchdog checks.
10
+
11
+ Endpoints:
12
+ GET /heartbeat?token=X -> 200 + refresh beat file (403 on wrong/missing token)
13
+ GET /health -> 200 (liveness only; does NOT count as a beat)
14
+
15
+ Env:
16
+ DEADMAN_TOKEN required; beats without the matching token are rejected.
17
+ Injected at pod create; derived from the owner's API key +
18
+ unique deploy name, so it authorizes heartbeats ONLY (it is
19
+ not the API key and cannot stop the pod).
20
+ DEADMAN_PORT listen port (default 8189; exposed as an HTTP proxy port).
21
+ """
22
+
23
+ import os
24
+ import time
25
+ from http.server import BaseHTTPRequestHandler, HTTPServer
26
+ from urllib.parse import urlparse, parse_qs
27
+
28
+ TOKEN = os.environ.get("DEADMAN_TOKEN", "")
29
+ PORT = int(os.environ.get("DEADMAN_PORT", "8189"))
30
+ BEAT_FILE = os.environ.get("DEADMAN_BEAT_FILE", "/tmp/comfyui-mcp-deadman-beat")
31
+
32
+
33
+ class Handler(BaseHTTPRequestHandler):
34
+ server_version = "comfyui-mcp-deadman/1"
35
+
36
+ def _reply(self, code: int, body: bytes = b"") -> None:
37
+ self.send_response(code)
38
+ self.send_header("content-type", "text/plain")
39
+ self.send_header("content-length", str(len(body)))
40
+ self.end_headers()
41
+ if body:
42
+ self.wfile.write(body)
43
+
44
+ def do_GET(self) -> None: # noqa: N802 (stdlib handler name)
45
+ url = urlparse(self.path)
46
+ if url.path == "/health":
47
+ self._reply(200, b"ok\n")
48
+ return
49
+ if url.path == "/heartbeat":
50
+ token = parse_qs(url.query).get("token", [""])[0]
51
+ # Constant-time-ish compare isn't worth secrets here (the token is
52
+ # per-deploy + heartbeat-only), but DO require it to be configured.
53
+ if not TOKEN or token != TOKEN:
54
+ self._reply(403, b"forbidden\n")
55
+ return
56
+ with open(BEAT_FILE, "w", encoding="utf-8") as f:
57
+ f.write(str(time.time()))
58
+ self._reply(200, b"ok\n")
59
+ return
60
+ self._reply(404, b"not found\n")
61
+
62
+ def log_message(self, *_args) -> None: # keep the pod console quiet
63
+ pass
64
+
65
+
66
+ if __name__ == "__main__":
67
+ if not TOKEN:
68
+ # post_start.sh gates on this too — refusing to start token-less means a
69
+ # misconfigured pod can never be kept alive by unauthenticated beats.
70
+ raise SystemExit("DEADMAN_TOKEN is not set — heartbeat server refusing to start")
71
+ HTTPServer(("0.0.0.0", PORT), Handler).serve_forever()
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env bash
2
+ # comfyui-mcp dead-man watchdog (pod side) — #269.
3
+ # =============================================================================
4
+ # Pods created via runpod_pod_create carry this loop + the heartbeat server
5
+ # (deadman_server.py). While comfyui-mcp minds the pod it heartbeats every
6
+ # poll; if the beats STOP (orchestrator crash, laptop closed, network gone),
7
+ # the in-process idle auto-stop is gone too — so this loop stops the pod
8
+ # ITSELF after the grace period instead of letting it bill forever.
9
+ #
10
+ # * beat file present + older than DEADMAN_BEAT_GRACE_S -> stop (lost manager)
11
+ # * NO beat file at all after DEADMAN_BOOT_GRACE_S up -> stop (never managed:
12
+ # covers a create whose response was lost before anyone started watching)
13
+ #
14
+ # STOP (not terminate): the /workspace volume survives and the pod can be
15
+ # resumed later — same severity as the in-process idle auto-stop.
16
+ #
17
+ # Requires RUNPOD_POD_ID + DEADMAN_TOKEN in the pod env. The stop itself is
18
+ # authorized by RUNPOD_API_KEY — the POD-SCOPED key RunPod auto-injects into
19
+ # every pod (docs.runpod.io/pods/templates/environment-variables), NOT the
20
+ # owner's account key, which never leaves the orchestrator. Opt out of arming
21
+ # with `deadman:false` / RUNPOD_DEADMAN=0 at create time, or DEADMAN_DISABLE=1
22
+ # as a pod env any time. RUNPOD_GRAPHQL_ENDPOINT is overridable for tests.
23
+ # =============================================================================
24
+ set -uo pipefail
25
+
26
+ LOG_DIR="${LOG_DIR:-/var/log/comfyui-mcp}"
27
+ mkdir -p "${LOG_DIR}" 2>/dev/null || true
28
+ log() { echo "[comfyui-mcp/deadman] $(date -u +%H:%M:%S) $*" >> "${LOG_DIR}/deadman.log"; }
29
+
30
+ if [ "${DEADMAN_DISABLE:-0}" = "1" ]; then
31
+ log "disabled (DEADMAN_DISABLE=1) — exiting"
32
+ exit 0
33
+ fi
34
+ if [ -z "${RUNPOD_API_KEY:-}" ] || [ -z "${RUNPOD_POD_ID:-}" ]; then
35
+ log "RUNPOD_API_KEY/RUNPOD_POD_ID not set (console-deployed pod?) — inert, exiting"
36
+ exit 0
37
+ fi
38
+
39
+ BOOT_GRACE="${DEADMAN_BOOT_GRACE_S:-2700}" # 45min: boot + connect window
40
+ BEAT_GRACE="${DEADMAN_BEAT_GRACE_S:-1200}" # 20min: poll is 15s — huge slack
41
+ TICK="${DEADMAN_TICK_S:-60}" # check cadence (env for tests)
42
+ BEAT_FILE="${DEADMAN_BEAT_FILE:-/tmp/comfyui-mcp-deadman-beat}"
43
+ ENDPOINT="${RUNPOD_GRAPHQL_ENDPOINT:-https://api.runpod.io/graphql}"
44
+ START_TS="$(date +%s)"
45
+ # JSON parsing for the podStop verdict — grep can false-positive on
46
+ # {"data":{"podStop":null}} / errors[].path (codex finding); parse for real.
47
+ PYBIN="$([ -x "${COMFY_HOME:-/opt/ComfyUI}/venv/bin/python" ] && echo "${COMFY_HOME:-/opt/ComfyUI}/venv/bin/python" || command -v python3)"
48
+
49
+ # The container disk SURVIVES a pod stop/start, so a beat file from the previous
50
+ # boot can already be older than BEAT_GRACE — trust it and we'd stop the pod on
51
+ # the first tick instead of granting boot grace (codex finding). Always start
52
+ # from a clean slate: only beats fresher than THIS watchdog's start count.
53
+ rm -f "${BEAT_FILE}"
54
+
55
+ log "armed: boot grace ${BOOT_GRACE}s, beat grace ${BEAT_GRACE}s, tick ${TICK}s, beat file ${BEAT_FILE}"
56
+
57
+ # Exit 0 only on a PARSED, non-null podStop result with no GraphQL errors —
58
+ # anything else (HTTP error, {"podStop":null}, errors[].path) means the pod is
59
+ # still running and we must keep guarding (codex finding).
60
+ stop_accepted() { # $1 = raw GraphQL response body
61
+ [ -n "${PYBIN}" ] || return 1
62
+ printf '%s' "$1" | "${PYBIN}" -c '
63
+ import json, sys
64
+ try:
65
+ d = json.load(sys.stdin)
66
+ except Exception:
67
+ sys.exit(1)
68
+ ps = (d.get("data") or {}).get("podStop")
69
+ sys.exit(0 if (not d.get("errors") and isinstance(ps, dict) and ps.get("id")) else 1)
70
+ '
71
+ }
72
+
73
+ stop_pod() { # $1 = reason
74
+ log "STOPPING POD ${RUNPOD_POD_ID}: $1"
75
+ local out rc
76
+ out="$(curl -sS -m 20 -X POST "${ENDPOINT}" \
77
+ -H 'content-type: application/json' \
78
+ -H "authorization: Bearer ${RUNPOD_API_KEY}" \
79
+ -d "{\"query\":\"mutation Stop(\$input: PodStopInput!) { podStop(input: \$input) { id desiredStatus } }\",\"variables\":{\"input\":{\"podId\":\"${RUNPOD_POD_ID}\"}}}" 2>&1)"
80
+ rc=$?
81
+ log "podStop rc=${rc}: ${out}"
82
+ # Keep looping on failure (transient API blip must not disarm the guard);
83
+ # once RunPod ACCEPTS the stop the pod goes down and takes us with it.
84
+ if [ "${rc}" -eq 0 ] && stop_accepted "${out}"; then
85
+ log "stop accepted — watchdog done"
86
+ exit 0
87
+ fi
88
+ log "stop FAILED or unconfirmed — retrying next cycle (pod still billing!)"
89
+ }
90
+
91
+ while :; do
92
+ sleep "${TICK}"
93
+ now="$(date +%s)"
94
+ if [ -f "${BEAT_FILE}" ]; then
95
+ last_beat="$(stat -c %Y "${BEAT_FILE}" 2>/dev/null || echo "${now}")"
96
+ age=$(( now - last_beat ))
97
+ if [ "${age}" -gt "${BEAT_GRACE}" ]; then
98
+ stop_pod "no heartbeat for ${age}s (> ${BEAT_GRACE}s) — manager is gone"
99
+ fi
100
+ else
101
+ up=$(( now - START_TS ))
102
+ if [ "${up}" -gt "${BOOT_GRACE}" ]; then
103
+ stop_pod "no heartbeat received within ${BOOT_GRACE}s of boot — never managed"
104
+ fi
105
+ fi
106
+ done