Getting started
Quick start
Run AgentDock locally, create the first admin and pair a runner in about ten minutes.
This page runs AgentDock from source on your own machine, creates the first admin, pairs a runner on the same machine and starts the orchestrator on one repository. It takes about ten minutes once the prerequisites are installed.
For a server deployment, use Docker Compose instead. The runner steps are the same.
Before you start
You need these on the machine:
- Bun 1.4.0 or newer and Node.js 24 or newer, to run the control plane from source.
- Docker, for PostgreSQL and Redis.
- For the runner:
tmux,git, the GitHub CLIghsigned in withgh auth login, and Claude Code. The full list is in Requirements. - For the orchestrator: the Code Sentinel plugin installed in your Claude Code profile, and a GitHub repository checked out locally.
Run the control plane
Clone and install
Terminal git clone https://github.com/AndreyBegma/AgentDock && cd AgentDock bun installCopy the environment files
The examples work as they are for local development.
Terminal cp docker/.env.example docker/.env cp apps/api/.env.example apps/api/.env cp apps/web/.env.example apps/web/.envThe passwords in
docker/.envmust matchDATABASE_URLandREDIS_URLinapps/api/.env. Both examples usechange-me, so they already agree. Every variable is described in the configuration reference.Start the database
Terminal bun run db:setupThis starts PostgreSQL on port
5421and Redis on port6421with Docker Compose, waits for both, applies the migrations and runs the seed. The seed closes public registration and loads the first price table. It creates no users.Create the first admin
Terminal bun run admin:createIt asks for an email and a password. To run it without prompts, set
ADMIN_EMAILandADMIN_PASSWORD(and optionallyADMIN_NAME) inapps/api/.env, run it, then remove them.Start the API and the web app
Terminal bun run start:devThe API listens on
http://localhost:8180and the web app onhttp://localhost:3517. Check the API from another terminal:Terminal curl http://localhost:8180/healthSign in
Open http://localhost:3517 and sign in as the admin. Overview shows a Getting started checklist. The next sections walk through it.
Pair a runner
The runner is the daemon that does the work on the machine with your repositories. Here it runs on the same machine as the control plane.
Install the runner
Terminal brew install andreybegma/tap/agentdock-runner # or npm i -g agentdock-runnerCheck it with
agentdock-runner version, which prints something like0.1.0 linux-x64. Other install methods are in Install and pair.Get a pairing code
In the web app, go to Admin → Runners → Add runner. The dialog shows a one-time code in the form
XXXX-XXXX. It is valid for 10 minutes and works once.Pair
Terminal agentdock-runner pair --server http://localhost:8180 --code XXXX-XXXX--serveris the API origin, not the web app. Locally that ishttp://localhost:8180. Pairing writes~/.config/agentdock/runner.json(mode0600) and detects your runtime profiles:claude-defaultfor~/.claude, one profile per directory in~/.claude-profiles/, andcodex-default.Start it
For a first try, run it in the foreground:
Terminal agentdock-runner runTo keep it running across logouts and reboots, use
brew services start agentdock-runner(Homebrew) oragentdock-runner install-service(npm). The Add runner dialog notices when the runner comes online.
Connect a project
Open the Connect dialog
Go to Projects → Connect project. Pick the online runner and enter the absolute path of the repository's main checkout, for example
/home/you/code/my-app. A git worktree is refused, with a suggestion for the main checkout. The repository'soriginmust be on GitHub.Inspect, then connect
Click Inspect. The runner reads the repository and the dialog previews the
owner/name, the base branch, the Code Sentinel config and where the docs live. Nothing is stored yet. Click Connect to add the project. The runner starts watching it.Choose a runtime profile
Open the project's Settings → General and set Default runtime profile to the Claude profile that has the Code Sentinel plugin installed. You can also set a profile only for the orchestrator in Settings → Orchestrator.
Start the orchestrator
Open the project's Fleet page and click Start…. Choose the command (start begins a new round, next picks up the next queued issue), check the model (default opus) and the permission mode (default auto), and click Start.
The runner launches the orchestrator in a tmux session named agentdock-orch-<owner>-<repo>. From then on the orchestrator picks issues labelled cs:ready from GitHub and dispatches workers. Slots appear on the Fleet page as they start. Click one to see its brief, checkpoints and live pane.
If the queue is empty, the orchestrator has nothing to dispatch. Create an issue from Queue → Create issue, or add the cs:ready label to a well-specified issue on GitHub.
Start… is disabled with a reason when the runner is offline, no profile is set, the orchestrator is already running, or a budget with the stop action is exceeded.