Skip to content

Repository files navigation

ComfyWebStudio

Shot-based orchestration for ComfyUI. Build a shot out of several ComfyUI workflows, chain each workflow's outputs into the next one's inputs, run steps individually or as a chain, preview every result, and cut the finished shots together on a timeline.

ComfyUI runs one graph at a time and its IMAGE / AUDIO / LATENT values are in-memory tensors that vanish when execution ends. ComfyWebStudio ships a companion custom node pack whose output nodes persist those tensors to disk deterministically and report structured metadata back — which is what makes cross-workflow chaining possible.

The workspace: two chained steps, their previews and the inspector

Read the user guide →

Layout

Path What it is
backend/comfywebstudio/ FastAPI service — orchestration, persistence, media, render
comfy_nodes/ The ComfyUI custom node pack (comfyui-webstudio)
frontend/ Vite + React + TypeScript UI
tests/ pytest suite, including a fake ComfyUI server fixture

Requirements

  • Python 3.12+ (developed on 3.14)
  • Node 22+ (for the frontend only)
  • A ComfyUI instance — local (fast path: shared filesystem) or remote over its HTTP/WS API

No system ffmpeg is required; rendering uses PyAV, which bundles its own FFmpeg libraries.

Quick start

macOS / Linux

./start.sh

Windows

start.bat

The launcher installs anything missing on first run, builds the interface, starts the server on http://127.0.0.1:8500 and opens a browser. Add --dev for hot reload, --port 9000 for a different port, or --setup to install dependencies and stop.

Then, in Settings → ComfyUI backends, point it at your ComfyUI and press Install to add the node pack (ComfyUI needs a restart afterwards).

Workflows built from subgraphs work as they are: the inputs a subgraph promotes become editable parameters automatically, so you get the author's intended knobs without opening it up.

Open in ComfyUI opens the workflow as a properly named, saved ComfyUI workflow — one imported from ComfyUI reopens its original file — so Ctrl+S there just saves, and the change syncs straight back. ComfyUI opens inside the app, in a panel you can fill the workspace with; shift-click to use a separate browser tab instead.

Drag a shot onto another shot to place it as one node — its ports wired like any other, its values its own, and the shot it came from still live behind it. Templates do the same across projects.

Panels dock beside, above and below each other, not just as tabs: drag a tab to an edge to split, to the rim to span it, or out of the window to float it.

Using make instead
make setup          # backend venv + frontend deps
make link-nodepack  # symlink comfy_nodes into your ComfyUI custom_nodes
make dev            # backend on :8500, frontend dev server on :5173
make test           # every test suite

Using it

Menu What it covers
File New / open / save / duplicate a project, import workflows from ComfyUI or a file, import media, import and export projects, export a plugin
Edit Undo and redo, cut / copy / paste steps and clips, duplicate, delete, select all, history, named versions, preferences
Window Show or hide the side panels, zoom and fit the graph, jump between Shots, Timeline and Settings
Plugins Install, enable, apply and export reusable workflow + shot packs
Help Keyboard shortcuts, documentation, open ComfyUI, about

Press Ctrl+/ for the full shortcut list, and right-click almost anything — steps, the canvas, links, shots, workflows, clips, tracks and project cards all have their own menus.

Every edit is recorded. Ctrl+H opens the history: browse what changed, name a version to come back to, roll the whole project back, or restore just one step from an earlier point without touching anything else.

Agents and MCP

ComfyWebStudio publishes what it can do as a catalogue of about thirty documented actions across the storyboard, the shots and the timeline — the same list drives an in-app agent and any external MCP client, so the two cannot drift apart.

In the app. Window ▸ Panels ▸ Agents. Pick an agent, type a goal — "a three-shot sequence about a lighthouse at dawn" — and watch it work. Three ship with the app: Sequence builder (premise → board → shots → cut), Storyboard writer and Timeline assembler. Each declares exactly which actions it may call, and anything that deletes, overwrites or renders stops and asks before it happens. Every step records what it decided, what it sent and what came back.

It runs on your own machine through the language model already configured in Settings — Ollama is the usual choice. It needs no tool-calling support from the model: each turn is constrained to a schema, so a 7B model cannot name an action that does not exist or produce arguments of the wrong shape.

From Claude Desktop, Cursor, or any MCP client.

pip install 'comfywebstudio[mcp]'
{
  "mcpServers": {
    "comfywebstudio": {
      "command": "comfywebstudio-mcp",
      "env": { "CWS_URL": "http://127.0.0.1:8500" }
    }
  }
}

The server builds its tool list from the running application, and serves the knowledgebase — what has to happen before what — as MCP resources. Start ComfyWebStudio first; the server is a client of its API, not a part of it.

Documentation

Document What it is
docs/GUIDE.md Using it: the workspace, shots, parameters, ComfyUI, timeline, rendering
docs/ARCHITECTURE.md How it works, and why it is built the way it is
docs/VERIFY.md Every test suite, plus a manual checklist

Screenshots in the guide are generated by scripts/docs_screenshots.py against a running instance, so they do not quietly go stale — re-run it after a UI change and commit what moves.

About

Web based orchestrator for ComfyUI to be able to chain workflows into shots, render them on a timeline.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages