Two UIs drive the same agent runtime today, through incompatible control planes:
- The main app (
packages/clientsrc/pages/agents.tsx→AgentSession.tsx) creates sessions viaPOST /harness-sessionsonpackages/server, which provisions one sandbox (one agent-server process) per session and exposes its data plane only through a cookie-authenticated proxy. - The diagnostic web-ui (
agent/packages/web-ui-react) talks directly to a single long-lived agent-server on :4001/:4000 and shows many sessions inside that one process.
The data plane is already shared — both UIs use the same agent-client package and wire protocol against the same agent-server HTTP/SSE API. The incompatibility is purely control-plane: who creates sandboxes, who knows where they live, who is allowed to see them.