1. load SPA
2. WebSocket
/ws
3. prompt +
permission
responses
4. session_update
events (replay)
5. ACP
lifecycle
6. stdio
JSON-RPC
7. updates +
permissions
file ops
shell I/O
Browser
React SPA
UI Components
· Agent Panel
· Workspace Panel
· File Tree
· Monaco Editor
· Terminal (xterm.js)
httpserver
Serves SPA + /ws
bridge
· WebSocket ⇄ ACP
· Event broadcast
· Permission routing
· History replay
agent
ACP session
lifecycle
files
Workspace
file API
terminal
PTY per
connection
mockagent
Demo agent
(testing)
ACP Agent
(claude-code-acp / Gemini CLI)
JSON-RPC over stdio
session_update · permission_request
Go backend bridges browser WebSockets to ACP stdio, broadcasting agent updates to all connected browsers while routing permissions back to the waiting call.