Wavry is built on the premise that latency is a primary feature, not a secondary metric. While existing solutions provide high-quality video, Wavry focuses on the mathematical optimization of the entire pipeline—from capture to presentation.
Wavry is a modular system composed of several specialized crates.
graph TD
Client["Client (macOS/Linux/Windows)"]
Host["Host (Windows/Linux/macOS)"]
Gateway[Wavry Gateway]
Relay[Blind Relay]
STUN[STUN Server]
Client -- "1. Auth & Signal" --> Gateway
Host -- "1. Register & Signal" --> Gateway
Client -. "2. Discovery" .-> STUN
Host -. "2. Discovery" .-> STUN
Client -- "3. P2P Media (RIFT)" --> Host
Host -- "3. P2P Media (RIFT)" --> Client
Client -. "Fallback" .-> Relay
Relay -. "Fallback" .-> Host
| Crate | Layer | Description |
|---|---|---|
rift-core |
Protocol | Implementation of the RIFT wire format, DELTA congestion control, and FEC. |
rift-crypto |
Security | Noise_XX handshake, ChaCha20-Poly1305 AEAD, and identity management. |
wavry-media |
Hardware | Hardware-accelerated capture and encoding (WGC, Media Foundation, Metal). Supports Multi-Monitor capture. |
wavry-client |
Session | Client-side session management, signaling, and RTT tracking. Includes dynamic monitor discovery. |
wavry-desktop |
Integration | Tauri-based host and client application for Windows and Linux. |
wavry-gateway |
Signaling | Real-time signaling gateway for peer coordination and SDP exchange. Includes admin dashboard. |
wavry-relay |
Transport | Blind UDP forwarder for encrypted traffic. Supports custom bitrate limits (min 10Mbps). |
wavry-web |
Web | WebTransport/WebRTC hybrid control plane with unidirectional stream support for real-time frame transmission. |
Performance Optimization:
Input & Control:
Security & Admin:
Web & Protocol:
Documentation:
See CHANGELOG.md for full release notes.
Remote Interactive Frame Transport (RIFT) is a UDP-based protocol designed for high-performance interactive streaming.
The Differential Latency Estimation and Tuning Algorithm (DELTA) is a delay-oriented controller:
RIFT employs XOR-based parity groups to recover from packet loss:
protobuf-compiler, pkg-configgit clone https://github.com/bybrooklyn/wavry.git
cd wavry
cargo build --release --workspace
# Generate development certificates for WebTransport
./scripts/gen-wt-cert.sh
# Run with WebTransport runtime enabled
WAVRY_ENABLE_INSECURE_WEBTRANSPORT_RUNTIME=1 \
WAVRY_WT_CERT=certs/wt-cert.pem \
WAVRY_WT_KEY=certs/wt-key.pem \
cargo run --bin wavry-gateway --features webtransport-runtime
cargo run --bin wavry-relay -- --master-url http://localhost:8080
# Run with WebRTC support for browser clients
WAVRY_ENABLE_WEBRTC=true \
WAVRY_GATEWAY_URL=ws://127.0.0.1:3000/ws \
cargo run --bin wavry-server
cd apps/web-reference
bun install
bun run dev
Open http://localhost:5173 in a WebTransport-compatible browser (Chrome/Edge 97+).
./scripts/linux-display-smoke.sh
See docs/WAVRY_TESTING.md for the manual Linux monitor-selection validation matrix.
One-command build:
./scripts/dev-android.sh
This script:
gradle if present, otherwise auto-downloads a local Gradle.:app:assembleDebug.FFI-only mode:
./scripts/dev-android.sh --ffi-only
See apps/android/README.md for details.
Set up the admin panel for user and session management:
# Generate a secure admin token (32+ characters)
ADMIN_TOKEN=$(openssl rand -hex 32)
echo "Admin Token: $ADMIN_TOKEN"
# Start gateway with admin panel enabled
ADMIN_PANEL_TOKEN=$ADMIN_TOKEN \
cargo run --bin wavry-gateway --release
Then access:
http://localhost:3000/admin (enter token in form)GET /admin/api/overview - User/session/ban statisticsPOST /admin/api/sessions/revoke - Revoke user sessionPOST /admin/api/ban - Ban user (temporary or permanent)POST /admin/api/unban - Remove user banAuthentication: Send Authorization: Bearer <token> or x-admin-token: <token> header.
See docs/ADMIN_DASHBOARD.md for detailed API reference.
Technical contributions are welcome. Please ensure any changes to the protocol are documented and accompanied by relevant unit tests.
Open Source (AGPL-3.0):
Commercial License:
COMMERCIAL.md for details.Hosted Auth / Matchmaking / Relay (Official Service):
See TERMS.md for the minimal hosted service policy.
Wavry is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE for details.
Web clients are an on-ramp and compatibility layer. They do not speak RIFT directly.
Native clients continue using full RIFT for maximum performance.
See docs/WEB_CLIENT.md for message formats and connection flow.