v2.2.0

vllm-project/vllm-omniv2.2.0Apr 28, 2026by iamprashant

AI Summary

This release focuses on infrastructure changes to make inbound voice AI production-ready, featuring distributed SIP registration and improved multi-server failover capabilities.

Key Highlights

  • Distributed SIP registration based on Redis-backed ownership
  • Multi-target SIP transfer failover with ordered `transfer_to` targets
  • Explicit post-transfer behavior options (`end_call` and `resume_ai`)
  • Improved multi-server ownership semantics for safer failover
  • Renamed transfer argument from `to` to `transfer_to`

Breaking Changes

  • `transfer_to` replaces `to` in transfer tool calls

New Features

  • Distributed SIP registration manager
  • Multi-target SIP transfer support with retry/failover logic
  • Explicit post-transfer behavior configuration
  • Improved session state handling around transfers
  • Enhanced telephony metadata alignment

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)