Rust-native real-time communications across SIP, WebRTC, QUIC, WebTransport, WebSocket, MoQ, voice AI, and enterprise integrations.
What ships · SIP interop · Choose a crate · Quick start · Capabilities · Extensions · Architecture · Evidence · Roadmap
Important
Unified 0.3.8 release train. All 44 publishable workspace crates ship on
the same version. Publication requires a fresh, strict full-beta run bound to
the exact release source: no skipped gates, no carry-forward qualification,
and passing workspace, security, four-peer interoperability, performance,
resiliency, and long-soak evidence. The generated beta report is authoritative
for the exact tested versions and results. The SIP product is the
release-gated beta surface. WebRTC,
UCTP, MoQ, the cross-transport APIs, Amazon Connect, and extension crates are
available today as developer-preview surfaces unless their own documentation
states a narrower qualification. Available does not mean API-stable or
production-certified; breaking changes remain possible before 1.0.
The same unified release includes all 14 optional extension crates and the
new native rvoip-vapi bidirectional raw-audio WebSocket transport.
rvoip is a modular real-time communications platform rather than a SIP crate with future adapters. Applications can use one product by itself or register multiple transports with the shared conversation model and bridge between them.
| Product area | Available capabilities | Maturity |
|---|---|---|
| SIP telephony | Endpoints, reactive servers, PBX/registrar/proxy building blocks, B2BUA bridging, call control, transfers, authentication, and full RTP media | Beta-qualified |
| Media and devices | RTP/RTCP, SDES-SRTP, G.711, optional codecs, DTMF, OS microphone/speaker integration, resampling, jitter buffering, and conference-mixing primitives | Beta-qualified core + developer-preview additions |
| WebRTC | WHIP/WHEP and WebSocket signaling, full-gather and trickle ICE, DTLS-SRTP, Opus/G.711 audio, VP8 video, SCTP data channels, and RFC 4733 DTMF | Available — developer preview |
| UCTP substrates | One conversation protocol over raw QUIC, WebTransport, or WebSocket, including capability negotiation and RTP datagram framing | Available — developer preview |
| Media over QUIC | MOQT draft-19 transport, native helper, embeddable relay, and an rvoip media-graph broadcast adapter | Available — developer preview |
| Gateways and bridges | SIP ↔ WebRTC ↔ UCTP routing, a high-level application builder, and SIP-to-Amazon-Connect audio/screen-pop integration | Available — developer preview |
| Voice AI and conversation data | Pluggable ASR, TTS, dialog, and recording providers; native bidirectional Vapi raw-audio WebSocket agents; signed vCon artifacts; and Postgres-backed vCon storage | Available — developer preview |
| Identity and compliance | Digest/Bearer foundations, OIDC, Keycloak, LDAP, Redis, SAML, SCIM, WebAuthn, IMS AKA, STIR/SHAKEN, and redacted audit/SIEM sinks | Beta-qualified SIP auth core + developer-preview extensions |
- Beta-qualified — covered by the SIP release gate and its bounded interoperability, security, standards, performance, and soak evidence.
- Available — developer preview — implemented and available in the workspace, but API-unstable or outside the SIP beta attestation.
- Planned — not implemented; listed only in the roadmap.
The 0.3.2 full release run passed all 16 selected PBX and interoperability gates. The table distinguishes peers that were exercised by that release run from proxy targets that it audited and deliberately excluded.
Both proxies have since been exercised in the AMR interop lab. That is lab evidence, labelled as such: it does not join the 0.3.2 release claim, and it does not meet the four-peer attestation boundary described below.
| Peer/tool | Status | Executed scope |
|---|---|---|
| Asterisk | 0.3.2 interop matrix passed | Endpoint, StreamPeer, and CallbackPeer; registration, basic call, G.729A/G.729AB, hold/resume, ring-cancel, RFC 4733 DTMF, rejection, and blind transfer over UDP and TLS |
| FreeSWITCH | 0.3.2 interop matrix passed | The same API, scenario, codec, and UDP/TLS matrix as Asterisk |
| SIPp | 0.3.2 standalone matrix passed | 30, 100, 300, 1,000, and 2,000 CPS; every configured call completed |
| baresip | 0.3.2 strict-UA check passed | External user-agent call against the rvoip SIP listener |
| Kamailio | Lab-tested; not release-gated | Registrar-proxy with an rtpengine media relay: registration, calls, AMR in all four framings relayed verbatim, DTMF, and SDES-SRTP, over UDP and TLS. No TCP, no second adjacency order, and not bound into the release attestation |
| OpenSIPS | Lab-tested; not release-gated | The same lab scope over UDP only — no TLS image yet |
See the 0.3.2 complete gate record and compatibility matrix for the evidence boundaries. A passing lab matrix is not carrier certification or a claim about every peer version and deployment topology.
New in 0.3.2, rvoip-vapi implements Vapi's
bidirectional WebSocket call transport directly in Rust. It originates the
Vapi agent leg, streams full-duplex μ-law 8 kHz or PCM 16 kHz raw audio, exposes
typed agent events and control/context messages, bridges an existing SIP or
WebRTC caller connection through the shared orchestrator, and supervises
symmetric teardown. It does not require a third-party telephony intermediary
between rvoip and Vapi.
The adapter is a developer-preview extension. Start with the
14-vapi-agent server, which accepts either SIP or
WebRTC callers.
| You want to build | Start with | Why |
|---|---|---|
| SIP endpoint, softphone, PBX, IVR, registrar, proxy, B2BUA, or gateway | rvoip-sip |
Highest-level release-gated SIP APIs: Endpoint, StreamPeer, CallbackPeer, and UnifiedCoordinator |
| One application spanning SIP, WebRTC, and UCTP | rvoip |
Shared Orchestrator, conversation model, transport adapters, and optional app builder |
| Mobile, desktop, web, or embedded client SDK | rvoip-client |
A single client/session/event surface with opt-in SIP, WebRTC, and UCTP transports |
| Browser or native WebRTC interop | rvoip-webrtc |
WebRTC server, client, signaling, media, data-channel, and orchestrator adapter surfaces |
| QUIC, WebTransport, or WebSocket conversation transport | rvoip-uctp |
UCTP protocol plus dedicated substrate adapters |
| Broadcast/fan-out over Media over QUIC | rvoip-moq |
MOQT media-graph adapter with native transport and relay crates |
| SIP calls delivered to Amazon Connect agents | rvoip-amazon-connect |
Turnkey SIP UAS, G.711 ↔ Opus bridge, contact attributes, and agent screen pops |
| SIP or WebRTC calls connected to Vapi voice agents | rvoip-vapi |
Native bidirectional raw-audio Vapi WebSocket transport integrated with the shared orchestrator and media bridge |
| Microphone and speaker audio for a SIP app | rvoip-audio-device |
CPAL device I/O, pacing, resampling, jitter buffering, mute, and metering |
| Authentication, provisioning, AI, vCon, or audit integrations | Extensions | Optional provider crates keep protocol cores independent of deployment backends |
Add the SIP product:
[dependencies]
rvoip-sip = "0.3.8"
tokio = { version = "1", features = ["full"] }A complete local call: Bob answers, Alice dials, then Alice hangs up.
use std::time::Duration;
use rvoip_sip::{Config, Endpoint, EndpointProfile};
#[tokio::main]
async fn main() -> rvoip_sip::Result<()> {
let bob = tokio::spawn(async {
let mut bob = Endpoint::builder()
.name("bob")
.profile(EndpointProfile::Custom(Config::local("bob", 5071)))
.build()
.await?;
let incoming = bob.wait_for_incoming().await?;
let call = incoming.answer().await?;
call.wait_for_end(None).await?;
bob.shutdown().await
});
tokio::time::sleep(Duration::from_millis(300)).await;
let alice = Endpoint::builder()
.name("alice")
.profile(EndpointProfile::Custom(Config::local("alice", 5070)))
.build()
.await?;
let call = alice
.call_and_wait("sip:bob@127.0.0.1:5071", Some(Duration::from_secs(10)))
.await?;
call.hangup_and_wait(Some(Duration::from_secs(5))).await?;
alice.shutdown().await?;
bob.await.unwrap()
}Run the equivalent checked-in example:
cargo run -p rvoip-sip --example endpoint_local_callThe standalone examples/ progress from a first P2P call through
real audio, PBX registration, call control, transfers, SRTP/TLS, IVR, B2BUA,
voice AI, and cross-transport integrations:
11-ai-harness-demo— ASR → dialog → TTS → recording → vCon with deterministic providers.12-customer-escalation-sip-webrtc— browser WebRTC chat escalated to a SIP agent voice call.13-sip-to-amazon-connect— SIP custom headers translated into Amazon Connect contact attributes and a live audio bridge.14-vapi-agent— one high-level server accepts either SIP or WebRTC callers and bridges them to Vapi voice agents.
| Capability | Maturity | Supported behavior | Start/evidence |
|---|---|---|---|
| Endpoint and server APIs | Beta-qualified | Outbound/inbound calls through Endpoint, scripted StreamPeer, reactive CallbackPeer, and lower-level UnifiedCoordinator |
rvoip-sip |
| Core dialog control | Beta-qualified | INVITE, ACK, BYE, CANCEL, REGISTER, OPTIONS, UPDATE, PRACK, REFER, SUBSCRIBE/NOTIFY, MESSAGE, and INFO within documented bounds | RFC matrix |
| PBX/gateway building | Beta-qualified | Registrar bindings, stateful proxy primitives, B2BUA call-leg coordination, media bridging, and custom SIP headers | 10-call-center-b2bua |
| Blind transfer | Beta-qualified | REFER-driven transfer and typed NOTIFY progress/final outcomes | 05-blind-transfer |
| Attended-transfer primitives | Available — developer preview | Consultation dialog identity, Replaces construction, REFER delivery, and a working orchestration example; not a complete RFC 3891 qualification |
06-attended-transfer |
| SIP transport | Beta-qualified | UDP, TCP, and TLS; plain SIP-over-WebSocket has bounded evidence | rvoip-sip-transport |
| Secure WebSocket | Available — developer preview | WSS listener/lower-level support; outbound WSS dialing is not a SIP beta claim | Transport README |
| Capability | Maturity | Supported behavior | Start/evidence |
|---|---|---|---|
| RTP/RTCP and G.711 | Beta-qualified | PCMU/PCMA media delivery, RTCP receiver reports, telephone-event DTMF, hold/resume, and bridging | rvoip-media-core |
| SDES-SRTP | Beta-qualified | Tested AES-CM/HMAC profiles with negotiated encrypted media | 07-secure-call-srtp |
| G.729A/G.729AB | Available — developer preview | Fully integrated optional path: PT 18 SDP/Annex B negotiation, RTP encode/decode, G.711 transcoding, and Asterisk/FreeSWITCH matrix coverage; excluded only from the general SIP full-media performance claim | 0.3.2 gate record |
| AMR-NB and AMR-WB | Available — developer preview | Both variants behind amr-nb/amr-wb: encoders and decoders bit-exact against the 3GPP reference implementations over the committed fixtures and the normative sequences, RFC 4867 octet-aligned and bandwidth-efficient framing checked against Wireshark's dissector, DTX, CMR and mode negotiation, every mode exercised in a live call, SDES-SRTP, and live calls through Asterisk, FreeSWITCH, Kamailio and OpenSIPS; outside the SIP beta attestation |
AMR status |
| Opus and G.722 paths | Available — developer preview | Feature-gated codec/media support; not part of the bounded SIP beta media claim | rvoip-media-core |
| OS audio devices | Available — developer preview | Microphone/speaker bridge, drift-free pacing, resampling, jitter buffering, mute-as-silence, and VU metering | 02-softphone-audio |
| Conference mixing | Available — developer preview | Lower-level N-way/N-1 mixing and conference monitoring primitives; not an integrated SIP beta conference product | Media README |
| Capability | Maturity | Supported behavior | Start/evidence |
|---|---|---|---|
| WebRTC interop | Available — developer preview | WHIP/WHEP and WebSocket signaling, full-gather/trickle ICE, DTLS-SRTP, Opus/G.711, VP8, SCTP data channels, and DTMF | rvoip-webrtc |
| TURN integration | Available — developer preview | External TURN server configuration; rvoip does not ship or claim a hosted TURN service | WebRTC scope |
| UCTP | Available — developer preview | Envelopes, state machines, capability negotiation, authenticated resource binding, and RTP datagram framing | rvoip-uctp |
| UCTP substrates | Available — developer preview | Dedicated raw QUIC, WebTransport, and WebSocket adapters | crates/uctp |
| Media over QUIC | Available — developer preview | MOQT draft-19 transport/native/relay packages plus rvoip media-graph broadcast integration | crates/moq |
| Cross-transport app builder | Available — developer preview | Role/capability policy, assignment, callbacks, SIP/WebRTC/UCTP listeners, and orchestration | rvoip::app |
| Amazon Connect | Available — developer preview | StartWebRTCContact, Amazon Chime WebRTC media, SIP-header contact attributes, G.711 ↔ Opus bridging, and agent screen pops |
13-sip-to-amazon-connect |
| Vapi voice agents | Available — developer preview | Native bidirectional μ-law/PCM raw-audio WebSocket agent sessions bridged to rvoip-owned SIP or WebRTC legs, with typed events, control messages, and supervised teardown | rvoip-vapi |
The WebRTC implementation of ICE and DTLS-SRTP is separate from the SIP beta claim. Likewise, UCTP and MoQ availability does not imply that SIP-over-QUIC or RTP-over-QUIC has shipped.
All 14 extension crates ship at 0.3.8. They are first-class workspace
capabilities, but remain optional so protocol crates depend on provider
contracts rather than deployment-specific services.
| Group | Extensions | Available capability |
|---|---|---|
| AI and conversation data | rvoip-harness, rvoip-vapi, rvoip-vcon, rvoip-vcon-postgres |
ASR/TTS/dialog/recording provider traits, native Vapi raw-audio WebSocket voice-agent bridging, signed vCon artifacts, in-memory interfaces, and Postgres storage |
| Caller trust | rvoip-stir-shaken |
STIR/SHAKEN PASSporT signing and verification for RFC 8224/RFC 8225/ATIS profiles |
| Authentication providers | rvoip-oidc, rvoip-keycloak, rvoip-ldap, rvoip-redis, rvoip-ims-aka |
OIDC discovery and validation, Keycloak integration, LDAP password verification, clustered auth/revocation/replay state, and IMS AKA adapters |
| User lifecycle | rvoip-saml, rvoip-scim, rvoip-webauthn |
SAML 2.0 service-provider integration, SCIM 2.0 provisioning, and WebAuthn/passkeys |
| Audit and observability | rvoip-audit |
Redacted JSONL and tracing sinks plus OTLP and SIEM exports for generic webhooks, Splunk, Elastic/ECS, Microsoft Sentinel, and Datadog |
The supporting contracts live in
rvoip-auth-core,
rvoip-users-core, and
rvoip-identity.
The facade exposes the conversation-model extensions together:
rvoip = { version = "0.3.8", features = ["voip-3"] }voip-3 enables SIP, WebRTC, UCTP, vCon, the identity provider surface, and
the AI harness. Vapi and STIR/SHAKEN have separate facade features:
rvoip = { version = "0.3.8", features = ["sip", "vapi", "sip-stir-shaken"] }Deployment-specific extensions are direct dependencies:
rvoip-keycloak = "0.3.8"
rvoip-redis = "0.3.8"
rvoip-audit = "0.3.8"The facade's full feature does not enable every workspace extension,
Amazon Connect, MoQ, or the audio-device crate.
┌───────────────────────────────────────────────────────────────────┐
│ Applications │
│ softphone · PBX · contact center · browser · AI · broadcast │
└───────────────────────────────┬───────────────────────────────────┘
│
rvoip facade / product APIs
│
┌───────────────────────────────▼───────────────────────────────────┐
│ Shared conversation model │
│ Orchestrator · Conversation · Session · Connection · Stream │
│ routing · admission · bridges · media graph · events │
└──────────────┬────────────────┬────────────────┬──────────────────┘
│ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼───────────────┐
│ SIP + RTP │ │ WebRTC │ │ UCTP │
│ UDP/TCP/TLS │ │ ICE/DTLS │ │ QUIC/WT/WebSocket │
└──────┬──────┘ └──────┬──────┘ └──────┬───────────────┘
└────────────────┼────────────────┘
│
┌──────────────────▼───────────────────┐
│ Optional products and extensions │
│ MoQ · Amazon Connect · AI · vCon │
│ identity · provisioning · audit │
└───────────────────────────────────────┘
Adapters depend on the shared ConnectionAdapter and core-trait surface; the
core does not import individual transport implementations. That dependency
direction lets one Orchestrator route and bridge different substrates
without coupling them to each other.
The unified release contains 44 publishable crates:
| Family | Crates |
|---|---|
| Front doors | rvoip, rvoip-client |
| Foundation | rvoip-core, rvoip-core-traits, rvoip-infra-common |
| Media | rvoip-media-core, rvoip-codec-core, rvoip-rtp-core, rvoip-audio-device |
| SIP | rvoip-sip, rvoip-sip-core, rvoip-sip-transport, rvoip-sip-dialog, rvoip-sip-proxy, rvoip-sip-registrar |
| WebRTC and Connect | rvoip-rtc, rvoip-webrtc-stack, rvoip-webrtc, rvoip-amazon-connect |
| UCTP | rvoip-uctp, rvoip-quic, rvoip-webtransport, rvoip-websocket |
| MoQ | rvoip-moq-transport, rvoip-moq-native, rvoip-moq-relay, rvoip-moq |
| Identity | rvoip-auth-core, rvoip-users-core, rvoip-identity |
| Extensions | The 14 extension crates listed above |
SIP beta claims are intentionally bounded by checked-in evidence rather than inferred from the presence of parser types, low-level primitives, or another product's implementation:
- 0.3.2 release exception and performance evidence — the complete owner-approved disposition, strict 106/108 result, and the accepted high-density burst deviation.
- Last strict beta candidate — the most recent candidate that passed all 108 automated gates without an exception.
- RFC evidence matrix — exact supported, partial, and unsupported standards claims.
- Security posture — qualified security behavior and explicit non-claims.
- Next release notes — unified release identity, source compatibility notes, and attestation provenance.
The 0.3.8 release requires a fresh strict full-beta report bound to one clean,
unchanged release source fingerprint. The gate admits no skipped checks and
includes the workspace, SIP/media, public API, security, PBX, SIPp, strict-UA,
proxy interoperability, performance, resiliency, and long-soak scopes. The
historical 0.3.4 carry-forward receipt remains immutable release history; it
does not qualify 0.3.8.
The strict full-beta gate requires an explicit PASS attestation for all four
independently managed peers below. The report generator binds every row to the
tested source tree, exact peer identity and configuration, selected matrix,
and hashed evidence; it refuses to produce a strict release-candidate report
if a required peer is missing, skipped, ambiguous, unpinned, or failing. This
four-peer matrix is mandatory for the 0.3.8 strict release gate.
| Peer | Attested boundary | Required release evidence |
|---|---|---|
| Asterisk | PBX/B2BUA call control and RTP media | Provider-specific all-PASS rows from the recorded API, scenario, codec, and security matrix, plus the exact local revision and configuration fingerprint |
| FreeSWITCH | PBX/B2BUA call control and RTP media | Provider-specific all-PASS rows from the recorded API, scenario, codec, and security matrix, plus the exact local revision and configuration fingerprint |
| Kamailio | RFC 3261 transaction-stateful proxy interoperability | Digest-pinned peer, both hop orders, UDP/TCP/TLS, packet assertions, verified TLS evidence, and post-retention cleanup |
| OpenSIPS | RFC 3261 transaction-stateful proxy interoperability | Digest-pinned peer, both hop orders, UDP/TCP/TLS, packet assertions, verified TLS evidence, and post-retention cleanup |
The generated beta release report is the authority for the exact versions, row counts, scenarios, hashes, and PASS status of a particular candidate. This is bounded interoperability evidence, not a claim of compatibility with every version, module, configuration, transport, codec, or SIP extension.
Developer-preview products document their own supported scope and gaps in their crate READMEs. A published crate or Cargo feature is evidence of availability, not a blanket production-readiness statement.
Implemented WebRTC, QUIC/WebTransport/WebSocket, MoQ, AI-provider, and extension capabilities are described above rather than presented as future work. Remaining major items include:
- SIP-over-QUIC and RTP-over-QUIC (RoQ) transport profiles.
- Integrated multi-party SFU/MCU products beyond the existing media primitives.
- Production graduation of AAuth as its standards work and deployment evidence mature.
- Deeper AI participants with multi-agent orchestration beyond today's pluggable provider harness.
- Additional qualification, compatibility guarantees, and release gates for the developer-preview products.
Detailed engineering gaps are tracked in docs/GAP_PLAN.md.
- One Rust stack: signaling, media, orchestration, transport adapters, and deployment integrations share one type and event model.
- Use only what you need: ship the release-gated SIP product alone or opt into cross-transport and extension crates.
- Bridge without protocol glue: route conversations between SIP, WebRTC, UCTP, Amazon Connect, and media-graph consumers.
- Evidence-aware documentation: shipped capabilities are visible without collapsing availability, API stability, standards compliance, and production qualification into one label.
git clone https://github.com/eisenzopf/rvoip.git
cd rvoip
# Build the default workspace members
cargo build
# Run a working SIP call
cargo run -p rvoip-sip --example endpoint_local_call
# Run the workspace test suite
scripts/test_all.shReview the relevant product README and evidence before deployment. Anything outside a stated qualification boundary remains the application's responsibility to validate in its own topology.
- Bugs: open an issue with reproduction steps.
- Feature requests: use discussions or issues and describe the target product and compatibility expectations.
- Pull requests: workspace-wide tests run through
scripts/test_all.sh.
Licensed under the MIT License.
Built in Rust · Facade API · SIP API · Examples · Issues · Discussions