Skip to main content

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 (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.
olcRTC is currently in Beta. Always verify that the video call service you intend to use is accessible in your network before deploying.
app → SOCKS5 → olcrtc cnc → WebRTC/SFU service → olcrtc srv → internet

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

Generate a shared encryption key

openssl rand -hex 32
Save this 64-character hex string — both server and client must use the identical key.
2

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:
./script/srv.sh
# — or —
./build/olcrtc-linux-amd64 server.yaml
3

Start the client

On your local machine, run the client script or binary with a matching config:
./script/cnc.sh
# — or —
./build/olcrtc-linux-amd64 client.yaml
4

Route traffic through SOCKS5

Point any app at 127.0.0.1:8808 (default) and verify with:
curl --socks5-hostname 127.0.0.1:8808 https://icanhazip.com
The returned IP should be your server’s address.
The fastest and most reliable setup is Jitsi + datachannel — no registration required, works on any self-hosted or public Jitsi Meet instance. For commercial scenarios, WbStream + vp8channel is a solid alternative.
Check the Compatibility Matrix to pick the right provider and transport for your network.

Build docs developers (and LLMs) love