v2.2.0
BenedictKing/ccxv2.2.0Apr 28, 2026by iamprashant
AI Summary
This beta release implements production-ready inbound voice AI infrastructure with distributed SIP registration and multi-server ownership. It introduces multi-target SIP transfer with failover logic and defines explicit post-transfer behaviors for better control over call flows.
Key Highlights
- Breaking change: `transfer_to` replaces `to`
- Distributed SIP registration with Redis ownership
- Multi-target SIP transfer with ordered failover
- Defined post-transfer behaviors (end_call, resume_ai)
Breaking Changes
- `transfer_to` replaces `to` in transfer tool calls
New Features
- Distributed SIP registration manager
- Redis-backed DID ownership flow
- Multi-target transfer with retry logic
- Post-transfer behavior control
Full Release Notes
This release focuses on three infrastructure changes that make inbound voice AI production-ready. --- > **Breaking change:** `transfer_to` replaces `to` in transfer tool calls. Update your configs before upgrading. --- ## Distributed SIP Registration The registration flow is now based on explicit ownership and reconciliation: - Each DID is claimed through Redis-backed ownership - One instance becomes the active owner for that DID - The owner performs SIP registration and keeps it active - If that owner disappears, another instance can claim the DID and restore service This is a key step toward making inbound voice AI reliable in multi-instance deployments. ## Multi-Server Ownership and Failover The registration pipeline now separates ownership, registration, and active-state handling more cleanly: - Clearer ownership semantics per DID - Safer failover across replicas - Fewer single-node assumptions - More predictable behavior in horizontally scaled deployments ## Multi-Target SIP Transfer Failover SIP transfer now supports multiple ordered `transfer_to` targets: - Try target 1 - If target 1 fails or does not answer, try target 2 - Continue until a target connects or the list is exhausted ## Defined Post-Transfer Behavior Transfer now has explicit post-transfer behavior for SIP: - `end_call` - `resume_ai` --- ## Engineer-Facing Changelog ### SIP Registration - Added distributed SIP registration manager - Added Redis-backed DID ownership flow - Added multi-server registration pipeline - Separated claim ownership, register, and mark-active stages - Improved reconcile behavior for active and removed registrations - Improved ownership release behavior for failover and cleanup ### SIP Transfer - Added support for ordered multi-target transfer via `transfer_to` - Added per-target transfer retry/failover flow - Added explicit post-transfer behavior with `end_call` and `resume_ai` - Improved transfer handling in SIP pipeline and streamer path - Aligned transfer behavior for channels where multi-target transfer does not apply ### Telephony and Session Behavior - Improved metadata alignment across telephony paths - Improved transfer-related session state handling - Improved observer/event behavior around transfer lifecycle - Reduced undefined behavior after operator hangup ### Tooling and API Cleanup - Renamed transfer argument from `to` to `transfer_to` - Improved transfer tool call handling - Improved downstream transfer orchestration consistency ### Stability and Tests - Added and updated tests around transfer behavior - Improved dispatch-related test coverage - Fixed call-flow edge cases around tool calls and injected messages - Refined dispatch behavior for transfer and tool-call flows --- **Full Changelog:** [v2.1.0...v2.2.0](https://github.com/rapidaai/voice-ai/compare/v2.1.0...v2.2.0)