nousresearch/hermes-agentMIT33 files

Comfyui

Generate images, video, and audio via diffusion workflows.

Specification
Skill ID
nousresearch/hermes-agent/comfyui
Publisher
nousresearch
Repository
hermes-agent
Installs
0
Files
33
License
MIT
Requires
Requires ComfyUI (local, Comfy Desktop, or Comfy Cloud) and comfy-cli (auto-installed via pipx/uvx by the setup script).
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

nousresearch/hermes-agent/comfyuiInstalls these files
  • SKILL.md
  • references/official-cli.md
  • references/rest-api.md
  • references/template-integrity.md
  • references/workflow-format.md
  • scripts/_common.py
  • scripts/auto_fix_deps.py
  • scripts/check_deps.py
  • scripts/comfyui_setup.sh
  • scripts/extract_schema.py
  • scripts/fetch_logs.py
  • scripts/hardware_check.py
  • scripts/health_check.py
  • scripts/run_batch.py
  • scripts/run_workflow.py
  • scripts/ws_monitor.py
  • tests/README.md
  • tests/conftest.py
  • tests/pytest.ini
  • tests/test_check_deps.py
  • tests/test_cloud_integration.py
  • tests/test_common.py
  • tests/test_extract_schema.py
  • tests/test_run_workflow.py
  • workflows/README.md
  • workflows/animatediff_video.json
  • workflows/flux_dev_txt2img.json
  • workflows/sd15_txt2img.json
  • workflows/sdxl_img2img.json
  • workflows/sdxl_inpaint.json
  • workflows/sdxl_txt2img.json
  • workflows/upscale_4x.json
  • workflows/wan_video_t2v.json

What this skill tells the agent

ComfyUI

Generate images, video, audio, and 3D content through ComfyUI using the official comfy-cli for setup/lifecycle and direct REST/WebSocket API for workflow execution.

What's in this skill

Reference docs (`references/`):

  • official-cli.md — every comfy ... command, with flags
  • rest-api.md — REST + WebSocket endpoints (local + cloud), payload schemas
  • workflow-format.md — API-format JSON, common node types, param mapping
  • template-integrity.md — converting comfyui-workflow-templates from editor format to API format: Reroute bypass, dotted dynamic-input keys (values.a, resize_type.width), Cloud quirks (302 redirect, 1 concurrent free-tier job, 1080p VRAM ceiling), Discord-compatible ffmpeg stitch. Authored by @purzbeats. Load this whenever you're starting from an official template.

Scripts (`scripts/`):

