Operations
Chat UI is a static web app and depends on an external NullClaw channels.web websocket endpoint.
Build Pipeline
npm ci
npm run test
npm run check
npm run build
Output directory: build/
Deployment Model
- static hosting is enough
- enable SPA fallback to
index.html - runtime websocket endpoint is entered by operator during pairing
Runtime Contract
Expected local endpoint values:
ws://127.0.0.1:32123/ws- local pairing PIN:
123456
Typical local two-terminal flow:
# terminal 1 (nullclaw)
./zig-out/bin/nullclaw gateway
# terminal 2 (chat-ui)
npm run dev
Client-Side Stored Keys
nullclaw_ui_auth_v1nullclaw_ui_themenullclaw_ui_effects
Auth storage enforces expiry and removes invalid payloads.
Troubleshooting Checklist
channels.webabsent or misconfigured in NullClaw- wrong websocket URL (scheme/host/port/path)
- runtime not reachable from browser host
unauthorizedprotocol errors- missing SPA fallback in production host config