Skip to content

v2.0.0 — Telephony Reliability, SIP, WebRTC & Asterisk

Choose a tag to compare

@iamprashant iamprashant released this 24 Feb 04:13
· 960 commits to main since this release
Immutable release. Only release title and notes can be modified.

What's Changed

Telephony: Rebuilt from the Ground Up

  • Unified channel architecture shared across Twilio, Vonage, Exotel, Asterisk, and SIP
  • Interruptions, end-of-call signals, and transfer/hangup events handled consistently across all providers
  • New `call_contexts` table persists call state — async provider callbacks resolve correctly even after call ends
  • Channel UUIDs propagate end-to-end for reliable transfer and hangup operations

New: SIP Integration

Full native SIP stack with RTP handling, SDP negotiation, port allocator, and session management.

New: Asterisk / AudioSocket

Native integration with Asterisk via AudioSocket and WebSocket. Inbound and outbound call flows tested.

New: WebRTC Channel

Browser-based voice with Opus codec support and gRPC signalling, sharing the same hardened base as telephony.

Audio Pipeline: Deterministic Framing

  • Exact 20 ms output frames with zero per-frame heap allocations
  • Atomic interruption — `ClearOutputBuffer` drains buffers and signals output writer instantly
  • Per-speaker recordings split into `assistant_recording_url` + `user_recording_url`

LLM Text Aggregator

Sentence-boundary aggregation between LLM stream and TTS — reduces first-word latency with configurable delimiters and clean context-switch flush.

Test Coverage

  • 31 `BaseStreamer` unit tests
  • Full telephony provider test suite (Twilio, Vonage, Exotel)
  • Transformer tests for AssemblyAI, Azure, Cartesia, Deepgram, ElevenLabs, Google, Resemble, Sarvam
  • LLM text aggregator: 972 lines of unit tests + 381 lines of benchmarks

Bug Fixes

  • Google TTS stale response fix for outputs > 5 sentences
  • AgentKit executor stability fixes
  • First-token response time now tracked in LLM telemetry
  • MCP tool support for agent tool invocations

Breaking Changes / Migrations

Migration Change
`000005` New `call_contexts` table required
`000006` `recording_url` split into `assistant_recording_url` + `user_recording_url`