Skip to content

Runtime targets

Status: Current | Last reviewed: 2026-07-08

The same code runs in three places. The differences are operational, not architectural.

The three targets

Vanguard (dev) Sentinel (prod) Cloud customer
Where Devcontainer on Codespaces or EC2 GKE sentinel-dev cluster, trueserve namespace EKS / AKS / on-prem cluster, trueserve namespace
Who runs it Each engineer TrueServe ops Customer ops
Custom services Host processes under Overmind, reading source from apps/ Helm-deployed pods Helm-deployed pods
Infra Docker Compose containers In-cluster or managed (Cloud SQL, Memorystore, GCS) Helm conditions toggle managed equivalents (RDS, ElastiCache, S3)
Media Docker Compose containers hostNetwork pods on a dedicated media pool Same
Helm chart Not used charts/trueserve-stack + values-cloud-gcp.yaml Same chart + values-aws.yaml / values-azure.yaml / etc.
Hot reload Yes — edit a file, the process restarts No — image rebuild + Helm upgrade No
DNS *.vanguard.dev.trueserve.deloitte.com → devcontainer nginx *.sentinel.trueserve.deloitte.com → GKE ingress Customer-controlled

Why one chart for two prod targets

Sentinel and customer clusters use the same umbrella chart (charts/trueserve-stack). The values file is the only thing that differs. Per-cloud subcharts and conditions handle:

  • Toggling in-cluster databases vs. external ones (postgres.enabled: false + externalPostgres.host).
  • Toggling pgbouncer (AWS only, in front of RDS).
  • Storage backend (MinIO vs. S3-compatible S3/GCS endpoint; Azure Blob requires a gateway or future native adapter).
  • Network ingress (Cloud Load Balancer vs. ALB vs. Application Gateway).
  • Media node selectors (cloud.google.com/gke-nodepool: media-pool vs. taints on EKS).

See helm-chart-anatomy.md and cloud-managed-swap.md.

Why Vanguard does not use Helm

Vanguard runs on a single host. Kubernetes adds latency, complexity, and friction without buying anything: there is no scaling, no scheduling, no rolling deploys. Overmind + Compose gives faster boot, native hot reload, and direct container logs.

The cost is that Vanguard does not catch chart-shape regressions. That is what Kind is for; see scripts/kind-optional/README.md.

What is identical across all three

  • The application code in apps/.
  • The schema in deploy/init-scripts/.
  • The proto definitions in proto/.
  • The Pipecat pipeline graph for any given agent (it comes from agent_versions.config, which is just JSON).
  • Service-to-service protocols (gRPC, HTTP, WebSocket).

What changes is wiring: hostnames, secrets, log destinations, scaling.

What runs where

A short reference of the moving parts:

Component Vanguard Sentinel / customer
ai-orchestrator Overmind process, :50051 Deployment, replicas via HPA
ai-manager Overmind process (Next.js dev server), :3001 Deployment behind ingress
agent-host Overmind MCP process, :8003 Deployment / StatefulSet depending on environment
async-agent Overmind process Deployment + RabbitMQ consumer
media-proxy Overmind process Deployment on media pool
asterisk Compose container, hostNetwork via host hostNetwork pod, dedicated node
kamailio Compose container hostNetwork pod, dedicated node
janus Compose container hostNetwork pod, dedicated node
rtpengine Compose container hostNetwork pod, kernel module unavailable → userspace
postgres Compose container Cloud SQL / RDS / Azure DB
redis Compose container Memorystore / ElastiCache / Azure Cache
minio Compose container Disabled — uses S3-compatible object storage
neo4j Compose container Neo4j Aura
rabbitmq Compose container Amazon MQ (AWS) / in-cluster (others)

See also