Self-host the whole control plane.
Run the full control plane — Postgres state-of-record, the shared brain, governance, and an Envoy edge — inside your own network. Your code and audit trail never leave your infrastructure.
The self-host source is in private preview. Request access and we'll send the deploy bundle and walk you through it.
docker-compose, scripted and health-checked.
The whole stack is defined in docker-compose.selfhost.yml and brought up by scripts/selfhost-up.sh, which validates env, generates secrets, and waits for health. Once you have the deploy bundle, bring-up looks like this:
# in the deploy bundle directory cp .env.selfhost.example .env.selfhost # validates env, generates secrets, waits for health scripts/selfhost-up.sh
The source repo is in private preview. Request access to get the deploy bundle.
Clone and configure
Copy .env.selfhost.example to .env.selfhost. The up-script generates safe secrets and validates required env before anything starts.
Bring it up
scripts/selfhost-up.sh builds the backend image, starts Postgres, Redis, Qdrant, and Envoy, and waits for every service to report healthy.
Run governed
Point your agents at your own control plane. State, audit, and memory all live on your infrastructure — your code never leaves.
A control plane on a Postgres state-of-record, behind Envoy.
The backend is the product. Postgres is the durable record for tasks, runs, approvals, and audit. Redis carries the A2A bus, Qdrant holds the brain, and Envoy is the L7 edge in front of it all.
| Service | Image | Role |
|---|---|---|
| backend | backend (built) | The Recoder control plane — the product itself. |
| postgres | postgres:17 | State of record: recoder_main, recoder_backend, recoder_pm. |
| redis | redis:7 | Sessions and the A2A coordination bus. |
| qdrant | qdrant/qdrant | Vector store for the shared brain (memory / embeddings). |
| envoy | envoyproxy/envoy:v1.31 | L7 edge proxy in front of the control plane. |
Or boot it from a baked image.
A Packer template bakes Docker, the compose stack, and the pinned substrate binaries into a machine image. It builds a real AMI for AWS, or provisions any reachable host over SSH using the exact same provisioner — so bare metal, a VM, or a CI runner all follow one path. A booted instance runs Recoder via a systemd unit.
packer init deploy/packer/recoder.pkr.hcl packer validate deploy/packer/recoder.pkr.hcl # build a publishable AMI packer build -only='amazon-ebs.recoder' deploy/packer/recoder.pkr.hcl
Need SSO, seats, and support on top of self-host?
Self-hosting is open to everyone. Enterprise adds single sign-on, per-seat management, governance approvals, and direct support.