Skip to main content

Voice Operations

Deployment

The repo ships Docker Compose for local and single-host use, and Kubernetes manifests for production β€” namespace, deployment, configmap, ingress, a separate admin ingress, and an HPA.
Admin routes have their own ingress. Keep it internal β€” it exposes tenant cache controls, diagnostics, and session data, gated only by ADMIN_API_KEY.

Health probes

Kafka is probed and reported in readiness but only fails it when HEALTH_READY_REQUIRE_KAFKA=true β€” so by default a broker outage cannot pull call-serving pods out of rotation.

Metrics

Prometheus, with pre-configured Grafana dashboards, plus Alertmanager in the Compose stack.
The dedicated metrics port is unauthenticated by design and must be network-restricted. Do not expose it through a public ingress.
Metrics worth alerting on:
  • escalation_bridge_failed_total β€” a background escalation failed and the caller got a recovery prompt instead of a human.
  • Provider outcome metrics for ElevenLabs β€” these reveal circuit-breaker trips before callers report bad audio.

Auth transport rollout

GET /admin/alerts/auth-transport evaluates rollout state as ok / warn / error with actionable alert codes, and GET /admin/auth/transport shows the legacy fallback toggle and stream-secret readiness. Use these while migrating off legacy query auth β€” they tell you whether any tenant still depends on it before you turn it off.

Tenant cache

Idle entries also expire automatically per TENANT_CACHE_IDLE_TTL_SECS (default 3600s).

Twilio webhook diagnostics

When inbound calls fail to resolve to the right tenant:

Resilience

  • Retries with exponential backoff on external API calls.
  • Circuit breaker on ElevenLabs, so transport and 5xx/429 failures don’t cascade.
  • Graceful shutdown with resource cleanup.
  • Rate limiting per IP and per tenant, with automatic bucket cleanup.

Load testing

A load-test/ harness ships with the repo for validating capacity before a launch.