Arceus is an operating system for an AI-run software company. You act as the board of directors β you hand down an idea, and a team of LLM agents (CEO, PM, designers, engineers, QA) plans sprints, writes code in an isolated workspace, runs QA in a real browser, and ships. You govern; they build.
Quickstart Β· How it works Β· Architecture Β· Deployment Β· Contributing
Most "AI coding agents" are a single assistant in your editor. Arceus is the whole company.
You give it a product direction β "a lightweight B2B tool for finance teams to track renewal risk" β and Arceus boots a persistent, multi-agent organization that runs on its own clock:
- The CEO turns your idea into a strategy and briefs the team.
- The PM breaks strategy into sprints and tasks.
- Engineers, a UI designer, and a CTO build the actual product in a git-tracked, previewable workspace.
- A tester drives the running product in a real browser and files bugs back as tasks.
- Every agent shares long-term vector memory and a durable per-workspace checklist so work survives across turns.
You stay in the loop as the board: set direction, approve decisions, watch the product take shape in a live preview β and step away while it keeps working.
Arceus is built on top of OpenCode as its agent runtime and speaks to any Azure OpenAI deployment.
Arceus runs a heartbeat. On each tick, any role with claimable work gets a beat β one autonomous agent turn inside the company's isolated workspace, driven by OpenCode with a curated set of MCP tools.
flowchart LR
B([π€ Board / You]) -->|idea + approvals| CEO
subgraph Company["π’ AI Company (per-tenant)"]
CEO[π§ CEO<br/>strategy] --> PM[π PM<br/>sprints + tasks]
PM --> DEV[π» Engineers]
PM --> UI[π¨ UI Designer]
DEV --> QA[π§ͺ Tester<br/>real-browser QA]
UI --> QA
QA -->|bugs β tasks| PM
QA -->|pass| SHIP[π Deploy]
end
MEM[(π§ Hippocampus<br/>vector memory)] -.shared.- Company
WS[(π Git workspace<br/>+ TODO.md)] -.- Company
SHIP -->|live preview| B
The beat loop, concretely:
- Heartbeat ticks β the orchestrator picks roles with claimable work.
- Each role gets a beat briefing: company state, its open tasks, recent artifacts, shared memory, and the workspace
TODO.md(its durable resume point). - The agent works via MCP tools β claim a task, edit files, run the preview, check off
TODO.md, hand off, or block. - Results persist to Postgres; the product lives in a per-company git workspace; long-term learnings go to Hippocampus (pgvector).
- Repeat β sprint after sprint β until the product ships, with you approving the decisions that matter.
Each employee is a mode: primary OpenCode agent with its own soul (system prompt), tools, and responsibilities.
| Role | Responsibility |
|---|---|
| π§ CEO | Turns the board's idea into strategy; owns direction and high-stakes decisions. |
| π PM | Plans sprints, decomposes strategy into tasks, sequences the backlog. |
| ποΈ CTO | Technical direction, architecture calls, specs-only oversight. |
| π» Developer | Writes the full-stack product code in the workspace. |
| π¨ UI Designer | Builds the interface against a world-class design system. |
| π§ͺ Tester | Drives the running product in a real browser; files bugs as tasks. |
| π£ Marketing | Positioning, launch and go-to-market narrative. |
| π§© Skills Lead | Curates and evolves the reusable skill library agents draw on. |
- Autonomous multi-agent org β a persistent company that plans, builds, tests, and ships on its own heartbeat.
- Isolated per-company workspaces β every company builds its product in its own git repo (Vite + React + Hono + SQLite scaffold), fully previewable.
- Real-browser QA β the tester service drives the live product like a user and turns failures into fix tasks.
- Long-term memory β Hippocampus (pgvector) gives agents recall across beats and sprints, with hybrid keyword+vector retrieval.
- Durable resume β a per-workspace
TODO.mdchecklist means work continues cleanly across turns and restarts. - Governance built in β trust scores, policy checks, and human approval gates keep the board in control.
- Observability β OpenTelemetry tracing plus a live inspector event stream for every beat and tool call.
- Secure by default β admin-token auth on mutating routes, CORS allow-lists, per-company env isolation, and secret scanning in CI.
A TypeScript monorepo (apps/* + packages/*) orchestrated with npm workspaces.
flowchart TB
subgraph apps
WEB["apps/web<br/>Next.js dashboard"]
API["apps/api<br/>Fastify control plane"]
TUI["apps/tui<br/>terminal UI"]
end
subgraph packages
CONTRACTS["contracts<br/>Zod domain types"]
DB["db<br/>Drizzle + Postgres"]
HIP["hippocampus<br/>pgvector memory"]
RT["company-runtime<br/>agents Β· trust Β· policy Β· meetings"]
TE["task-engine<br/>sprint/task state machine"]
PROMPTS["prompts<br/>role souls"]
MCP["arceus-mcp<br/>agent tool surface"]
WT["workspace-template<br/>product scaffold"]
end
WEB -->|HTTP| API
API --> RT --> TE
API --> DB
API --> HIP
RT --> PROMPTS
RT --> MCP
API -->|provisions| WT
OC["OpenCode + Azure OpenAI"] -.drives beats.- API
| Workspace | What it does |
|---|---|
apps/api |
Fastify control-plane API β heartbeat, orchestration, routes, MCP surface. |
apps/web |
Next.js board dashboard β chat with the CEO, watch sprints, preview the product. |
apps/tui |
Terminal UI client. |
packages/contracts |
Shared domain types + Zod schemas (the single source of truth for shapes). |
packages/db |
Drizzle ORM schema + Postgres adapter + migrations. |
packages/hippocampus |
Vector memory engine (pgvector, hybrid retrieval, in-memory fallback). |
packages/company-runtime |
Agent definitions, trust, policy, skills, meetings. |
packages/task-engine |
Sprint/task state machine and execution cycle. |
packages/prompts |
Role "souls" β the system prompts for each employee. |
packages/arceus-mcp |
The MCP tools agents call (tasks, workspace, todo, previewsβ¦). |
packages/workspace-template |
The canonical product scaffold copied into each new company. |
services/flow-tester |
Standalone browser-agent QA service. |
- Node.js β₯ 22.12 and npm β₯ 9
- PostgreSQL 16+ with the
pgvectorextension (for persistence + memory; Arceus falls back to in-memory without it, but a DB is required for real use) - An Azure OpenAI resource with a chat deployment (the LLM backend)
- Optional:
bun(used by a few scripts + tests) andgitleaks(pre-commit secret scan)
git clone https://github.com/divo12/Arceus.git
cd Arceus
npm installcp .env.example .env.local
# then fill in the required values (see Configuration below)At minimum set your Azure OpenAI credentials and a Postgres URL.
npm run db:generate # generate migrations from the Drizzle schema
npm run db:migrate # apply themnpm run dev # API (:4000) + web dashboard (:3000) together
# or individually:
npm run dev:api
npm run dev:webOpen http://localhost:3000, tell the CEO what to build, and watch the company get to work.
Environment lives in .env.local (see .env.example for the full annotated list). The essentials:
| Variable | Required | Purpose |
|---|---|---|
ARCEUS_AZURE_OPENAI_ENDPOINT |
β | Azure OpenAI endpoint (*.cognitiveservices.azure.com). |
ARCEUS_AZURE_OPENAI_API_KEY |
β | Azure OpenAI key. |
ARCEUS_AZURE_OPENAI_DEPLOYMENT |
β | Chat deployment name used for agent beats. |
SUPABASE_DB_URL / DATABASE_URL |
β² | Postgres connection string (pgvector). In-memory without it. |
ARCEUS_JWT_SECRET |
β² prod | Session-token signing secret (β₯ 32 chars). Required in production. |
ARCEUS_ADMIN_TOKEN |
β² prod | Bearer token gating mutating /api/* routes (β₯ 16 chars). |
ARCEUS_REQUIRE_AUTH |
β | Force the admin auth gate on/off regardless of NODE_ENV. |
ARCEUS_ALLOWED_ORIGINS |
β² prod | CORS allow-list for browser clients. |
ARCEUS_WORKSPACE_ROOT |
β | Where per-company workspaces live on disk. |
Security: never commit real secrets.
.env*is gitignored, a pre-commit gitleaks hook scans staged changes, and CI runs a full gitleaks pass. In production the server fails loudly ifARCEUS_JWT_SECRET/ARCEUS_ADMIN_TOKENare missing.
Arceus/
βββ apps/
β βββ api/ # Fastify control-plane API (heartbeat, orchestration, MCP)
β βββ web/ # Next.js board dashboard
β βββ tui/ # terminal UI
βββ packages/
β βββ contracts/ # Zod domain types
β βββ db/ # Drizzle schema + migrations
β βββ hippocampus/ # pgvector memory engine
β βββ company-runtime/ # agents, trust, policy, meetings
β βββ task-engine/ # sprint/task state machine
β βββ prompts/ # role souls
β βββ arceus-mcp/ # agent tool surface (MCP)
β βββ workspace-template/ # per-company product scaffold
βββ services/
β βββ flow-tester/ # browser-agent QA service
βββ docs/ # VitePress + TypeDoc reference
βββ plans/ # design specs & architecture notes
βββ scripts/ # dev/ops tooling
- Runtime: OpenCode agents on Azure OpenAI
- API: Fastify Β· TypeScript (run via
tsx) Β· Zod Β· OpenTelemetry - Web: Next.js Β· React Β· Tailwind Β· React Flow (
@xyflow/react) - Data: PostgreSQL Β· Drizzle ORM Β·
pgvector - Product scaffold (what companies build): Vite Β· React Β· Hono Β·
node:sqlite - Tooling: npm workspaces Β· ESLint Β· Husky Β· gitleaks Β· bun (scripts/tests) Β· Docker
Arceus deploys as one Railway project (API + Postgres) plus the web app on Vercel. The full, step-by-step guide β services, volumes, env vars, and gotchas β is in DEPLOY.md.
Vercel (apps/web) ββHTTPSβββΆ Railway: api (Docker) ββββΆ Railway: Postgres + pgvector
npm run dev # run API + web together
npm run typecheck # tsc --noEmit across all workspaces
npm run lint # ESLint (incl. no-silent-catch safety rules)
npm run build # build all workspaces
npm run docs:dev # VitePress + TypeDoc docs siteA pre-commit hook runs lint-staged, gitleaks, silent-catch lint, a full typecheck, and the schema-drift test. CI mirrors these plus migration linting and a full secret scan.
Contributions are welcome β see CONTRIBUTING.md for the dev setup, workflow, coding standards, and PR checklist.
MIT Β© Arceus
Built on the shoulders of OpenCode, Fastify, Drizzle, and pgvector.