olcRTC (OpenLibreCommunity RTC) is an encrypted TCP tunnel that routes your traffic through real WebRTC video call infrastructure — Jitsi Meet, Yandex Telemost, or WbStream. To any network observer, the connection looks like an ordinary video call to a permitted service. Inside, your data is protected by XChaCha20-Poly1305 encryption and multiplexed with smux over WebRTC data or video channels.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/openlibrecommunity/olcrtc/llms.txt
Use this file to discover all available pages before exploring further.
olcRTC is currently in Beta. Always verify that the video call service you intend to use is accessible in your network before deploying.
Quick Start (Scripts)
Get a server and client running in minutes using the included Podman scripts — no Go toolchain needed.
Manual Build
Build the native binary from source with Go 1.26+ and mage for full control.
Configuration Reference
Explore every YAML field: providers, transports, liveness, traffic shaping, and failover.
Compatibility Matrix
See which provider + transport combinations are stable, experimental, or unsupported.
Providers & Transports
Understand the difference between Jitsi, Telemost, WbStream, and the four transport modes.
Go Library
Embed olcRTC in your own Go program using pkg/olcrtc and pkg/olcrtc/tunnel.
Android / Mobile
Integrate olcRTC into Android apps via the gomobile API in the mobile package.
URI & Subscriptions
Share connection parameters as compact olcrtc:// URIs or subscription files.
How It Works
olcRTC operates in two paired modes:srv(server) — runs on your VPS or exit node. Joins a WebRTC room, accepts the encrypted smux stream, and opens TCP connections to target addresses on your behalf.cnc(client) — runs on your local machine. Opens a SOCKS5 listener. Any SOCKS5-capable app sends traffic through it, which is tunnelled to the server over WebRTC.
Generate a shared encryption key
Start the server
On your VPS or exit machine, run the server script or build the binary manually and point it at a YAML config: