Infrastructure Requirements
Dependency matrix, hardware requirements, network topology, pod architecture, and the local development stack.
Infrastructure Requirements
This page defines the infrastructure components required to run AEGIS, their inter-dependencies, and minimum hardware specifications.
Deployment Paths
AEGIS provides two distinct deployment paths depending on your use case:
| Path | Use Case | IAM | Secrets | TLS |
|---|---|---|---|---|
aegis init | Local testing & evaluation | None (unauthenticated) | In-memory | None |
aegis-deploy | Production | None (optional add-on) | OpenBao | Caddy ACME |
aegis init bootstraps a minimal local stack suitable for experimenting with agents and
workflows. It does not deploy Keycloak, OpenBao, or a TLS edge proxy. It is not suitable for
production use.
aegis-deploy (github.com/100monkeys-ai/aegis-deploy)
is the recommended production deployment path. It deploys all platform services as Podman pods with
secrets management and TLS termination.
Dependency Matrix
| Component | Version | Role | Required |
|---|---|---|---|
| Docker Engine | 24.0+ | Agent container runtime, local development | ✓ (one of Docker or Podman) |
| Podman | 4.0+ | Agent container runtime and production platform deployment | ✓ (one of Docker or Podman) |
| PostgreSQL | 15+ | Primary data store (agents, executions, events) | ✓ |
| Temporal | 1.22+ | Durable workflow execution | ✓ (if using workflows) |
| SeaweedFS | 3.60+ | Volume storage backend — see SeaweedFS Storage | ✓ |
| OpenBao | 2.0+ | Secrets management | Recommended |
| Caddy | 2.9+ | Reverse proxy with automatic TLS | Production only |
| Jaeger | 1.55+ | Distributed tracing (OTLP collector) | Recommended |
| Prometheus | 2.51+ | Metrics collection and alerting | Recommended |
| Grafana | 10.4+ | Dashboards and visualization | Recommended |
| Loki | 3.0+ | Log aggregation | Recommended |
| Linux kernel | 5.15+ | KVM support for Firecracker (planned later phase) | Later phase |
Minimum viable deployment requires only a container runtime (Docker or Podman), PostgreSQL, and SeaweedFS. For the full platform deployment with Podman pods, see Deployment Profiles.
Network Architecture
┌────────────────────────────────────────────────────────────────────────┐
│ Caddy Reverse Proxy (pod-zaru-edge) :80 / :443 │
│ Routes: api.* → :8088 auth.* → :8180 grafana.* → :3300 etc. │
└───────┬────────────────────────────────────────────────────────────────┘
│
▼ aegis-network (Podman bridge)
┌───────────────────────────────────────────────────────────────────────┐
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌────────────────────┐ │
│ │ pod-core │ │ pod-temporal │ │ pod-database │ │
│ │ aegis-runtime │ │ temporal :7233 │ │ postgres :5432 │ │
│ │ :8088 :50051 │ │ temporal-ui :8233│ │ pg-exporter :9187 │ │
│ │ :2049 :9091 │ │ worker :3000 │ │ │ │
│ └─────────────────┘ └─────────────────┘ └────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌────────────────────────────────────────┐ │
│ │ pod-secrets │ │ pod-storage │ │
│ │ openbao :8200 │ │ master :9333 volume :8080 filer :8888│ │
│ └─────────────────┘ └────────────────────────────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ pod-observability│ │ pod-seal-gateway│ │
│ │ jaeger :16686 │ │ gateway :8089 │ │
│ │ prometheus :9090│ │ :50055 │ │
│ │ grafana :3300 │ │ │ │
│ │ loki :3100 │ │ │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ Agent Containers (spawned by aegis-runtime via bollard) │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ container1 │ │ container2 │ │ container3 │ │ │
│ │ │ NFS mount │ │ NFS mount │ │ NFS mount │ │ │
│ │ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ │ │
│ └────────┼───────────────┼───────────────┼───────────────────────┘ │
│ └───────────────┴───────────────┘ │
│ All NFS traffic → pod-core (port 2049) │
└───────────────────────────────────────────────────────────────────────┘Agent containers communicate only with the AEGIS orchestrator (via /v1/dispatch-gateway over HTTP) and the NFS server (port 2049). They do not have direct access to PostgreSQL, SeaweedFS, OpenBao, or external networks (unless the manifest network_policy.allowlist permits specific domains).
Hardware Requirements
Development / Single-Node
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores | 8+ cores |
| RAM | 8 GiB | 16 GiB |
| Disk | 40 GiB SSD | 200 GiB SSD |
| OS | Linux, macOS (Docker Desktop or Podman Desktop) | Ubuntu 22.04 LTS |
Note: macOS is supported for local development only (Docker Desktop or Podman Desktop). Production deployments require Linux.
Production Multi-Node
Minimum 3 nodes for high availability:
| Node Type | Role | CPU | RAM | Disk |
|---|---|---|---|---|
| AEGIS Orchestrator | Agent execution host | 16 cores | 32 GiB | 100 GiB SSD |
| Database | PostgreSQL + Temporal | 8 cores | 16 GiB | 500 GiB NVMe |
| Storage | SeaweedFS master + filer | 4 cores | 8 GiB | 1+ TiB HDD or NVMe |
Scale AEGIS Orchestrator nodes horizontally to increase concurrent execution capacity. PostgreSQL and SeaweedFS can be scaled independently.
Local Development Stack
Install and initialize AEGIS locally:
# Install AEGIS
curl -fsSL https://get.100monkeys.ai | bash
# Initialize local stack
aegis init
# Check service status
docker compose -f ~/.aegis/docker-compose.yml ps
# View logs
docker compose -f ~/.aegis/docker-compose.yml logs -fDev Stack Services
| Service | Port | Purpose |
|---|---|---|
| PostgreSQL | 5432 | AEGIS database |
| SeaweedFS Master | 9333 | SeaweedFS coordination — see SeaweedFS Storage |
| SeaweedFS Filer | 8888 | SeaweedFS POSIX layer |
| SeaweedFS Volume | 8080 | SeaweedFS data server |
| Temporal Server | 7233 | Workflow execution |
| Temporal Web UI | 8233 | Workflow visibility UI |
Clone and start the AEGIS daemon against the dev stack:
git clone https://github.com/100monkeys-ai/aegis-orchestrator.git
aegis daemon start --config ./aegis-config.yamlPorts
| Port | Protocol | Service | Pod | Exposure |
|---|---|---|---|---|
| 8088 | HTTP | AEGIS REST API | core | Internal / load-balanced |
| 50051 | gRPC | AEGIS gRPC API | core | Internal / load-balanced |
| 9091 | HTTP | Prometheus metrics | core | Internal (scrape target) |
| 2049 | TCP | NFS Server Gateway | core | Agent container LAN only |
| 5432 | TCP | PostgreSQL | database | Internal only |
| 9187 | HTTP | PostgreSQL Exporter | database | Internal (scrape target) |
| 7233 | gRPC | Temporal Server | temporal | Internal only |
| 8233 | HTTP | Temporal UI | temporal | Internal / proxied |
| 8200 | HTTP | OpenBao | secrets | Internal only |
| 9333 | HTTP | SeaweedFS Master | storage | Internal only |
| 8080 | HTTP | SeaweedFS Volume | storage | Internal only |
| 8888 | HTTP | SeaweedFS Filer | storage | Internal only |
| 16686 | HTTP | Jaeger UI | observability | Internal / proxied |
| 4317 | gRPC | OTLP Collector | observability | Internal only |
| 9090 | HTTP | Prometheus | observability | Internal / proxied |
| 3300 | HTTP | Grafana | observability | Internal / proxied |
| 3100 | HTTP | Loki | observability | Internal only |
| 8089 | HTTP | SEAL Gateway | seal-gateway | Internal / proxied |
| 50055 | gRPC | SEAL Gateway gRPC | seal-gateway | Internal only |
| 80/443 | HTTP/TLS | Caddy Reverse Proxy | edge | Public |
Port 2049 (NFS) must be reachable by agent containers but should not be exposed to external networks. Public-facing traffic enters through Caddy on ports 80/443 only.