A React + Vite frontend for running ComfyUI workflows with guided onboarding, template browsing, prerequisite checks, server-side job history, and operations controls.
- Node.js 18+
- A running ComfyUI server reachable from your browser
Install dependencies:
npm installRun development server:
npm run devBuild production assets:
npm run build/main generation screen/settingsfull settings and server operations page
On first load, the app shows onboarding and routes to /settings until setup is complete.
Required setup:
- Configure ComfyUI API connection
- Select a workflow JSON
The API form is host-first:
- Enter host/IP only (for example
10.0.0.25orcomfy.local) - Default resolved URL uses
httpand port8188 - Optional advanced controls allow protocol/port overrides
Test Connectionuses a timeout to fail fast on unreachable hosts
You can choose a workflow by:
- Uploading your own JSON file
- Using the bundled sample workflow
- Applying templates discovered from:
- local
/templates/index.json(if exposed) - remote Comfy template index fallback
- local
- Real-time generation via WebSocket updates
- Single or dual prompt mode (prompt + negative prompt) based on workflow analysis
- Optional input image upload for image-based workflows
- Queue status display and cancel running job
- Server-backed recent jobs and per-job details
Settings includes Check Workflow Health (/object_info + prerequisites):
- Validates required node classes against
/object_info - Checks required models for the selected workflow
- Shows missing models with download and copy URL actions
When a template or manual JSON is applied, prerequisite checks are integrated into the flow so users can resolve missing requirements early.
Dashboard data is loaded from server endpoints and shown as structured cards:
- ComfyUI version
- GPU/compute devices and VRAM details
- Feature flags (flattened and humanized)
- Extensions count with expandable list
- Server history item count
Destructive operations are grouped in a dedicated Danger Zone section:
- Clear pending queue
- Interrupt running execution
- Clear server history
- Free VRAM / unload models
The frontend uses these ComfyUI-style endpoints (availability depends on server version/config):
POST /promptGET /queuePOST /queuePOST /interruptGET /historyGET /history/{prompt_id}POST /historyPOST /freeGET /object_infoPOST /upload/imageGET /featuresGET /system_statsGET /extensionsGET /modelsGET /{model_folder}(per-folder model inventory checks)GET /viewGET /templates/index.json(local template index, when available)- WebSocket
GET /ws
comfy_api_urlcomfy_workflowcomfy_workflow_namecomfy_onboarding_seen
Workflows in .github/workflows:
build.yml: install +npm run buildon push/PRdeploy-pages.yml: deploydistto GitHub Pagesrelease.yml: onv*tag, build and attach release artifact
Create and push a tag:
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.Zsrc/App.jsxapp shell and route orchestrationsrc/features/onboardingonboarding wizard pagessrc/features/settingsAPI/workflow/server ops settings UIsrc/features/templatestemplate browser, cards, and modalssrc/features/generationgeneration form and runtime status UIsrc/features/historyserver-backed recent jobs and job details UIsrc/features/homehome screen compositionsrc/hooksAPI/workflow/generation/template/admin state hookssrc/libpure helpers and transforms (URLs, templates, models, formatting)
The app is organized as a thin orchestration layer plus feature modules:
App.jsxowns app-level state and wires hooks to pages/components.- Feature components under
src/features/*are mostly presentational and receive explicit props. - Shared logic lives in hooks (
src/hooks/*) and pure utility modules (src/lib/*).
High-level flow:
- Onboarding/settings establish API connectivity and workflow selection.
- Generation uses the selected workflow + prompts and streams execution status over WebSocket.
- History and job details are fetched from server endpoints and rendered in dedicated history components.
- Templates are loaded from local/remote indexes, validated for prerequisites, and then applied into workflow state.
- If
Test Connectionfails, verify host/IP, port, and browser reachability (CORS/network). - If templates appear empty, verify local
/templates/index.jsonor network access to remote template index. - If generation fails with validation errors, run Workflow Health check and install missing models.
- If model download links are shown but unavailable, verify internet access and upstream model hosting.