nice-bear-83533
03/18/2026, 12:51 PMtall-airline-16756
03/18/2026, 12:51 PMtall-airline-16756
03/18/2026, 12:51 PMlk CLI can return historical/analytical session data (e.g., sessions in a date range) and recordings.
Short answer:
• The lk CLI does not provide a way to query historical session data filtered by a time period.
• The CLI also does not directly return recording files. It can list egress (recording) sessions, but you retrieve actual recording files from the configured storage (S3/GCS/Azure) or via APIs/webhooks.
What the lk CLI can do now:
• lk room list — lists active rooms.
• lk participant list — lists participants in a specified room.
• lk egress list — lists active and completed egress (recording) sessions.
• lk egress stop — stop an active egress.
• lk agent status / lk agent logs — view agent status and logs that may include egress activity.
How to get historical/analytical data and recordings instead:
1. Use egress events and storage
◦ Use lk egress list to find completed egress sessions, then download the recording from your configured storage (S3/GCS/Azure).
◦ If an upload failed, use the manifestLocation from the egress_ended webhook to retrieve backups.
1. Capture metadata via webhooks
◦ Subscribe to events (for example, egress_ended) and store relevant metadata (timestamps, room ID, participants, manifest/location) in your own analytics store. This lets you query sessions by date range later.
1. Instrument your agent/app
◦ Add logging or a small analytics service in your agent to record session start/end times and other metadata to a database you can query by time range.
1. Use the LiveKit Cloud dashboard (if applicable)
◦ The Cloud dashboard provides observability for active usage; for historical queries you’ll still need to persist events or recordings outside the CLI.
If you’d like, I can help with next steps — for example:
• Example webhook events to capture for analytics (which fields to store).
• A short script to list egress sessions and download completed recordings from S3/GCS.
• A suggested schema for storing session metadata so you can query by date range.
Which of those would you like to try first?
Sources: Agents (Python) | livekit/livekit_composite | DeepWiki | Server startup modes | LiveKit Documentation, with interactive elementsnice-bear-83533
03/18/2026, 12:54 PMtall-airline-16756
03/18/2026, 12:54 PMlk egress list returns nothing. I can help figure out why and get you access to recordings or session metadata.
A few quick diagnostic questions to narrow this down:
1. Have you started any egress/recording jobs for the project you’re querying? (For example, did you call startEgress from an agent or your app?)
2. Are you running lk against the correct project / environment and authenticated as the same account that started the egress? (Which lk context or project ID are you using?)
3. Do you see any relevant webhook events (like egress_started / egress_ended) in your webhook receiver or logs?
4. How is egress configured for recordings in your setup — are you using cloud storage (S3/GCS/Azure) or local/agent uploads?
5. If you started a recording recently, did it complete successfully or fail? Any errors in lk agent logs or your agent application logs?
While you gather that, here are immediate checks and steps you can run now:
• Confirm project/context: run the lk command with the same project/context you used to start egress.
• Check agent logs: lk agent logs to look for egress start/stop messages or upload errors.
• Verify webhooks: if you have webhooks enabled, check for `egress_started`/`egress_ended` events and inspect manifestLocation / output locations.
• Inspect storage: if egress is configured to upload to S3/GCS/Azure, check that bucket/container for recent files or manifests.
• If you triggered egress from an app, review that app’s logs for the startEgress request and its response (it will include an egress ID).
Tell me the answers to 1–4 (or paste any error snippets you see), and I’ll suggest the precise next steps — for example, commands to find egress IDs, how to retrieve files from storage, or how to re-run a failed upload.
, with interactive elementsnice-bear-83533
03/18/2026, 1:11 PMtall-airline-16756
03/18/2026, 1:11 PMlk egress list is empty and you can’t retrieve that data programmatically. I’ll clarify what’s happening and what you can do next.
Short answer
• The dashboard’s session/observability view (audio playback, transcripts, traces, logs) is part of Agent Observability and is visible in the Cloud UI.
• That dashboard data is not exposed programmatically via the lk CLI or a public API without using egress.
• To get recordings or session artifacts programmatically, you must export them with Egress (which uploads to your configured storage) or capture the data yourself via webhooks/agent logging.
Why you see it in the dashboard but not via lk
• The Cloud dashboard stores observability data for playback and debugging, but there is no CLI/API that directly returns that stored observability/recording data unless you export it with Egress.
• lk egress list only shows egress jobs. If no egress jobs were started, it will be empty even if the dashboard shows session data.
What you can do now (options)
• Use Egress to export recordings and artifacts:
◦ Start egress (e.g., room/track composite) in your app or agent so recordings are written to S3/GCS/Azure or another destination.
◦ Then lk egress list will show the egress sessions and you can download files from your storage.
• Use webhooks to capture metadata and manifests:
◦ Subscribe to egress webhook events (egress_started / egress_ended) and store the metadata (egress ID, room, timestamps, manifestLocation) in your own database for later programmatic access.
• Instrument your agent/app to persist session metadata:
◦ Log session start/end, participant lists, and references to recording locations to your analytics store so you can query by date range.
• Use backup egress manifest if uploads fail:
◦ If a cloud upload fails and backup egress is enabled, you can retrieve backup files via the manifestLocation provided in the egress_ended webhook.
If you want, I can help with any of these next steps:
• Walk you through starting an egress command or API call and setting up S3/GCS destination.
• Provide a short script to list egress jobs and download completed recordings from S3/GCS.
• Suggest a minimal webhook schema to capture the fields you’ll want for time-range queries.
• Troubleshoot why lk egress list is empty (if you think you did start egress): tell me which project/context you’re using and whether you started egress from an agent or from your app.
Which of these would you like to do first?
Sources: Streamline troubleshooting with Agent Observability | LiveKit | LiveKit Agent Observability | Debug and optimize voice agents | LiveKit | Universal Egress | LiveKit | Backup Egress Recordings, with interactive elementsnice-bear-83533
03/18/2026, 1:14 PMtall-airline-16756
03/18/2026, 1:14 PMlk records code you found and whether that means a lk records command is on the roadmap.
Short answer:
• I don’t have any confirmed information that lk records is an announced or guaranteed roadmap item. Experimental or disabled code in the CLI repo shows that the team has explored the idea, but it does not confirm an official release plan or timeline.
What that means for you now:
• The only supported, programmatic path to export recordings and session artifacts is Egress (start egress, upload to S3/GCS/Azure, or use backup manifests). The lk CLI currently exposes egress-related commands (lk egress list, lk egress stop) but no stable lk records command to fetch historical/dashboard-held recordings directly.
• The Cloud dashboard still lets you view and download recordings/transcripts manually, but that data is not accessible programmatically from LiveKit servers without using egress.
If you’d like, I can help with any of the following:
• Walk through using Egress (API or agent) to export recordings to storage and then a script to download them.
• Draft a simple webhook + storage workflow so you capture everything you need for time-range queries going forward.
• Look at the experimental CLI code you found and explain what it appears to do (if you can paste the snippet or point me to the file).
Which would you prefer?
, with interactive elementsnice-bear-83533
03/18/2026, 1:14 PMtall-airline-16756
03/18/2026, 1:15 PMegress_ended webhook includes a manifestLocation you can use to retrieve temporary copies.
If you want me to dig into the PR you saw
• Paste the PR link or the key code snippets and I’ll explain what it appears to do, which parts are experimental, and whether it looks like it’s merely UI-facing or actually hooks into an API we could rely on.
• Tell me the exact analytics data you want programmatic access to (e.g., full recordings, per-participant audio, transcripts, trace spans, summary metrics). That helps me recommend the simplest supported path (egress vs webhooks vs instrumentation).
Which analytics items do you need to access programmatically, and can you share the PR link or snippets you found? I’ll analyze it and recommend next steps.
, with interactive elementsnice-bear-83533
03/18/2026, 1:16 PMtall-airline-16756
03/18/2026, 1:16 PMlk records command that reads from the same internal observability pipeline the Cloud dashboard uses. That pipeline collects audio, transcripts, traces, and metadata for Agent Observability.
• The presence of an experimental/PR implementation does not mean there is a released, supported CLI/API to fetch dashboard-only data yet. The dashboard’s observability store isn’t exposed as a public programmatic endpoint today.
What the PR appears to do
• It surfaces session/record-like artifacts from the internal observability store so the CLI can show or download them in a developer workflow.
• Because it relies on internal observability infrastructure, it’s marked experimental/disabled in the repo: it’s exploring functionality but is not a guaranteed, supported feature or part of the stable CLI today.
Why you can see analytics in the dashboard but not retrieve them programmatically
• The Cloud UI reads from LiveKit’s internal observability services that store telemetry and synchronized session artifacts for 30 days.
• That internal store is not currently available via public CLI commands or APIs. Programmatic access to the same artifacts requires exporting them with Egress or capturing them yourself (webhooks, agent instrumentation).
Supported ways to get analytics/recordings programmatically today
• Egress: start egress (room/track/room composite) to export recordings/transcripts to your S3/GCS/Azure bucket; then access them via those storage APIs.
• Webhooks: subscribe to egress and session events (egress_started / egress_ended, participant_*), persist metadata (timestamps, room IDs, manifestLocation) to your DB for time-range queries.
• Agent/app instrumentation: log session start/end, participant info, metrics to your analytics backend.
• Backup egress: if uploads fail and backup storage is used, the egress_ended webhook includes a manifestLocation you can use to download backup files.
How I can help next
• If you want, I can review the PR code in detail and explain exactly which internal endpoints it calls and which fields it extracts (paste any snippets or point to specific files).
• I can recommend a minimal export/analytics workflow (webhook schema + storage layout) so you can reliably query sessions by date range.
• I can provide a short script to:
a. Start egress for new sessions, and
b. List egress jobs and download completed recordings from S3/GCS.
Which do you want me to do next — review the PR code, help set up an egress+storage workflow, or draft the webhook/DB schema for historical queries?
Sources: Streamline troubleshooting with Agent Observability | LiveKit | LiveKit Agent Observability | Debug and optimize voice agents | LiveKit | examples/frontdesk | livekit/livekit_composite | DeepWiki | Agents (Python) | livekit/livekit_composite | DeepWiki | Backup Egress Recordings, with interactive elements