finds.dev← search

// the find

algesten/str0m

★ 566 · Rust · MIT · updated Jun 2026

A Sans I/O WebRTC implementation in Rust.

str0m is a Sans I/O WebRTC library for Rust — no threads, no async runtime, no internal sockets. You feed it packets and timeouts; it tells you what to send and when. Designed primarily for server-side SFU use cases where you want full control over I/O scheduling.

The Sans I/O design is the real win here: you can drive an Rtc instance faster than realtime in tests, integrate with any async runtime without glue code, and share one UDP socket across hundreds of peers without fighting the library. The single-mutation invariant is a clear, enforceable contract that prevents the subtle timing bugs that plague most WebRTC implementations. Multiple pluggable crypto backends (aws-lc-rs, RustCrypto, OpenSSL, Apple CryptoKit, Windows SChannel) is unusually thorough — most projects pick one and call it done. The test suite is genuinely good: fuzz targets for packet parsing, pcap-driven codec tests, and integration tests that simulate real network conditions including BWE scenarios.

No adaptive jitter buffer — this is a real gap if you're building anything that handles mixed-quality peers or mobile clients; you'll have to implement your own or accept degraded audio. TURN is entirely out of scope, which means server-reflexive candidates only; anything behind a symmetric NAT will silently fail without you building the TURN layer yourself. The wallclock estimation problem for multi-party audio is documented but unsolved — the README admits a production SFU needs 'even more sophisticated strategy' and leaves you to figure that out. 566 stars is thin for infrastructure this deep in the stack; you're betting on a small community and a single primary maintainer (Lookback), which is a real adoption risk compared to Pion or libwebrtc.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →