I was wondering if there are any plans to release a self-hostable version of the LiveKit dashboard?
For teams running LiveKit in their own infrastructure, it would be really useful to have a local dashboard for things like project visibility, room/session monitoring, participant debugging, usage insights, and general operational oversight without relying on the hosted cloud dashboard.
Is this something on the roadmap, or is the recommended approach to build custom internal tooling on top of the LiveKit APIs/metrics?
Curious to hear if others would find this useful as well.
Personally I’ve looked into this myself some time ago and I think in this situation its best to build your own custom internal tooling on top of your self hosted livekit infra. Ideally you could build an MCP based UI that could connect to Livekit’s MCP and will give you and your team the ideal observability that you lot are looking for. It’s just an idea tho but what do you think?
When you say “LiveKit’s MCP”, do you mean the current LiveKit docs MCP, or is there/are there plans for an MCP server that can expose runtime/project data from a self-hosted LiveKit deployment?
My understanding is that the current MCP is mainly for docs/code examples/changelogs, not operational access to rooms, participants, SIP state, metrics, logs, agent sessions, etc. So for a self-hosted dashboard I’d still expect most of the work to be around wiring together LiveKit server APIs, Prometheus metrics, logs/traces, and whatever app-level call/session state we persist ourselves.
I like the idea of an MCP layer as an operator assistant on top of that, but I’m a bit cautious about making it the primary observability interface. For debugging production calls, I’d still want deterministic views first: active rooms, participants, SIP/telephony state, agent lifecycle, errors, recordings, transcripts, latency, and resource metrics. Then MCP/AI could help answer questions over that data.
Have you seen any concrete examples of someone building this kind of MCP-backed operational UI for LiveKit? Or are you thinking more conceptually: build our own internal MCP server around the LiveKit APIs and metrics, then connect a UI/agent to that?
You’re welcome Robbe!
Yeah i was suggesting to build your own custom internal MCP Server just so it serves your team the exact way you all want it. Here’s a flowchart example i made for you in Fig Jam.
@Robbe, you’re right to be cautious about leading with MCP for operations. There’s no official livekit-mcp for runtime data today, only the docs MCP, which lines up with what @CWilson said.
What self-hosting already gives you, all without MCP: server APIs (RoomService, EgressService, IngressService, SIPService, AgentDispatchService) for live state, Prometheus metrics for resource counters (active expansion in flight, e.g., Prometheus Metrics for auth · Issue #3651 · livekit/livekit · GitHub), webhooks for the event stream, and session.on("metrics_collected", ...) for per-turn agent latency. The two genuine Cloud-only gaps are per-session ICE traces and Agent Insights.
A custom MCP wraps the same APIs; it adds query ergonomics, not data. Path A in Elijah’s diagram is the foundation; Path B is an assistant on top.
If you’re starting now: Next.js + server SDK + webhooks > Postgres + Grafana on Prometheus.
Hey Elijah, thank you for your clarification! This seems like an awesome idea. I personally use a lot of AI in the development process, so this aligns very well with my workflow. Ill definitely save your image for when we will start development on our full self-hosted transition!
P.S. Sorry that i responded a bit later, I didn’t have time to take a really good look at it and discuss it with my team until now.
Great article, Muhammad, I really enjoyed reading through it! The dashboard you built for monitoring LiveKit metrics looks really useful. Do you know if it’s also possible to capture specific events for each session in a self-hosted dashboard in the same manner as shown in the attachment below?
Glad it was useful, @Robbe, and yes, you can. The per-call timeline in that screenshot is just two event streams keyed by room_name, and on self-host you have both.
Server webhooks, room / participant / track lifecycle. Wire WebhookReceiver from the server SDK into a /webhooks endpoint and store the JSON in Postgres keyed by room_name:
AgentSession events, per-turn slice, emitted inside your worker. Push these to the same Postgres on the same room_name:
agent_state_changed, user_state_changed
overlapping_speech, agent_false_interruption
function_tools_executed
conversation_item_added, carries per-turn latency in item.metrics (note:metrics_collected is now deprecated; prefer conversation_item_added, correcting myself from earlier in this thread)
Render it. A SQL view ordered by created_at over both tables gives you the timeline. Grafana’s state-timeline panel or a custom Next.js page lands close to the Cloud Calls view.
For the room/session/event-history use case discussed here, I’ve released an early preview of LiveKit Console, a community admin dashboard for self-hosted LiveKit.
It uses the server APIs for live state and verified webhooks stored in SQLite for session, participant, call and egress history. Sessions link to their calls, participants, agents and recordings. It also provides SIP trunk/dispatch-rule management, agent worker status, and local admin/viewer accounts.
We explored existing community dashboards while building it. This is another option in that ecosystem, rather than an official LiveKit offering or a complete Cloud replacement. Cloud-specific per-session quality analytics and Agent Insights are not included.
It’s MIT licensed and can be built/run with Docker. Screenshots, setup instructions and the preview release are in the repository. Feedback on the session links, SIP workflows and worker history would be useful.
@Anuj_Singh nice work on LiveKit Console — solid option for the room/session/webhook admin side on self-host, and clear that it doesn’t cover Agent Insights.
That’s closer to what we’ve been building with Parlot: voice-native session observability for LiveKit agents (the Insights-shaped layer — timelines, metrics, cost). Not fully OSS today, but that’s the vision for self-hosters who can’t/won’t rely on Cloud Observability.
Still early / closed alpha. If anyone here is self-hosting and wants to try it as an early tester, DM me.
@Carlos_Gonzalez Thanks for sharing. Parlot sounds relevant to the observability needs discussed here.
One update since my original post: we’ve added opt-in agent telemetry to LiveKit Console, including transcripts, session timelines, traces/logs, latency metrics, and model usage.
We’re also working through a phased roadmap to cover the components and workflows available in LiveKit Cloud wherever self-hosted APIs and instrumentation allow. That’s the direction, rather than a claim of full parity today.
I’d be interested to hear how you’re approaching telemetry collection and what you’re planning to make available for self-hosting. Comparing approaches could be useful for both projects.
At a high level we’re collecting from the agent side (OTLP spans + session usage) rather than only server webhooks. Happy to compare notes on telemetry collection / what to expose for self-host — DM works if you want to go deeper. Rooting for Console either way; the ecosystem needs more of this.