Videyo is a self-hosted video-chat platform: a Rust control plane, a selective-forwarding media server, and a browser SDK you can drop into any web app in an afternoon.
Not a toy demo — a control plane, media plane, and billing pipeline that run on a single server.
Tenants, scoped API keys, and strict isolation. Every room, token, and invoice belongs to exactly one tenant.
A webrtc-rs selective forwarding unit with ICE-lite deployment, TURN fallback, and per-room capacity guards.
TypeScript client with connect, join, publish. No framework lock-in, no mandatory UI.
Per-participant usage rollups, pricing tiers, and monthly draft invoices out of the box.
Rate limiting per API key, room-capacity ceilings with clean 503s, and token revocation in seconds.
Prometheus metrics, a ready-made Grafana dashboard, and structured JSON logs from both services.
Create a room, mint a join token, connect from the browser.
One API call with your tenant key. Rooms enforce per-tenant isolation and platform capacity.
Short-lived ES256 JWTs per participant. Revocable within seconds, no database lookup on the SFU.
The SDK handles signaling, renegotiation, and ICE. You get local and remote streams as DOM events.
# 1 · create a room curl -X POST https://videyo.co.ke/api/v1/rooms \ -H "Authorization: Bearer $API_KEY" \ -d '{"name": "standup", "max_participants": 2}' # 2 · mint a join token curl -X POST https://videyo.co.ke/api/v1/tokens \ -H "Authorization: Bearer $API_KEY" \ -d '{"room_id": "…", "display_name": "Alice"}' // 3 · in the browser const client = new VideoChatClient({ wsUrl, token }); await client.connect(); client.join(roomId); await client.publish(localStream);
Videyo runs entirely on your infrastructure — this very site is served from a single VPS running the same stack you can deploy. No per-minute pricing, no data leaving your network, no vendor roadmap dictating yours.
docker compose up — Postgres, API, SFU, TURN, nginx includedpg_dump is all the backup you need# on a fresh VPS git clone … videyo && cd videyo ./scripts/init-letsencrypt.sh docker compose up -d --build # verify curl https://videyo.co.ke/health