Skip to content
Tone is open sourcestar us on GitHub to follow along

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 update

Install

helm install tone tone/tone \
  --namespace tone --create-namespace \
  --values values.yaml

A 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/.