the hardcoded 400kb/s was a stability compromise and the previous knob just moved the guesswork to operators: they had to hand-measure each sfu's policer knee by ramping until stalls. replace both with a delay-based aimd controller that finds the knee at runtime. the sfu policer queues before it drops, so kcp's smoothed rtt inflates ahead of the throughput collapse from #95/#107. the pacer folds one srtt sample per writer tick: probe the rate up additively while delay sits near the path baseline, back off multiplicatively once it inflates. it settles just under the per-sfu knee on its own, both on the client->server writerLoop and each server->client peer pump. vp8.max_bytes_per_sec is now just the probe ceiling (default 1mb/s); a fresh session still starts from the old 400kb/s operating point so a healthy path only ramps up. no per-service hand-tuning left. refs #107
olcRTC
olcRTC (OpenLibreCommunity RTC) is an encrypted TCP-over-WebRTC tunnel. Traffic is disguised as an ordinary video call on allowed services (Jitsi, Yandex Telemost, WbStream). Inside there is XChaCha20-Poly1305 encryption and smux multiplexing over WebRTC data/video channels.
Status: Beta
app -> SOCKS5 -> olcrtc cnc -> WebRTC/SFU service -> olcrtc srv -> internet
Important: make sure the video call service you need is on the allow lists and works in your network. If not, use another one.
Features
- Providers:
jitsi,telemost,wbstream - Transports:
datachannel,vp8channel,seichannel,videochannel - Platforms: Linux, macOS, Windows, Android (gomobile), embeddable Go library
Recommended start: jitsi + datachannel.
Quick start
You need Go 1.26+ and mage.
go install github.com/magefile/mage@latest
git clone https://github.com/openlibrecommunity/olcrtc --recurse-submodules
cd olcrtc
mage build
Generate a shared key (the same on server and client):
openssl rand -hex 32
Run the server and the client with YAML configs:
./build/olcrtc-linux-amd64 server.yaml
./build/olcrtc-linux-amd64 client.yaml
The client starts a local SOCKS5 on 127.0.0.1:8808. Check:
curl --socks5-hostname 127.0.0.1:8808 https://icanhazip.com
Full instructions and config examples are in docs/fast.md and docs/configuration.md.
Documentation
| Document | Contents |
|---|---|
| about.md | architecture, providers, transports, public API |
| fast.md | quick start for newcomers |
| manual.md | manual build |
| configuration.md | YAML setup |
| settings.md | compatibility matrix |
| uri.md | client URI format |
| sub.md | subscription format |
Build
mage build # current platform
mage cross # cross-compilation
mage test # tests
mage lint # golangci-lint
mage mobile # gomobile bindings (Android)
Community
- Telegram: @openlibrecommunity
- Issues: github.com/openlibrecommunity/olcrtc/issues
- Community UI client: alananisimov/olcbox
License
WTFPL
Telegram: zarazaex
Email: zarazaex@tuta.io
Site: zarazaex.xyz
