self hosting
Kubernetes (Helm)
Deploy Tone to Kubernetes with the official Helm chart.
The Helm chart is the supported path for production deployments at scale. It handles worker autoscaling, pod-level isolation, and rolling deploys.
Add the repo
helm repo add tone https://charts.tonehq.dev
helm repo updateInstall
helm install tone tone/tone \
--namespace tone --create-namespace \
--values values.yamlA minimal values.yaml:
ingress:
enabled: true
host: tone.example.com
tls:
enabled: true
issuer: letsencrypt-prod
api:
replicas: 2
worker:
replicas: 4
autoscaling:
enabled: true
minReplicas: 4
maxReplicas: 32
targetCallQueueDepth: 20
postgres:
external: true
url: postgres://...
secrets:
twilio:
accountSid: ...
authToken: ...
openai:
apiKey: ...Worker autoscaling
The worker pods scale on call queue depth, not CPU. This matches the actual unit of work (a call) rather than a derived metric. The default target is 20 calls per worker — tune based on your turn-time characteristics.
Upgrades
The chart follows semver. Patch upgrades are zero-downtime by default; minor upgrades may require a migration step that's listed in the release notes. Major upgrades are rare and always documented.
Observability
Every component emits OpenTelemetry traces and Prometheus metrics. The
chart ships a ServiceMonitor for Prometheus Operator and ready-made
Grafana dashboards in deploy/dashboards/.