Documentation

Start with a local control plane.

Build the production WebUI, use its deterministic mode to inspect the interface, or connect it to a running Harness API.

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 dev

Vite 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 preview

Connect 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.

Session memory only. The WebUI does not write bearer tokens to localStorage, sessionStorage, source files, or the demo fixture.

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 dev

You 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 screenshots

Playwright 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 build

The 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.