Every Employee. Amplified.
Relay is a local-first control plane for AI work. Employees start threads, assign persistent tasks, schedule routines, and coordinate named AI agents and teams from one interface — while Relay records identity, approvals, and history, and tracks which computer hosts each agent.
The Python backend never executes agents itself. Relay daemons run Claude Code, Codex, Pi, and Kimi on local or managed computers, inside BoxLite or a configured local environment.
| Threads | Start a thread with an explicit agent and computer. The agent decides whether the goal needs an answer, investigation, workspace changes, validation, review, or a clarifying question. Stream tool output, approve decisions, cancel or retry work, and hand the thread to another agent. |
| Tasks & routines | Plan work in a backlog, schedule recurring routines, assign agents or teams, set due dates, and follow dispatch and event history. |
| Agents & teams | Create named agents and teams with profiles, computer placement, workspace files, generated artifacts, and recent activity. |
| Projects | Bind a persistent shared workspace and an ordered roster of project agents to one computer, then run project conversations that share that workspace. |
| Computers | Enroll employee computers or reconcile managed computers while tracking health, capacity, command leases, and durable identity. |
| Chat gateway | Connect Discord, Telegram, and Lark through one gateway that maps external identities and conversations to Relay. |
| Administration | Operate employees, agents, computers, fleet health, activity, and token usage from one admin area. |
Choose where work runs and which named agent or team handles it; Relay gives the goal to the selected participants and lets each agent choose the appropriate execution path.
The backlog keeps priority, assignment, due date, status, and dispatch context in one view.
Team workspaces bring active runs, tasks, threads, workspace files, and member activity together.
- Node.js 22.19 or newer
- npm
- Python 3.12 or newer
- uv
- Docker and hardware virtualization when using BoxLite
- Credentials or local login state for each agent CLI you want to run
Install dependencies and build the TypeScript packages, daemons, supervisor, and web app:
npm install
npm run buildConfigure authentication, storage, and agent credentials as described in Local Development. Then start each service in a separate terminal:
make backend # FastAPI control plane on 127.0.0.1:8790
make daemon SANDBOX_ID=node_dev # execution node connected to the backend
make web # Next.js app on 127.0.0.1:5000Open http://127.0.0.1:5000.
Run verification and operational commands as needed:
npm test # build and run the TypeScript and Python test suites
make supervisor # reconcile requested managed computers
make backend-migrate # apply Alembic migrations
make pre-commit-run # run repository checks
make stop # stop Relay, daemon, supervisor, and BoxLiteUse make run-fresh only after changing dockerfile or the BoxLite image contents.
| Layer | Technology |
|---|---|
| Backend | FastAPI, SQLAlchemy, Pydantic, Alembic, uv |
| Web | Next.js, React, Tailwind CSS, TanStack Query, Zustand |
| Sandboxing | BoxLite |
| Agents | Claude Code, Codex, Pi, Kimi |
To host Relay rather than run it locally, docs/deployment.md covers the web UI on Vercel and the backend plus Postgres on Railway. Daemons stay off both platforms — they run wherever the sandbox lives and connect out to the backend URL.
Start with the docs/ index for the canonical setup, API, product, architecture, design, decision, and operations documents.


