livekit-agent-simulator
Dials any LiveKit voice agent with an AI simulated caller and records a full forensic behavior log.
README
livekit-agent-simulator
Standalone MCP server + CLI (lk-sim) that dials any LiveKit voice agent with an
AI simulated caller (Gemini Live) and records a full forensic behavior log —
transcripts, tool events, flow events, room events — all timestamped per turn.
Zero-touch: the agent under test is a black box. The simulator only needs the
agent's registered agent_name; it never reads or modifies the target project's code,
.env, or model config.
How it works
- Reads
<your-repo>/.agent-sim/config.yaml(LiveKit creds +agent_name+ simulator voice). - Creates a fresh room
lk-sim-<run-id>and dispatches the agent viaRoomAgentDispatch. - Joins as participant
lk-sim-caller, bridges audio with a Gemini Live session (gemini-3.1-flash-live-preview) playing the scenario persona. - Observes everything from inside the room:
lk.transcriptiontext streams, custom data topics (when configured), audio timing, interruptions, silences. - Writes
reports/<run-id>/—events.jsonl,timeline.md,summary.json,meta.json— and mirrors toruns.sqlite. - Optional LLM judge (
gemini-2.5-flash) scores the transcript + tool spans against the scenario's PassCriteria.
Quick start
# In the repo you want to test (agent worker must be running; set `agent_name` in config):
uv run --directory /path/to/livekit-agent-simulator lk-sim init
# → scaffolds .agent-sim/ (gitignored) — fill in config.yaml
uv run --directory /path/to/livekit-agent-simulator lk-sim run smoke-hello
uv run --directory /path/to/livekit-agent-simulator lk-sim report <run-id>
Cursor MCP config
{
"mcpServers": {
"livekit-agent-simulator": {
"command": "uv",
"args": ["run", "--directory", "/abs/path/livekit-agent-simulator", "livekit-agent-simulator-mcp"]
}
}
}
MCP tools
| Tool | Purpose |
|---|---|
init_project |
Scaffold .agent-sim/ + add to .gitignore |
list_scenarios |
Glob scenarios/*.jsonl |
validate_scenario |
Schema + lint |
run_scenario |
Run a simulation, returns run_id |
get_run_status |
running / done / failed + turn count |
get_run_log |
Read events.jsonl with kind/turn/source/time filters |
get_run_report |
Summary + judge verdict + suspicious turns |
compare_runs |
Diff two runs |
list_runs |
Run history from SQLite |
Docs
- AGENTS.md — rules for AI agents (research loop, package boundary)
- docs/smoke-test.md — first end-to-end run
- docs/portability.md — consumer-specific dispatch / observe setup
- docs/plugins.md — verify plugins + Python API
CI / Release
| Workflow | Trigger | What it does |
|---|---|---|
| CI | PR / push → master |
pytest (Python 3.10 + 3.12), lk-sim --help, uv build |
| Release | tag v* |
test → build → GitHub Release (wheel + sdist); PyPI if PYPI_API_TOKEN secret is set |
Local check:
uv sync --extra dev
uv run pytest -q
uv build
Release:
git tag v0.1.0
git push origin v0.1.0
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.