tauri-plugin-webrtc
WebRTC for Tauri apps on Linux, without CEF. WebKitGTK ships no RTCPeerConnection. This plugin gives the page one, backed by qrtc, a pure Rust engine with post-quantum key agreement.
Unchanged app codeA standards-shaped JS shim installs the W3C classes before page scripts run. matrix-js-sdk, LiveKit and plain WebRTC code work as they are.
No system packagesNo GStreamer WebRTC elements, no libwebrtc. Nothing beyond what WebKitGTK already needs.
Post-quantum by defaultDTLS 1.3 and TURN over TLS with X25519MLKEM768 whenever the other side supports it.
Built for Matrix1:1 calls through matrix-js-sdk, and Element Call group calls on LiveKit with end-to-end encryption.
Three steps
# src-tauri/Cargo.toml
[target.'cfg(target_os = "linux")'.dependencies]
tauri-plugin-webrtc = { git = "https://github.com/crabnebula-dev/tauri-plugin-webrtc", branch = "main" }
// src-tauri/src/lib.rs
#[cfg(target_os = "linux")]
{
builder = builder.plugin(tauri_plugin_webrtc::init());
}
// src-tauri/capabilities/linux.json
{
"identifier": "linux-capability",
"platforms": ["linux"],
"windows": ["main"],
"permissions": ["webrtc:default"]
}
That is all. new RTCPeerConnection() in the page now works. Setup covers the options.
What the page gets
| Area | Coverage |
|---|---|
| Peer connections | Offers, answers, renegotiation, rollback and perfect negotiation, restartIce(), getStats() |
| ICE | Host, mDNS .local, STUN, TURN over UDP, TCP and TLS, relay-only policy |
| Data channels | Reliable and unreliable, ordered and unordered, negotiated ids, bufferedAmount events |
| Media | Opus with echo cancellation, noise suppression and AGC; VP8 and H.264 through WebCodecs; screen share; DTMF |
| Transforms | RTCRtpScriptTransform, as LiveKit end-to-end encryption uses it |
Web APIs lists every class and its limits.
Where to go next
- Setup: dependency, features, builder options, permissions.
- Architecture: the shim, IPC, the engine, and how media flows.
- Web APIs: what the shim implements, class by class.
- Post-quantum: the
postQuantumoption and what the other side needs. - CSP and frames: behaviour under a strict Content Security Policy and in iframes.
- Matrix clients: the Tchap integration as a worked example.
- Testing: the end-to-end suites and how to run them.
- Security and compliance: licence, CRA status, supply chain.