the pacer (52aea2d) and its per-tick byte budget capped the wire well below the sfu's real ceiling: telemost ran ~10mbit before it landed and 2-3mbit after. it was added to fix the #95 collapse, but that collapse was keyframe starvation (sfu dropped the track with no decodable keyframe after ~40s), fixed separately by forceKeepalive inb20554b. the pacer was treating a symptom that no longer exists. drop perTickBytes and the vp8.max_bytes_per_sec knob, and restore the kcp send window (512->4096) and tick (20ms->5ms) that were shrunk alongside the pacer. control liveness no longer depends on a small data window: ping/pong runs on its own isolated kcp session drained with priority by writerLoop, so the original starvation rationale is gone. batchSample still bounds one sample to defaultMaxPayloadSize. refs #107 #95
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
