LiveKit - Open source, distributed video/audio rooms over WebRTC
LiveKit is an open source project that provides scalable, multi-user conferencing over WebRTC. It's designed to give you everything you need to build real time video/audio capabilities in your applications.
- Horizontally scalable WebRTC Selective Forwarding Unit (SFU)
- Modern, full-featured client SDKs for JS, iOS, Android, and Flutter
- Built for production - JWT authentication and server APIs
- Robust networking & connectivity, over UDP & TCP
- Easy to deploy - pure Go & single binary
- Advanced features - speaker detection, simulcast, selective subscription, moderation APIs, and webhooks.
Documentation & Guides
Docs & Guides at: https://docs.livekit.io
Try it live
Head to our playground and give it a spin. Build a Zoom-like conferencing app in under 100 lines of code!
SDKs & Tools
- Go 1.15+ is installed
- GOPATH/bin is in your PATH
git clone https://github.com/livekit/livekit-server cd livekit-server ./bootstrap.sh mage
LiveKit is published to Docker Hub under livekit/livekit-server
Creating API keys
LiveKit utilizes JWT based access tokens for authentication to all of its APIs. Because of this, the server needs a list of valid API keys and secrets to validate the provided tokens. For more, see Access Tokens guide.
Generate API key/secret pairs with:
docker run --rm livekit/livekit-server generate-keys
Store the generate keys in a YAML file like:
Starting the server
In development mode, LiveKit has no external dependencies. You can start LiveKit by passing it the keys it should use
LIVEKIT_KEYS. LiveKit could also use a config file or config environment
LIVEKIT_KEYS="<key>: <secret>" ./bin/livekit-server --dev
docker run --rm \ -p 7880:7880 \ -p 7881:7881 \ -p 7882:7882/udp \ -e LIVEKIT_KEYS="<key>: <secret>" \ livekit/livekit-server \ --dev \ --node-ip=<machine-ip>
When running with docker,
--node-ip needs to be set to your machine's IP address. If the service is to be exposed to
public internet, this should the machine's public IP.
--dev flag turns on log verbosity to make it easier for local debugging/development
Creating a JWT token
To create a join token for clients, livekit-server provides a convenient subcommand to create a development token. This token has an expiration of a month, which is useful for development & testing, but not appropriate for production use.
./bin/livekit-server --key-file <path/to/keyfile> create-join-token --room "myroom" --identity "myidentity"
Enter generated access token and you are connected to a room!
Deploying for production
LiveKit is deployable to any environment that supports docker, including Kubernetes and Amazon ECS.
See deployment docs at https://docs.livekit.io/guides/deploy
We welcome your contributions to make LiveKit better! Please join us on Slack to discuss your ideas and/or submit PRs.
LiveKit server is licensed under Apache License v2.0.