Softswitch and call control
13/18 liveA back-to-back user agent is the product, not a module inside one. Every leg terminates on the engine, so there is no direct media path between two endpoints and nothing bypasses the switch.
Pure-Rust B2BUA softswitch
LiveTen crates plus an Axum API host. The SIP parser, the transaction machines, the transports, the back-to-back user agent and the whole RTP and SRTP path are first-party Rust, and none of them contains an unsafe block.
Full media anchor on every leg
LiveEach leg gets its own RTP port and the bridge relays or transcodes. No endpoint-to-endpoint media path exists to be misrouted.
Registrar with digest auth
LiveSingle-use nonce with replay protection, and up to five simultaneous bindings for one account.
Inbound resolution in three steps
LiveDirect number lookup, then a regular-expression inbound route, then extension fan-out, resolving to one of fifteen route actions each with its own failure response.
Per-tenant admission control
LiveOne choke point derives the tenant, acquires a concurrency slot, and answers 503 with Retry-After when the tenant is over its cap.
Hold and resume
LiveThe bridge pauses rather than tearing down, so resume does not rebuild the media path from scratch.
Blind transfer
LiveWired to a real REFER and NOTIFY exchange on the call path.
Attended transfer
PartialThe consultation step works, but the Replaces header on an incoming REFER is read only as a flag and the consultation dialog is never bridged. It behaves as a blind transfer with an extra hold step rather than an RFC 3891 attended transfer, and the control API rejects any transfer type other than blind.
Directed and group call pickup
LiveAnswer a call ringing on another extension, by naming it or through a shared pickup group.
Call park and retrieval
PartialPark and retrieve work over the SIP feature code with live media. The expiry sweep does not yet recall a forgotten parked call: it tears the call down instead of ringing it back, so park is for a deliberate hand-off rather than a parking lot left unattended.
Call forwarding, unconditional
LiveForward every call for an extension to another destination. Database driven and reachable from a live call.
Call forward on busy or no answer
PlannedConditional forwarding is not wired to a live call today. Only unconditional forwarding is, so a rule that should fire on busy or on timeout is programme work.
Dial plan with least cost routing
LiveA rule matcher over a closed set of conditions and route actions, with least cost routing evaluated inside that matcher rather than by a separate engine. Deliberately no arbitrary code runs in the call path.
Carrier trunking with interop hardening
LivePersistent TCP with keepalive and dead detection, backoff reconnect, dialog stickiness, 401 and 407 challenge handling, RFC 3263 FQDN targets, and 423 Min-Expires honoured.
Early media (183 with SDP)
PartialImplemented and shipped switched off. 183-with-SDP interop varies by carrier, so it is an operator opt-in rather than a default.
Ring groups with real strategies
LiveMembers are loaded from the database at boot, so a ring group rings the people in it. Ring-all and sequential strategies are selected per group.
SIP transaction duplicate absorption
LiveA retransmitted request is absorbed at the transaction layer instead of being processed twice, which is what stops a duplicated INVITE from raising a second call leg on a lossy carrier link.
Live-call failover across nodes
PlannedActive standby with streaming replication is a deployment pattern available now. Replicating dialog and media state so calls in flight survive a node loss is not built, and the approved answer is an external session border pattern.