Install LiveKit CLI
brew install livekit-cli
lk
is LiveKit's suite of CLI utilities. It lets you conveniently access server APIs, create tokens, and generate test traffic all from your command line. For more details, refer to our docs in the livekit-cli
GitHub repo.
Authenticate with Cloud (optional)
For LiveKit Cloud users, you can authenticate the CLI with your Cloud project to create an API key and secret. This allows you to use the CLI without manually providing credentials each time.
lk cloud auth
Then, follow instructions and log in from a browser.
Generate access token
A participant creating or joining a LiveKit room needs an access token to do so. For now, let’s generate one via CLI:
lk token create \--api-key devkey --api-secret secret \--join --room test_room --identity test_user \--valid-for 24h
Make sure you're running LiveKit server locally in dev mode.
Alternatively, you can generate tokens from your project's dashboard.
Test with a LiveKit client
If you're testing a LiveKit Cloud instance, you can find your Project URL
(it starts with wss://
) in the project settings.
Using our example app, enter the token you previously generated to connect to your LiveKit instance, by selecting the custom connection tab. Once connected, your microphone and camera are being streamed in realtime to your new LiveKit instance (and any other participant who connects to the same room)!
If interested, here's the full source for this example app.
Simulating another publisher
One way to test a multi-user session is by generating a second token (ensure --identity
is unique), opening our example app in another browser tab and connecting to the same room.
Another way is to use the CLI as a simulated participant and publish a prerecorded video to the room. Here's how:
lk room join \--url ws://localhost:7880 \--api-key devkey --api-secret secret \--publish-demo --identity bot_user \my_first_room
This command publishes a looped demo video to my-first-room
. Due to how the file was encoded, expect a short delay before your browser has sufficient data to render frames.