Skip to content
@webrtc-rs

WebRTC.rs

Async-friendly and Sans-IO WebRTC and SFU in Rust

WebRTC.rs

Async-friendly and Sans-I/O WebRTC and SFU in Rust

🌐 Website · 📝 Blog · 📞 P2P Demo · 🎥 SFU Demo · 🎙 Discord


We build the full WebRTC network/protocol ecosystem in Rust — from low-level RTC protocols up to a browser-ready SFU, signaling server, and streaming ingest/egress. Everything is dual-licensed MIT / Apache-2.0.

Our cores are Sans-I/O: pure state machines with no sockets, no threads, and no clock of their own. The caller owns all I/O. That buys deterministic tests without a network, an async layer that isn't welded to one runtime, and — as it turns out — a media server built from the very same trait.

Projects

  • sansio — the small sansio::Protocol trait everything else is written against.
  • rtc — the Sans-I/O WebRTC core: ICE · STUN · TURN · mDNS · DTLS · SCTP · DataChannel · SRTP · RTP/RTCP · SDP.
  • webrtc — the async, runtime-agnostic PeerConnection API on top of rtc.
  • sfu — a Selective Forwarding Unit media server for group calls on top of rtc, live at sfu.rs.
  • apprtc — signaling server and reference web app; P2P is live at appr.tc, and SFU signaling is next. 🚧
  • whip — WebRTC-HTTP Ingestion Protocol, for pushing streams into the stack. 🚧
  • whep — WebRTC-HTTP Egress Protocol, for pulling streams out of it. 🚧

🚧 = in progress. Everything else is published on crates.io:

WebRTC AppRTC SFU

RTC
Media Interceptor DataChannel
RTP RTCP SRTP SCTP
DTLS
mDNS STUN TURN ICE
SDP Shared SansIO

Work with us

Contributors and pull requests are always welcome, and there is plenty that is well-scoped and open — simulcast, publish/subscribe, and congestion control in sfu, the WHIP/WHEP crates, plus interop and performance work everywhere. Sans-I/O means you can usually test your change without a network. Come say hi on Discord.


Built with 💖 and supported by our sponsors:

GitHub Sponsors github.com/sponsors/webrtc-rs  ·  Open Collective opencollective.com/webrtc-rs  ·  Patreon patreon.com/WebRTCrs

Pinned Loading

  1. webrtc webrtc Public

    Async-friendly WebRTC implementation in Rust

    Rust 5.1k 491

  2. apprtc apprtc Public

    AppRTC P2P/SFU Signaling Server https://appr.tc

    JavaScript 1 2

  3. rtc rtc Public

    Sans-IO WebRTC implementation in Rust

    Rust 144 38

  4. sfu sfu Public

    Sans-IO SFU implementation in Rust https://sfu.rs/

    Rust 70 12

Repositories

Showing 9 of 9 repositories

Sponsors

  • @falcucci
  • @AdrianEddy
  • @nazar-pc

Top languages

Loading…

Most used topics

Loading…