Navin telephony
The Navin telephony brings together a PBX (Asterisk), a SIP edge (Kamailio), a SIP gateway to LiveKit, AI voice agents and the storage of recordings in SeaweedFS. The decisions are in ADR-0173; the state of the existing code before this work is in the audit of the existing code.
Two planes
| Who | Does what | Does not |
|---|---|---|
| Navin Manager and its agents | installs and upgrades the services, writes the system configuration, opens the ports, issues the certificates, backs up, restores, checks the health | no extension, no IVR, no queue, no business rule |
| Navin Enterprise (Control Plane and portal) | tenants, trunks, numbers, extensions, routing rules, IVRs, queues, human and AI agents, conferences, recordings, call records, quotas | no system command; every infrastructure operation is requested from the Manager |
Navin Enterprise reaches the engines through their network interfaces: AMI and ARI of Asterisk, JSONRPC of Kamailio,
LiveKit API, S3 of SeaweedFS. The addresses and secrets of these interfaces come from the bindings of the
navin-enterprise service of the Manager catalogue.
Catalogue services
| Service | Role | Method | Required |
|---|---|---|---|
asterisk | PBX: PJSIP, dialplan, IVR, queues, voicemail, conferences, recordings, ARI, AMI, CDR and CEL | Ubuntu 24.04 package | yes |
kamailio | public SIP edge: TLS, WSS for the softphones, NAT, anti-flood, anti-bruteforce, dispatcher to Asterisk and LiveKit SIP | package | yes |
livekit | LiveKit server (rooms of the voice agents) | binary or Podman | for AI agents |
livekit-sip | SIP gateway to the LiveKit rooms | Podman | for AI agents |
livekit-agents | workers of the Navin AI voice agents (package navin-voice-agent) | Python | for AI agents |
livekit-egress | LiveKit recordings to SeaweedFS | Podman | no |
rtpengine | media relay: RTP anchoring, difficult NAT, media interconnection | package | no, never installed by default |
livekit-ingress | RTMP and WHIP inputs | Podman | no, not needed by telephony |
PostgreSQL, Redis, SeaweedFS, Prometheus, Alloy and Alertmanager are the existing services of the catalogue; the telephony connects to them through bindings.
Call flows
- PBX branch. Carrier or phone, then Kamailio, then an Asterisk node of the pool of the tenant (dispatcher set 1 for the shared pool, sets 100 and above for the dedicated pools).
- Direct AI branch. A number routed
aigoes from Kamailio to LiveKit SIP (set 2), which puts the caller into a room where a voice agent worker takes it. - AI branch through the PBX. An IVR or a queue of Asterisk dials
PJSIP/{agent}@livekit-sip. - Transfer from the AI to a human. SIP REFER to Kamailio, which routes the extension to its Asterisk.
- Portal softphone. JsSIP in SIP over secure WebSocket to Kamailio, DTLS-SRTP media with ICE up to Asterisk, ephemeral credentials issued by Navin Enterprise.
Every call carries the X-Navin-Call-Id header; the call session of Navin links this identifier, the uniqueid and
linkedid of Asterisk, the SIP Call-ID, the LiveKit room and participant.
Pages of the guide
| Page | Content |
|---|---|
| Installation through the Manager | installation order, modes, systems, ports, bindings |
| Configuration in the portal | PBX pools, settings, trunks, numbers, extensions, routing, IVR, queues, agents, publication |
| Operations | active calls, drain, reconciliation, recordings, fraud, statistics |
| High availability | real guarantees per failure and limits |
| Security | network exposure, secrets, ephemeral credentials, SIP protections, tenant isolation |
| Backup and restore | what the Manager backs up, what stays in Navin Enterprise |
| Licences | exact licence of every brick, obligations, pending exceptions |