Prerequisites
- Node.js 22 or later (we use corepack for pnpm)
- pnpm 9 (installed via corepack)
- Git (obviously)
- A POSIX shell (bash, zsh, fish, or the Git Bash that ships with Git for Windows)
- About 4 GB of free RAM to run the full stack comfortably
- Docker if you want to run the Postgres shape locally instead of the in-process PGlite shape
Clone and install
pnpm is on your PATH (pnpm -v should print
the version).
The monorepo layout
services/orchestrator/,
packages/adapters/, or apps/dashboard/, depending on what you
are working on.
Running the stack
The whole stack is one command:- The orchestrator on
:3100 - The dashboard on
:3101 - The MCP server on
:4200 - A PGlite instance backed by
~/.company-agents/instances/default/db/
http://localhost:3101 and you should see
the “Create your first company” screen.
If you want to run only one piece (say, you are working on the
dashboard and you already have the orchestrator running from a
previous session), use filters:
Environment variables
For local development, a.env.local at the repo root is read by
every package. The defaults are sensible; the ones you might
actually want to override:
Using a real Postgres instead of PGlite
PGlite is fine for development but slow on large runs. To swap in real Postgres:pnpm db:migrate before restarting
the stack.
Tests
Building an adapter locally
Adapters live inpackages/adapters/. To build a new one:
AdapterBase
implementation, wires it into the registry, and adds a test
skeleton. See Creating an adapter
for the full shape.
Debugging
The orchestrator logs to stdout in development. To get a more detailed log:--inspect works:
Hot reload caveats
The dashboard hot-reloads everything. The orchestrator hot-reloads most things but not the database schema or the MCP server tool registrations. If you change a schema file, runpnpm db:migrate
and restart the orchestrator. If you change an MCP tool signature,
restart the MCP server.
Next
- Docker if you want a single-command deployment instead of the source checkout.
- Database for the database layer in more depth.
- Environment variables for everything you can configure.