Agent Device Cloud
Sign in

Self-hosting

Deploy with Docker Compose

Production requires HTTPS, PostgreSQL, a stable auth secret and working SMTP when email verification is enabled.

Production baseline

  • Docker Compose 2.24.4+, a stable hostname and inbound TCP 80/443.
  • Persistent storage sized for PostgreSQL, audit records and artifacts.
  • A tested SMTP sender before email verification is required.
  • An encrypted backup location for the database and deployment secrets.
Terminal
cp .env.example .env
openssl rand -hex 48
openssl rand -hex 32
docker compose --env-file .env -f deploy/compose.yaml up -d --build

Required configuration

ADC_PUBLIC_URL
HTTPS origin
ADC_AUTH_SECRET
Stable secret, 32+ characters
ADC_DATABASE_PASSWORD
PostgreSQL password
ADC_SMTP_URL
Required when email verification is enabled
ADC_TRUSTED_PROXIES
Only the reverse-proxy addresses allowed to supply client IP headers.
ADC_ANALYTICS_*
Leave unset for the default zero-external-analytics self-hosted behavior.

Verify the deployment

Terminal
curl -fsS https://devices.example.com/health
docker compose --env-file .env -f deploy/compose.yaml ps
docker compose --env-file .env -f deploy/compose.yaml logs --tail=100 control-plane

Then create one account, pair a device and complete one read-only invocation. Infrastructure health alone does not prove that authentication, WebSocket upgrades and dispatch all work.

Data and trust boundary

PostgreSQL stores accounts, sessions, authorizations, dispatches, audit records, receipts and current artifact blobs. Device private keys and local Provider secrets must remain on each device.

Back up PostgreSQL and the stable auth secret together. A database restore can resurrect credentials revoked after the backup, so rotate affected access during incident recovery.