Agent control plane for MCP + coding runtimes + multi-agent teams (TypeScript). UI inspired by OpenHands Agent Canvas.
cp .env.example .env
npm run install-all
npm run devSeparate processes: npm run server · npm run client
Workspace: Files → Select folder (native dialog on the API host → real path). Or paste an absolute path → Set.
- Chat — LLM + workspace tools + connected MCP
- Servers — stdio / Streamable HTTP MCP
- Tools / Playground — inspect and invoke tools
- Workflows — multi-step runs (
tool,agent,parallel,synthesize,handoff,team) + HITL - Teams — named agent roster + hierarchical director → workers → synthesis
- Observability — timeline, tokens, evals
Parity ships default agents (director, researcher, coder, reviewer, synthesizer).
| Surface | How |
|---|---|
| Chat | run_team tool (or delegate_task with an agent name) |
| UI | Teams nav — run task, edit roster, view recent runs |
| API | POST /api/teams/run, GET /api/agents, workflow step type: "team" |
| Workflows | Steps: agent, parallel, synthesize, handoff, team |
Shared team state (plan, messages, artifacts) is stored per run and appears in observability events.
POST /api/chat → runAgentTurn → one streamText session (ReAct tool steps inside that call).
| Message | Typical path |
|---|---|
"hi" |
Chat LLM only |
| Edit / run code | file_editor / terminal / grep / … |
| “Where is X?” | codebase_search after Reindex (Voyage embeddings) |
| Multi-agent task | run_team → director plan → parallel workers → synthesis |
| Browser MCP | Connected Playwright (etc.) tools |
RAG is opt-in (Reindex in Files). Chat model ≠ embedding model.
docker compose up --build