Deployment
Verifieddocker compose up --build
The pilot ships as a Docker Compose stack: AXIS gate, PostgreSQL and the Control Plane. This page covers the standard deployment, the extended stacks (production-like, reviewer), and what changes in each mode.
Standard stack
docker-compose.yml (services)
services:
axis:
build: .
ports:
- "6543:6543"
environment:
- LISTEN_ADDR=0.0.0.0:6543
- DATABASE_URL=postgres://axis_executor:CHANGE_ME@db:5432/axis_demo
- OPERATING_MODE=enforce
- AXIS_POLICY_DIR=./policies
- AXIS_POLICY_MANIFEST=./policies/policy_manifest.json
- AUDIT_WAL_PATH=/data/audit.wal
- AUDIT_LOG_PATH=/data/audit.log
- AXIS_APPROVAL_DB_PATH=/data/approvals.sqlite
- AXIS_OPERATOR_TOKEN=${AXIS_OPERATOR_TOKEN:-}
volumes:
- ./data:/data
- ./policies:/app/policies
depends_on:
- db
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:6543/health"]
interval: 10s
timeout: 3s
retries: 5
db:
image: postgres:16
environment:
- POSTGRES_USER=axis_executor
- POSTGRES_PASSWORD=CHANGE_ME
- POSTGRES_DB=axis_demo
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
control-plane:
build: ./control-plane
ports:
- "3000:3000"
environment:
- AXIS_BACKEND_URL=http://axis:6543
- NEXTAUTH_URL=http://localhost:3000
volumes:
pgdata:
Start: docker compose up --build then verify with curl http://localhost:6543/health and curl http://localhost:6543/policy/status.
Database setup
- PostgreSQL runs with the
axis_executorrole, which the AXIS gate uses for protected execution. - Revoke public DDL/DML capabilities from the executor role as far as the demo allows; production deployments should lock the role to the tables AXIS must manage.
- Keep the database reachable only from the AXIS network segment; direct client access is the documented bypass.
Runtime profiles
| Profile | Effect |
|---|---|
AXIS_RUNTIME_PROFILE=local | Pilot defaults: bounded in-memory logs, relaxed rate limits, plaintext networking |
AXIS_RUNTIME_PROFILE=production | Production posture: stricter limits and flags as documented in the security model |
Extended stacks
| Stack | Purpose | Ports |
|---|---|---|
| Standard demo | Pilot demonstration | 6543 / 5432 / 3000 |
| Production-like | Extended demo with a production-like AXIS instance | 6545 (+ db) |
| Reviewer | Reviewer/demo environment | 65430 / 54320 |
| Wire lab (pgwire) | Native protocol POC validation (disabled by default) | 6544 |
Deployment controls
- Set a real
AXIS_OPERATOR_TOKEN; unset tokens keep local dev unblocked but reportoperator_auth_enabled: false. - Mount policies as read-only volumes; keep the manifest and active policy hash-stable.
- Persist
/data(WAL, JSONL, approvals) outside containers. - Health check on
/healthmust returnstatus: okbefore traffic is served. - Production readiness requires the mTLS and TLS review gates (see mTLS & Network).
This deployment is for the pilot, not compliance-certified production. Replace default passwords, enable TLS, and complete the security review before any production workload.
Related: Installation · Configuration · Operations