Infrastructure

Mentat runs on a single GCP VM managed by Terraform. The host has nested KVM enabled for Firecracker microVMs.

Host Specs

Machinen2-standard-8 (8 vCPU, 32GB RAM)
OSUbuntu 24.04 LTS (Noble)
CPU PlatformIntel Cascade Lake
Nested KVMEnabled
Boot Disk150GB PD-SSD
Data Disk512GB PD-SSD
IP35.192.44.137 (static)
Zoneus-central1-a

Directory Layout

/opt/mentat/bin/
  ├── mt              # CLI (6.9 MB)
  ├── mentat-server   # Control plane (5.4 MB)
  └── mentat-agent    # Node agent (8.3 MB)

/var/lib/mentat/
  └── state/          # Sled database

/tmp/mentat/
  └── firecracker/    # VM sockets

/mnt/unikernel-volumes/   # 512GB PD-SSD
  ├── sietch/         # OxideDB HNSW indices
  ├── vault/          # Harkonnen Vault storage
  ├── harvester/      # OxideETL data
  └── oxidestore/     # S3-compatible object storage

Firewall Rules

PortServiceAccess
22SSHExternal
4646Mentat APIExternal
4647Agent APIInternal
80/443HTTP/HTTPSExternal
8080Dune Stack servicesExternal
9090MonitoringExternal

Installed Software

Firecrackerv1.7.0
Docker28.2.2
KVM/dev/kvm (user: mentat, group: kvm)

Terraform

Infrastructure is managed via Terraform with GCS backend. State stored in gs://mentat-tfstate.

deploy infrastructure
cd Terraform/
terraform init
terraform plan -var="project_id=valid-decoder-394014"
terraform apply -var="project_id=valid-decoder-394014" -auto-approve

Backups

Daily snapshots of the 512GB data disk at 04:00 UTC (01:00 Santiago). Retention: 7 days. Managed by GCP snapshot policy mentat-daily-snapshot.

Build & Deploy Binaries

cross-compile and upload
# Build static Linux binaries (from macOS)
cargo build --release --target x86_64-unknown-linux-musl \
  --bin mt --bin mentat-server --bin mentat-agent

# Upload to host
scp -i ~/.ssh/google_compute_engine \
  target/x86_64-unknown-linux-musl/release/{mt,mentat-server,mentat-agent} \
  mentat@35.192.44.137:/opt/mentat/bin/