Help & Tutorials

Everything you need to know about LiveKit and this dashboard.

Quick Start

Get up and running in 5 steps.

Step 1

Check the Dashboard

The main dashboard shows you an overview of your LiveKit server: active rooms, participants, and ingress streams. If the sidebar shows "LiveKit: Online", you're connected.

Step 2

Create a Room

Go to Rooms and click "Create Room". Give it a name (e.g., "my-room"). Rooms are where participants meet — they're created on-demand and disappear when empty.

Step 3

Generate a Token

Go to Tokens, enter your room name and a participant identity (e.g., "user-01"), then click Generate. This JWT token is what clients use to connect.

Step 4

Test with LiveKit Meet

After generating a token, click "Open in LiveKit Meet" to join the room in your browser. You'll see your camera and can test audio/video in real time.

Step 5

Set Up Ingress (Optional)

Ingress lets you bring in external streams (RTMP from OBS, WHIP from browsers). Go to Ingress to create an ingress endpoint and start streaming into a room.

Pro tip: You can test everything without any external clients. Generate a token and use the "Open in LiveKit Meet" link — it works right in your browser.

Key Concepts

Understand the building blocks of LiveKit.

Room

A virtual space where participants meet. Rooms are created on-demand and automatically close when the last participant leaves (unless configured to stay open). Each room has a unique name.

Participant

Anyone connected to a room. Each participant has an identity (like a username) and can publish/subscribe to audio, video, and data tracks.

Token

A JWT (JSON Web Token) that authenticates a participant. Contains the room name, identity, and permissions (can publish, can subscribe). Tokens expire after a set time (TTL).

Track

A stream of media — audio from a microphone, video from a camera, or a screen share. Participants publish tracks and subscribe to tracks from others.

Ingress

A way to bring external media into a LiveKit room. Supports RTMP (from OBS, streaming software) and WHIP (browser-based). The ingress converts the stream into LiveKit tracks.

Egress

The opposite of ingress — exports media out of LiveKit. Can record rooms to files, stream to platforms like YouTube/Twitch, or capture individual tracks.

Step-by-Step Guides

Detailed walkthroughs for common tasks.

Test a Video Call (End to End)

The fastest way to verify your LiveKit setup is working.

  1. Go to Rooms and create a room called test-room
  2. Go to Tokens and generate a token for test-room with identity user-1
  3. Click "Open in LiveKit Meet" — allow camera/mic access
  4. Open a second browser tab, generate another token with identity user-2
  5. Open that token in LiveKit Meet too — you should see both participants
  6. Check the Rooms page — the room should show 2 participants

Tip: Use an incognito window for the second participant to avoid session conflicts.

Stream from OBS via RTMP

Send your OBS output into a LiveKit room.

  1. Go to Ingress and click "Create Ingress"
  2. Choose RTMP as the input type
  3. Enter a name, room name, and participant identity for the stream
  4. Copy the RTMP URL and Stream Key from the created ingress
  5. In OBS: Settings → Stream → Service: Custom
  6. Paste the RTMP URL as Server and Stream Key as Stream Key
  7. Click "Start Streaming" in OBS
  8. Your OBS output now appears as a participant in the LiveKit room

Tip: RTMP ingress runs on port 1935. Make sure this port is open in your firewall.

Generate Tokens for Your Application

How to integrate LiveKit tokens into your own app.

The Token Generator on this dashboard is great for testing, but in production your app server should generate tokens. Here's the pattern:

  1. Install the LiveKit Server SDK for your language (Node.js, Python, Go, Ruby, etc.)
  2. Use your API Key and API Secret to create an AccessToken
  3. Set the participant identity, room name, and permissions
  4. Sign the token and return it to your client
  5. The client uses this token to connect via the LiveKit Client SDK

Never expose your API Secret to the client. Token generation must happen server-side.

Understanding Room Details

What you see when you click on a room.

  • Room name: The unique identifier for the room
  • Participants: List of everyone currently in the room with their identity
  • Duration: How long the room has been active
  • Created: When the room was first created
  • Metadata: Any custom data attached to the room (JSON format)

Rooms auto-delete when empty (unless configured otherwise). The participant list updates in real-time.

Feature Guide

What every section of the dashboard can do.

Dashboard Overview
  • Active rooms count — See how many rooms currently have participants
  • Participant count — Total participants across all rooms
  • Ingress status — Number of active and configured ingress streams
  • Quick actions — Shortcuts to create rooms and generate tokens
  • Server health — Real-time LiveKit connection status in the sidebar
Rooms
  • List all rooms — See every room on the server with participant counts
  • Create rooms — Create rooms with custom names, max participants, and metadata
  • Room details — Click a room to see participants, tracks, and connection info
  • Delete rooms — Remove rooms and disconnect all participants
Ingress Management
  • RTMP ingress — Create RTMP endpoints for OBS and streaming software
  • WHIP ingress — Create WHIP endpoints for browser-based streaming
  • Stream URLs — Get the RTMP/WHIP URL and stream key for each ingress
  • Delete ingress — Remove ingress endpoints when no longer needed
Token Generator
  • Custom identity — Set the participant name/identity embedded in the token
  • TTL options — Choose token lifetime from 1 hour to 30 days
  • Permission control — Toggle publish, subscribe, and data publishing permissions
  • Token inspection — View the decoded JWT payload to verify contents
  • LiveKit Meet link — One-click link to test your token in a real video call
Security
  • SSO via Authentik — Dashboard is protected by Authentik forward auth (auth.spacemusic.tv)
  • Group-based access — Access controlled via spacemusic-admins, spacemusic-studio, and spacemusic-viewers groups
  • API key/secret — All LiveKit API calls use your server's API key and secret
  • TLS encryption — All traffic is encrypted via HTTPS (Let's Encrypt certificates)

Frequently Asked Questions

20 answers to common questions.

About

SpaceMusic LiveKit Dashboard

A management interface for our self-hosted LiveKit server, built with SvelteKit and deployed via /dev/push.

Jan Henrik Hansen

Idea & Direction

Armin Seltz

Design & Execution

Claude Opus 4.6

Code