Docker Image
The Podium Docker image includes the coordinator, gateway, and Chronicle:
cd podium
./build_image.sh staging # or production
The build script:
- Checks for Chronicle source at parent directory level
- Copies Chronicle into build context
- Builds multi-stage Docker image (Rust compilation + runtime)
- Optionally deploys to ECS with
--deploy
Running with Docker
docker run -p 8090:8090 -p 9090:9090 \
-e CHRONICLE_ENABLE=true \
-e CHRONICLE_S3_BUCKET=my-chronicle-cas \
-e AWS_REGION=us-east-1 \
-e S3_BUCKET=my-deployment-registry \
-e VALKEY_URL=redis://valkey:6379 \
-e ADMIN_API_KEY=pod_admin_... \
-e SECRETS_KEY=... \
--privileged \ # Required for FUSE
podium:latest
--privileged or --cap-add SYS_ADMIN --device /dev/fuse is required for Chronicle FUSE mounts inside containers.
Production Architecture
ALB
│
┌──────┴──────┐
▼ ▼
Gateway-1 Gateway-2
│ │
└──────┬───────┘
│
Valkey
│
┌───────────┼───────────┐
▼ ▼ ▼
Coordinator Coordinator Coordinator
(ECS Task) (ECS Task) (ECS Task)
AWS Components
| Component | Service | Notes |
|---|
| Gateway | ECS Fargate | Stateless, horizontally scalable |
| Coordinator | ECS EC2 | Needs FUSE (privileged), stateful |
| Service Discovery | ElastiCache (Valkey) | Coordinator registration |
| Deployment Registry | S3 | Agent bundles |
| State Replication | S3 (Litestream) | Agent databases |
| CAS Storage | S3 | Chronicle content-addressable storage |
| Observability | CloudWatch (OTLP) | Traces + metrics |
Podium includes Terraform modules for AWS deployment covering ECS services, ALB configuration, Valkey cluster, S3 buckets, IAM roles, and security groups.
Scaling
- Gateway: Stateless — scale horizontally behind ALB
- Coordinator: Stateful — scale by adding instances; Valkey distributes new agents to least-loaded coordinator
- Agents: Scale within a coordinator up to resource limits; scale out by adding coordinators