Appearance
Deployment & Self-Hosting
DMOps.ai can be deployed in two ways: managed cloud (hosted by Dynamics Mobile on AWS) or self-hosted (you run it in your own infrastructure).
Managed cloud
For most organisations, the managed cloud option is the right choice. Dynamics Mobile handles:
- Infrastructure provisioning and scaling
- Database backups
- Security patching
- LLM provider key management
Contact sales@dynamicsmobile.com to get your managed tenant.
Self-hosting with Docker Compose
For development, evaluation, or air-gapped environments, you can run DMOps.ai locally using Docker Compose.
Prerequisites
- Docker Desktop 4.x or Docker Engine 24+
- At least 4 GB RAM available to Docker
- An API key for at least one LLM provider (AWS Bedrock, Anthropic, or OpenRouter)
Quick start
bash
# Clone the repository
git clone https://github.com/MobileAffairsLTD/dm-acp.git
cd dm-acp
# Copy and edit the environment file
cp .env.example .env
# Edit .env — set HERMES_ACP_API_KEY, HERMES_ACP_MASTER_KEY, and your LLM provider key
# Start the dev stack
bash deployments/docker/deploy.sh --devThe UI will be available at http://localhost:5173. The API will be available at http://localhost:8001.
Environment variables
| Variable | Required | Description |
|---|---|---|
HERMES_ACP_API_KEY | ✅ | API key for the DMOps REST API |
HERMES_ACP_MASTER_KEY | ✅ | Master encryption key for integration credentials |
PG_ENABLED | — | Set to 1 to use PostgreSQL instead of SQLite |
DATABASE_URL | If PG_ENABLED | PostgreSQL connection string |
ACP_MAX_CONCURRENT | — | Max concurrent agent tasks (default: 4) |
Self-hosting on AWS Fargate (production)
For production deployments, DMOps.ai runs on AWS ECS Fargate with a dedicated PostgreSQL database per tenant on Amazon Aurora Serverless.
Architecture
Internet → ALB → ECS Fargate (DMOps API)
↓
Aurora Serverless (PostgreSQL)
↓
S3 (artefact storage)Sizing
| Tier | vCPU | Memory | Max concurrent tasks | Typical use |
|---|---|---|---|---|
| Entry (T1) | 0.5 | 1 GB | 2 | Dev/demo, 1–3 agents |
| Light (T2) | 0.5 | 2 GB | 4 | 3–6 agents |
| Standard (T3) | 1.0 | 4 GB | 8 | 6–12 agents |
| Growth (T4) | 2.0 | 8 GB | 16 | 12–24 agents |
| Scale (T5) | 4.0 | 16 GB | 32 | 24+ agents |
Deploying
Use the acpfleet.py CLI to provision and manage tenants:
bash
# Provision a new tenant
python acpfleet.py add <tenant_id> --tier 2
# Scale up
python acpfleet.py update <tenant_id> --tier 3
# Roll out a new image (zero downtime)
./deployments/rollout-image.ps1 -ImageTag <tag>Never use terraform apply for image-only updates
Rolling out a new image must be done via rollout-image.ps1. Running acpfleet.py update for image changes triggers an ECS service replacement (destroy + recreate), causing ~5 min of downtime per tenant.
Health checks
The API exposes two health endpoints:
| Endpoint | Purpose |
|---|---|
GET /api/ping | Liveness check — returns {"status": "ok"} |
GET /api/stats | Readiness check — includes DB connectivity and dispatcher status |
Backups
On self-hosted PostgreSQL, configure your own backup policy. On managed Aurora Serverless, automated backups are enabled with a 7-day retention window.
Artefact files stored in S3 should have versioning enabled and a lifecycle policy for long-term retention.