Skip to content

Repository files navigation

rvoip — the Rust real-time communications platform

rvoip

Rust-native real-time communications across SIP, WebRTC, QUIC, WebTransport, WebSocket, MoQ, voice AI, and enterprise integrations.

Rust 1.91+ License: MIT rvoip rvoip-sip Facade API SIP API

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.

What ships today

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

Maturity labels

  • 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.

SIP interoperability

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.

Native Vapi WebSocket agents

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.

Choose your entry point

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

Quick start

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_call

The 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:

Capability matrix

SIP application and signaling

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

Media

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

WebRTC, UCTP, MoQ, and integrations

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.

Extensions

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.

Enabling extensions

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.

Architecture

┌───────────────────────────────────────────────────────────────────┐
│ 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.

Workspace crate map

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

Release evidence

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:

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.

SIP interoperability attestation

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.

Roadmap

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.

Why rvoip

  • 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.

Evaluating rvoip

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.sh

Review 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.

Contributing

  • 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.

License

Licensed under the MIT License.


Built in Rust · Facade API · SIP API · Examples · Issues · Discussions

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

156 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages