Skip to main content

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​

WhoDoes whatDoes not
Navin Manager and its agentsinstalls and upgrades the services, writes the system configuration, opens the ports, issues the certificates, backs up, restores, checks the healthno 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, quotasno 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​

ServiceRoleMethodRequired
asteriskPBX: PJSIP, dialplan, IVR, queues, voicemail, conferences, recordings, ARI, AMI, CDR and CELUbuntu 24.04 packageyes
kamailiopublic SIP edge: TLS, WSS for the softphones, NAT, anti-flood, anti-bruteforce, dispatcher to Asterisk and LiveKit SIPpackageyes
livekitLiveKit server (rooms of the voice agents)binary or Podmanfor AI agents
livekit-sipSIP gateway to the LiveKit roomsPodmanfor AI agents
livekit-agentsworkers of the Navin AI voice agents (package navin-voice-agent)Pythonfor AI agents
livekit-egressLiveKit recordings to SeaweedFSPodmanno
rtpenginemedia relay: RTP anchoring, difficult NAT, media interconnectionpackageno, never installed by default
livekit-ingressRTMP and WHIP inputsPodmanno, 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 ai goes 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​

PageContent
Installation through the Managerinstallation order, modes, systems, ports, bindings
Configuration in the portalPBX pools, settings, trunks, numbers, extensions, routing, IVR, queues, agents, publication
Operationsactive calls, drain, reconciliation, recordings, fraud, statistics
High availabilityreal guarantees per failure and limits
Securitynetwork exposure, secrets, ephemeral credentials, SIP protections, tenant isolation
Backup and restorewhat the Manager backs up, what stays in Navin Enterprise
Licencesexact licence of every brick, obligations, pending exceptions