Requirements
System requirements and support for self-hosting Future AGI
In this page
Check four things before you install:
- A host that meets the sizing for your usage
- The required software: Docker and Git
- A platform that allows privileged containers
- Host ports that are free, or remapped
Get these right and the Installation run works on the first try.
For a local trial: 4 CPU cores, 8 GB RAM, 20 GB disk, Docker Engine 24+, Docker Compose v2.24+, and Git. The host must allow privileged containers, which rules out Fargate, Cloud Run, and most managed container platforms.
Hardware tiers
Pick the row that matches how you’ll use the instance. The stack runs on the Evaluation tier, but ClickHouse and the Temporal worker are the resource drivers. Under-provisioning RAM is the most common cause of a failed first boot.
| Tier | Use case | CPU | RAM | Disk |
|---|---|---|---|---|
| Evaluation | Local trial, single user | 4 cores | 8 GB | 20 GB |
| Team | 1-20 users, regular eval runs | 8 cores | 16 GB | 50 GB |
| Production | 20+ users, high throughput | 16+ cores | 32+ GB | 200 GB+ SSD |
ClickHouse and the Temporal worker each hold ~1 GB RAM at steady state. ClickHouse grows with trace volume over time; Postgres stays small. Pulling the images takes a few GB of disk on the first run.
Tip
Docker Desktop only. On Mac, raise the limits in Settings → Resources: RAM ≥ 8 GB, disk ≥ 64 GB. That disk number is the whole Docker VM, not the 20 GB this stack uses, so it has to cover every image and volume on the machine. The defaults (2-4 GB RAM) will OOM-kill ClickHouse or the backend before the stack finishes booting. On Windows those sliders don’t apply, so set the limit in .wslconfig as shown in the Windows tab below.
Software
| Requirement | Minimum | Verify |
|---|---|---|
| Docker Engine | 24.0+ | docker --version |
| Docker Compose | v2.24+ | docker compose version |
| Git | 2.0+ | git --version |
Compose v2.24 is a hard floor, not a recommendation: docker-compose.yml declares its env files with the long path / required form, which older Compose can’t parse. On v2.23 or below the stack fails at parse time, before a single image is pulled.
Install the tools with Homebrew, then start Colima:
brew install docker docker-compose colima git
colima start --cpu 4 --memory 8 --disk 64 Install the tools with apt, then enable the Docker daemon:
sudo apt-get install -y docker.io docker-compose-v2 git
sudo systemctl enable --now docker
sudo usermod -aG docker $USER # log out and back in Install Docker Desktop for Windows with the WSL 2 backend, then set the memory limit in WSL, not Docker’s UI (the Settings → Resources sliders apply only to the Hyper-V backend):
# add to %UserProfile%\.wslconfig
[wsl2]
memory=8GB
# then apply:
wsl --shutdown Platform compatibility
Future AGI runs on any host that allows privileged containers. The code-executor service needs privileged: true to sandbox the user code it runs for evaluations, so platforms that block privileged mode lose that one service: the rest of the stack still runs, but code-based eval features are unavailable.
| Platform | Supported | Notes |
|---|---|---|
| Linux bare metal / EC2 / GCE / Azure VM | Yes | Full support |
| GKE / EKS nodes with privileged enabled | Yes | Compose on a node, not Kubernetes manifests. Needs a Pod Security Admission exception |
| ECS Fargate | No | privileged: true not supported |
| Google Cloud Run | No | Same |
| Render / Railway / Fly.io | No | Managed platforms block privileged mode |
There are no Helm charts or Kubernetes manifests: that support is on the roadmap, and Docker Compose is the only supported path today. The GKE/EKS row above means the host is capable, so you’d run Compose on a node rather than deploy the stack as Kubernetes workloads.
Network ports
Make sure these host ports are free before you install, or remap any that collide. Every published port reads from .env with a built-in default (for example ${FRONTEND_PORT:-3000}), so you can change one without touching the Compose file.
| Service | Default | Bind | .env key |
|---|---|---|---|
| Frontend | 3000 | 0.0.0.0 | FRONTEND_PORT |
| Backend API | 8000 | 0.0.0.0 | BACKEND_PORT |
| Gateway | 8090 | 0.0.0.0 | AGENTCC_GATEWAY_PORT |
| Model serving | 8080 | 0.0.0.0 | SERVING_PORT |
| Code executor | 8060 | 0.0.0.0 | CODE_EXECUTOR_PORT |
| Collector OTLP gRPC | 4317 | 127.0.0.1 | FI_COLLECTOR_OTLP_PORT |
| Collector OTLP HTTP | 4318 | 127.0.0.1 | FI_COLLECTOR_OTLP_HTTP_PORT |
| Collector admin | 9464 | 127.0.0.1 | FI_COLLECTOR_ADMIN_PORT |
| Postgres | 5432 | 127.0.0.1 | PG_PORT |
| ClickHouse HTTP | 8123 | 127.0.0.1 | CH_HTTP_PORT |
| ClickHouse TCP | 9000 | 127.0.0.1 | CH_PORT |
| Redis | 6379 | 127.0.0.1 | REDIS_PORT |
| MinIO API | 9005 | 127.0.0.1 | MINIO_API_PORT |
| MinIO console | 9006 | 127.0.0.1 | MINIO_CONSOLE_PORT |
| Temporal | 7233 | 127.0.0.1 | TEMPORAL_PORT |
Temporal UI (observability) | 8085 | 0.0.0.0 | TEMPORAL_UI_PORT |
PeerDB server (full) | 9900 | 127.0.0.1 | PEERDB_PORT |
PeerDB UI (full) | 3001 | 0.0.0.0 | PEERDB_UI_PORT |
Anything on 127.0.0.1 is reachable from the host but not from the network, which covers the data stores and the collector’s three ports. The user-facing services bind to 0.0.0.0.
Watch 4317 in particular: it’s the default OTLP port, so it collides with any other OpenTelemetry collector already on the host, and it’s where the SDK sends your traces.
The three rows tagged with a profile name only run under that profile and are free otherwise.
To find a collision before you install, check the ports you care about:
lsof -i :3000 -i :8000 -i :4317 # anything listed is already taken
If one is busy, compose fails at startup with a bind error naming the port. Remap it in .env, which the installer creates for you from .env.example.
Dive deeper
Questions & Discussion