Skip to content

ADR-0001 Central Control Plane

Accepted.

Get2Dial is multi-tenant and spans many per-tenant edges. State (tenancy, campaigns, routing, CDRs) and orchestration (originate, reporting) need a single authoritative owner, while real-time media must stay close to each customer.

Run a shared control plane (Go API + PostgreSQL/TimescaleDB + Redis + NATS) that owns all durable state and orchestration. Keep media and carrier connectivity on per-tenant edges. Every API request is scoped to a tenant from its JWT; the control plane is never pinned to a single tenant.

  • One place to reason about state, auth and reporting across tenants.
  • Strict request-level tenant scoping is mandatory — pinning a tenant on the control plane mis-attributes data.
  • The edge stays single-tenant and stateless-ish, simplifying recovery.