Environment modes¶
Status: Current | Last reviewed: 2026-05-28
TrueServe Framework runs in three places. Which one you are in determines which commands work and which docs apply.
Detect your mode¶
Run:
echo "${TRUESERVE_DEV_MODE:-unset}"
| Output | You are in | Read this | Avoid this |
|---|---|---|---|
dev (or legacy vanguard) |
The dev devcontainer (Codespaces or EC2) | .devcontainer/CLAUDE.md, 08-environments/ | kubectl, kind, helm (unless validating a chart) |
unset and command -v overmind succeeds |
Same as above (env var was just unexported) | Same | Same |
unset and command -v kubectl succeeds inside a Kind node |
Ad-hoc Helm chart validation | scripts/kind-optional/README.md, 05-deployment/helm-chart-anatomy.md | Day-to-day app dev — Kind is not for that |
| Anything else, in a CI job or production cluster | A real Kubernetes cluster (Sentinel, EKS, AKS, on-prem) | 05-deployment/ | Editing files; treat the cluster as immutable from here |
What the modes mean¶
Dev (Vanguard)¶
This is where you do daily work. The custom services run as host processes under Overmind, reading source from apps/ directly. Infra (postgres, redis, etc.) and media (asterisk, kamailio, janus, rtpengine, coturn) run in Docker Compose containers next to your shell.
Hostnames *.vanguard.dev.trueserve.deloitte.com resolve to the devcontainer's nginx ingress. They are not pointing at a remote cluster. Calls placed against them land on the Asterisk container running next to you.
City dev environments (rome, kyiv, etc.) are also dev mode — they are EC2 boxes mirroring the same topology, one per engineer.
See vanguard-codespaces.md and vanguard-ec2.md.
Kind (chart validation only)¶
Kind is only useful when you change a Helm chart and want to test the rendered manifests in a real Kubernetes API server before promoting. Spin it up with scripts/kind-optional/dev-kind-up.sh, validate, then tear it down. Do not try to develop against Kind day-to-day; the dev devcontainer is faster and matches how the code is actually written.
Cluster (Sentinel, EKS, AKS, on-prem)¶
Production environments are not edited from a shell. Changes flow through PRs that update charts/trueserve-stack/values-*.yaml, get reviewed, and apply via the sentinel-deploy-gke.yml GitHub Actions workflow (Sentinel) or equivalent ArgoCD app for cloud customers. Direct kubectl access is for incident response only.
Why this matters¶
Older docs in this repo assume Kubernetes. If you find yourself reaching for kubectl get pods while reading them, stop. You are in dev mode and the equivalent is overmind status. The old commands were correct when written; the dev environment changed underneath them. The current docs/ and the .devcontainer/CLAUDE.md reflect the current world.