Production-grade WebRTC infrastructure, multi-tenant by design, deployed on your terms. Spin up isolated rooms, mint per-user tokens, and ship video in your product before the week is out.
Trusted by engineering teams shipping mission-critical video
A single docker-compose stack ships you a hardened SFU, control plane, automatic TLS, and per-tenant isolation. Or let us run it. Either way, your media never leaves your perimeter.
Adaptive bitrate, simulcast, dynacast, and TCP fallback baked in. Performance you would have spent six months building yourself.
Every tenant gets isolated rooms, their own API key pair, and per-customer quotas — enforced at the control plane, not as an afterthought.
Mint scoped tokens for every end user with publish, subscribe, and data-channel grants. Expire them in seconds; rotate secrets without downtime.
We route every participant to their nearest media node. End users in São Paulo never share a hop with the ones in Singapore.
Caddy handles certificates. Docker handles processes. You handle product. Most teams are live within twenty minutes of clone.
Audit-ready logs, signed webhooks, encrypted media at every hop. Self-host on your own VPC for full data residency control.
Composite or per-track egress to S3, GCS, or your bucket. Optional, opt-in, and never on the hot path of your call.
Real-time hooks for participant joins, leaves, recordings, and bandwidth — verified with HMAC, retried on failure, never lost.
Per-call latency, jitter, packet loss, and bandwidth — streamed to your dashboard, your Datadog, or your engineer on-call.
Stop pretending video infrastructure is a rite of passage. Our REST API does what good APIs should — gets out of the way.
# 1. Create a tenant (you, the operator) curl -X POST https://api.golive.video/admin/tenants \ -H "Authorization: Bearer $ADMIN_TOKEN" \ -d '{"name": "Acme", "max_rooms": 50}' # 2. Tenant creates a room curl -u "$KEY:$SECRET" \ -X POST https://api.golive.video/v1/rooms \ -d '{"name": "team-standup"}' # 3. Mint a token for an end user curl -u "$KEY:$SECRET" \ -X POST https://api.golive.video/v1/rooms/team-standup/tokens \ -d '{"identity": "user-123", "ttl_seconds": 3600}' # Done. Hand the token to your LiveKit client SDK.
import { GoLive } from '@golive/sdk'; const client = new GoLive({ apiKey: process.env.GOLIVE_KEY, apiSecret: process.env.GOLIVE_SECRET, }); // Create a room within your tenant quota await client.rooms.create({ name: 'team-standup', maxParticipants: 25, }); // Mint a short-lived token for the end user const { token, wsUrl } = await client.rooms.issueToken('team-standup', { identity: 'user-123', name: 'Jane Doe', ttlSeconds: 3600, });
from golive import Client client = Client( api_key=os.environ["GOLIVE_KEY"], api_secret=os.environ["GOLIVE_SECRET"], ) # Create a room client.rooms.create(name="team-standup", max_participants=25) # Mint a short-lived token for an end user token = client.rooms.issue_token( room="team-standup", identity="user-123", name="Jane Doe", ttl_seconds=3600, )
Web · iOS · Android · Native
FastAPI · tenants · tokens
Sub-100ms · simulcast · dynacast
Every plan includes the full platform — SDKs, recording, observability. You only scale what your business scales with you: minutes.
Spin up a tenant in under a minute. Mint your first token in under five. Talk to a human if any of that is too slow.