* feat: Livekit bare no recording nor pipeline * feat: full livekit pipeline * fix: caddy hatchet with livekit * fix: caddy livekit * fix: hatchet tls * fix: agg to webm for no padding * fix: reflector user id on participants and duration fix * fix: better docs and internal review fixes * fix: remove video files livekit
2.8 KiB
Migrating from Daily.co to LiveKit
This guide covers running LiveKit alongside Daily.co or fully replacing it.
Both Platforms Run Simultaneously
LiveKit and Daily.co coexist — the platform is selected per room. You don't need to migrate all rooms at once.
- Existing Daily rooms continue to work as-is
- New rooms can use LiveKit
- Each room's
platformfield determines which video service is used - Transcripts, topics, summaries work identically regardless of platform
Step 1: Enable LiveKit
Add --livekit to your setup command:
# If currently running:
./scripts/setup-selfhosted.sh --gpu --ollama-gpu --garage --caddy
# Add --livekit:
./scripts/setup-selfhosted.sh --gpu --ollama-gpu --livekit --garage --caddy
This starts livekit-server + livekit-egress containers alongside your existing stack.
Step 2: Set Default Platform
The setup script automatically sets DEFAULT_VIDEO_PLATFORM=livekit in server/.env. This means new rooms default to LiveKit. Existing rooms keep their current platform.
To keep Daily as the default for new rooms:
# In server/.env, change:
DEFAULT_VIDEO_PLATFORM=daily
Step 3: Switch Individual Rooms
In the Rooms admin page, edit any room and change the Platform dropdown from "Daily" to "LiveKit". The next meeting in that room will use LiveKit.
Previously recorded Daily transcripts for that room are unaffected.
Step 4: (Optional) Remove Daily.co
Once all rooms use LiveKit and you no longer need Daily.co:
- Remove
DAILY_API_KEYand related Daily settings fromserver/.env - Re-run the setup script — it won't activate the
dailycoprofile - Hatchet workers are shared between Daily and LiveKit, so they continue running
Daily-specific services that stop:
hatchet-worker-cpuwithdailycoprofile (but continues iflivekitprofile is active)- Daily webhook polling tasks (
poll_daily_recordings, etc.)
What Changes for Users
| Feature | Daily.co | LiveKit |
|---|---|---|
| Video/audio quality | Daily.co SFU | LiveKit SFU (comparable) |
| Pre-join screen | Daily's built-in iframe | LiveKit PreJoin component (name + device selection) |
| Recording | Starts via REST API from frontend | Auto Track Egress (automatic, no user action) |
| Multitrack audio | Per-participant WebM tracks | Per-participant OGG tracks |
| Transcript quality | Same pipeline | Same pipeline |
| Self-hosted | No (SaaS only) | Yes (fully self-hosted) |
Database Changes
None required. The platform field on rooms and meetings already supports "livekit". LiveKit recordings use recording IDs prefixed with lk- to distinguish them from Daily recordings.
Rollback
To revert a room back to Daily, just change the Platform dropdown back to "Daily" in the Rooms admin page. No data migration needed.