Requirements
Use a current Node.js release and pnpm. The WebUI expects a Harness server that implements the versioned /api/v1 REST resources and /api/v1/events WebSocket.
Run the WebUI
cd web
pnpm install
pnpm devVite serves the application on http://127.0.0.1:4173. When the API shares that origin, the client uses relative /api/v1 requests automatically.
Production build
pnpm test
pnpm build
pnpm previewConnect to Harness
Open Settings → Connection. Enter an HTTP or HTTPS Harness origin and, for protected remote access, a bearer token. The client sends the token in the REST Authorization header and in the WebSocket authentication frame.
Deterministic demo mode
Demo mode performs no API network requests. It uses fictional contacts, hosts, models, workspaces, jobs, assets and metrics that stay stable across runs.
cd web
HARNESS_DEMO_MODE=1 pnpm devYou can also add ?demo=1 to the WebUI address. Controls still travel through the same client methods and fixture transport, so the interaction paths remain testable.
Capture the seven required views
cd web
pnpm exec playwright install chromium
pnpm screenshotsPlaywright captures desktop Chat/Graph, Compute, Creative and Analytics, plus iPhone landscape Chat/Graph and portrait Chat. The same command renders the deterministic Textual TUI capture. All seven files are written to site/public/screenshots for this Pages site.
Build the Pages site
cd site
pnpm install
pnpm buildThe static multi-page output is written to site/dist. Publish that directory from a GitHub Pages workflow or another static host. The site is documentation and marketing only; it does not host the Harness runtime.
Security boundaries
- Run Harness on localhost by default and require authentication for remote access.
- Prefer HTTPS through a trusted secure-network gateway for remote browser clients.
- An HTTPS Pages origin cannot call arbitrary plain-HTTP endpoints because browsers block mixed content.
- Rendered server output uses React text nodes and control-character sanitation; no raw HTML rendering path is used.
- Consequential workspace, command, lifecycle and creative actions remain subject to Harness permission policy.