This guide takes you from nothing to a running fleet: the control plane on a server, a runner on each machine that holds your repositories, a connected project and the first orchestrator round. Plan for about ten minutes on a machine that already has Docker and Claude Code.
What you need
On the server (it can be the same machine as your agents):
- Docker with Compose, for PostgreSQL 16 and Redis 7
- Bun 1.4 or newer and Node.js 24 or newer
git
On each agent machine (macOS or Linux, arm64 or x64):
| Tool | Why |
|---|---|
tmux | every run gets its own tmux session (3.2 or newer for terminal attach) |
git | every run gets its own worktree |
gh | the GitHub CLI, signed in with gh auth login |
| Claude Code and/or Codex | the runtimes the agents run on (claude, codex) |
Projects must live on GitHub, because the task queue is GitHub issues and pull requests. Other forges are refused when you connect them.
Run the control plane
Get the code
Terminal git clone https://github.com/AndreyBegma/AgentDock && cd AgentDock bun installCreate the environment files
The examples work as they are for a local install. The passwords in
docker/.envmust matchDATABASE_URLandREDIS_URLinapps/api/.env, and the examples already agree.Terminal cp docker/.env.example docker/.env cp apps/api/.env.example apps/api/.env cp apps/web/.env.example apps/web/.envStart the database
This starts PostgreSQL on port
5421and Redis on6421in Docker, waits for both, applies the migrations and seeds the price table.Terminal bun run db:setupCreate the first admin
The seed creates no users and registration starts closed, so the first account comes from the command line.
Terminal bun run admin:createStart AgentDock
Terminal bun run start:devOpen http://localhost:3517 and sign in. The API answers on port
8180:Terminal curl http://localhost:8180/health
For a long-lived install behind a domain, use the Docker Compose stack with a reverse proxy or tunnel. There is no published image yet; the images are built from the repository.
Connect a machine
Each machine that holds repositories runs one agentdock-runner. It dials out to your server over a WebSocket, so the machine needs no open port.
Install the runner
With Homebrew on macOS or Linux:
Terminal brew install andreybegma/tap/agentdock-runnerOr with npm (
bun add -g agentdock-runnerworks too):Terminal npm i -g agentdock-runnerCheck it with
agentdock-runner version, which prints the version and the target, for example0.1.0 darwin-arm64.Get a pairing code
In AgentDock go to Admin → Runners → Add runner. The dialog shows a one-time code in the form
XXXX-XXXX, valid for ten minutes, and the exact pair command for your server.Pair
--serveris the address of the API, not of the web app:http://localhost:8180for a local install, orhttps://<your-host>/apibehind the reference proxy.Terminal agentdock-runner pair --server http://localhost:8180 --code XXXX-XXXXPairing writes
~/.config/agentdock/runner.json(mode0600) and detects your runtime profiles:~/.claude, every directory in~/.claude-profiles/, and Codex.Keep it online
Run it as a service so it survives logouts and reboots:
Installed with Homebrew brew services start agentdock-runnerInstalled with npm agentdock-runner install-serviceOn Linux
install-servicewrites a systemd user unit; on macOS a launchd agent. To try it in the foreground first, runagentdock-runner run. The Add runner dialog notices when the runner comes online.
Connect a project
Install Code Sentinel in your Claude profile
AgentDock drives the Code Sentinel orchestrator, a Claude Code plugin. Inside Claude Code on the agent machine:
Claude Code /plugin marketplace add AndreyBegma/claude-code-plugin /plugin install code-sentinel@code-sentinelAdd an orchestrator block to the repository
The orchestrator reads
.code-analyzer-config.jsonat the repository root. A minimal one:.code-analyzer-config.json { "orchestrator": { "base": "main", "maxSlots": 3, "readyLabel": "cs:ready", "checks": ["bun run lint", "bun run test", "bun run build"], "mergeMethod": "squash", "autoMerge": true } }Every key is optional. See the config reference.
Connect it in AgentDock
Go to Projects → Connect, pick the online runner and enter the absolute path of the repository's main checkout (not a worktree). Click Inspect to preview what AgentDock detected, then Connect.
Pick a runtime profile
In Project → Settings, choose the default runtime profile, and optionally the model, merge approval and a budget.
Run the first round
Queue some work
Label a GitHub issue
cs:ready, use Project → Queue → Create issue, or write a spec with/code-sentinel:specand let it open the issue for you.Start the orchestrator
Open Project → Fleet → Start…, choose
start, the profile, model and permission mode, and confirm. AgentDock launches/code-sentinel:orchestratorin a tmux session on the runner.Watch and steer
Slots appear as the orchestrator dispatches workers. Open one to read its brief and checkpoints, watch the live pane, send the worker a message or stop it. Merged pull requests, tokens and API-equivalent cost land in History and Usage.