ScriptPurpose
_common.pyShared HTTP, cloud routing, node catalogs (don't run directly)
hardware_check.pyProbe GPU/VRAM/disk → recommend local vs Comfy Cloud
comfyui_setup.shHardware check + comfy-cli + ComfyUI install + launch + verify
extract_schema.pyRead a workflow → list controllable params + model deps
check_deps.pyCheck workflow against running server → list missing nodes/models
auto_fix_deps.pyRun check_deps then comfy node install / comfy model download
run_workflow.pyInject params, submit, monitor, download outputs (HTTP or WS)
run_batch.pySubmit a workflow N times with sweeps, parallel up to your tier
ws_monitor.pyReal-time WebSocket viewer for executing jobs (live progress)
health_check.pyVerification checklist runner — comfy-cli + server + models + smoke test
fetch_logs.pyPull traceback / status messages for a given prompt_id

Example workflows (`workflows/`): SD 1.5, SDXL, Flux Dev, SDXL img2img, SDXL inpaint, ESRGAN upscale, AnimateDiff video, Wan T2V. See workflows/README.md.

When to Use

  • User asks to generate images with Stable Diffusion, SDXL, Flux, SD3, etc.
  • User wants to run a specific ComfyUI workflow file
  • User wants to chain generative steps (txt2img → upscale → face restore)
  • User needs ControlNet, inpainting, img2img, or other advanced pipelines
  • User asks to manage ComfyUI queue, check models, or install custom nodes
  • User wants video/audio/3D generation via AnimateDiff, Hunyuan, Wan, AudioCraft, etc.

Architecture: Two Layers

┌─────────────────────────────────────────────────────┐
│ Layer 1: comfy-cli (official lifecycle tool)        │
│   Setup, server lifecycle, custom nodes, models     │
│   → comfy install / launch / stop / node / model    │
└─────────────────────────┬───────────────────────────┘
                          │
┌─────────────────────────▼───────────────────────────┐
│ Layer 2: REST/WebSocket API + skill scripts         │
│   Workflow execution, param injection, monitoring   │
│   POST /api/prompt, GET /api/view, WS /ws           │
│   → run_workflow.py, run_batch.py, ws_monitor.py    │
└─────────────────────────────────────────────────────┘

Why two layers? The official CLI is excellent for installation and server management but has minimal workflow execution support. The REST/WS API fills that gap — the scripts handle param injection, execution monitoring, and output download that the CLI doesn't do.

Quick Start

Detect environment

# What's available?
command -v comfy >/dev/null 2>&1 && echo "comfy-cli: installed"
curl -s http://127.0.0.1:8188/system_stats 2>/dev/null && echo "server: running"

# Can this machine run ComfyUI locally? (GPU/VRAM/disk check)
python scripts/hardware_check.py

If nothing is installed, see Setup & Onboarding below — but always run the hardware check first.

One-line health check

python scripts/health_check.py
# → JSON: comfy_cli on PATH? server reachable? at least one checkpoint? smoke-test passes?

Core Workflow

Step 1: Get a workflow JSON in API format

Workflows must be in API format (each node has class_type). They come from:

  • ComfyUI web UI → Workflow → Export (API) (newer UI) or the legacy "Save (API Format)" button (older UI)
  • This skill's workflows/ directory (ready-to-run examples)
  • Community downloads (civitai, Reddit, Discord) — usually editor format, must be loaded into ComfyUI then re-exported

Editor format (top-level nodes and links arrays) is not directly executable. The scripts detect this and tell you to re-export.

Step 2: See what's controllable

python scripts/extract_schema.py workflow_api.json --summary-only
# → {"parameter_count": 12, "has_negative_prompt": true, "has_seed": true, ...}

python scripts/extract_schema.py workflow_api.json
# → full schema with parameters, model deps, embedding refs

Step 3: Run with parameters

# Local (defaults to http://127.0.0.1:8188)
python scripts/run_workflow.py \
  --workflow workflow_api.json \
  --args '{"prompt": "a beautiful sunset over mountains", "seed": -1, "steps": 30}' \
  --output-dir ./outputs

# Cloud (export API key once; uses correct /api routing automatically)
export COMFY_CLOUD_API_KEY="comfyui-..."
python scripts/run_workflow.py \
  --workflow workflow_api.json \
  --args '{"prompt": "..."}' \
  --host https://cloud.comfy.org \
  --output-dir ./outputs

# Real-time progress via WebSocket (requires `pip install websocket-client`)
python scripts/run_workflow.py \
  --workflow flux_dev.json \
  --args '{"prompt": "..."}' \
  --ws

# img2img / inpaint: pass --input-image to upload + reference automatically
python scripts/run_workflow.py \
  --workflow sdxl_img2img.json \
  --input-image image=./photo.png \
  --args '{"prompt": "make it watercolor", "denoise": 0.6}'

# Batch / sweep: 8 random seeds, parallel up to cloud tier limit
python scripts/run_batch.py \
  --workflow sdxl.json \
  --args '{"prompt": "abstract"}' \
  --count 8 --randomize-seed --parallel 3 \
  --output-dir ./outputs/batch

-1 for seed (or omitting it with --randomize-seed) generates a fresh random seed per run.

Step 4: Present results

The scripts emit JSON to stdout describing every output file:

{
  "status": "success",
  "prompt_id": "abc-123",
  "outputs": [
    {"file": "./outputs/sdxl_00001_.png", "node_id": "9",
     "type": "image", "filename": "sdxl_00001_.png"}
  ]
}

Decision Tree

User saysToolCommand
Lifecycle (use comfy-cli)
"install ComfyUI"comfy-clibash scripts/comfyui_setup.sh
"start ComfyUI"comfy-clicomfy launch --background
"stop ComfyUI"comfy-clicomfy stop
"install X node"comfy-clicomfy node install <name>
"download X model"comfy-clicomfy model download --url <url> --relative-path models/checkpoints
"list installed models"comfy-clicomfy model list
"list installed nodes"comfy-clicomfy node show installed
Execution (use scripts)
"is everything ready?"scripthealth_check.py (optionally with --workflow X --smoke-test)
"what can I change in this workflow?"scriptextract_schema.py W.json
"check if W's deps are met"scriptcheck_deps.py W.json
"fix missing deps"scriptauto_fix_deps.py W.json
"generate an image"scriptrun_workflow.py --workflow W --args '{...}'
"use this image" (img2img)scriptrun_workflow.py --input-image image=./x.png ...
"8 variations with random seeds"scriptrun_batch.py --count 8 --randomize-seed ...
"show me live progress"scriptws_monitor.py --prompt-id <id>
"fetch the error from job X"scriptfetch_logs.py <prompt_id>
Direct REST
"what's in the queue?"RESTcurl http://HOST:8188/queue (local) or --host https://cloud.comfy.org

Use this skill in a project

Open any RiverX project, search the Skills panel for nousresearch/hermes-agent/comfyui, and install it in one click.

Use this skill