Skip to content

Repository files navigation

LiveKit logo

Build with AI Sri Lanka 2026 — Voice Agent

A voice AI assistant that answers questions about Build with AI Sri Lanka 2026, hosted by GDG Sri Lanka in partnership with Hatch and BuildrLabs — Saturday, July 25th 2026, from 9 AM at Hatch Works, Colombo.

Ask it when and where the event is, what the two tracks cover, what's on the agenda, or when a particular speaker is on. Built with LiveKit Agents for Python and LiveKit Cloud.

The project includes:

  • A voice assistant grounded in the real event schedule, with two tools:
    • lookup_agenda — the published sessions for either track, or both at once when someone asks about a person
    • submit_question — takes an audience question for the live Q&A. This one is a stub: it records questions in memory and always reports success. Point it at the event's real Q&A before using it on the day
    • All event facts live in src/event_info.py — edit the agenda there and both the prompt and the tool pick it up
    • Tested to answer from the published schedule, to refuse to invent sessions, speakers, times, or ticket prices, and never to answer on a speaker's behalf
  • A speech-to-speech pipeline built on the Gemini Live API
    • Uses Gemini 3.1 Flash Live, which consumes and produces speech directly instead of transcribing to text and back, preserving tone and other verbal cues while removing a round trip of latency
    • Swap in any other realtime model, or an STT-LLM-TTS pipeline with more than 50 models via LiveKit Inference, through the extensive plugin ecosystem
  • Eval suite based on the LiveKit Agents testing & evaluation framework
  • Turn detection handled by the Gemini Live API's own server-side VAD. This model is not compatible with the LiveKit Turn Detector; see the note next to turn_handling in src/agent.py for the trade-off and how to get it back
  • Background voice cancellation
  • Deep session insights from LiveKit Agent Observability
  • A Dockerfile ready for production deployment to LiveKit Cloud

This starter app is compatible with any custom web/mobile frontend or telephony.

Using coding agents

This project is designed to work with coding agents like Claude Code, Cursor, and Codex.

For your convenience, LiveKit offers both a CLI and an MCP server that can be used to browse and search its documentation. The LiveKit CLI (lk docs) works with any coding agent that can run shell commands. Install it for your platform:

macOS:

brew install livekit-cli

Linux:

curl -sSL https://get.livekit.io/cli | bash

Windows:

winget install LiveKit.LiveKitCLI

The lk docs subcommand requires version 2.15.0 or higher. Check your version with lk --version and update if needed. Once installed, your coding agent can search and browse LiveKit documentation directly from the terminal:

lk docs search "voice agents"
lk docs get-page /agents/start/voice-ai-quickstart

See the Using coding agents guide for more details, including MCP server setup.

The project includes a complete AGENTS.md file for these assistants. You can modify this file to suit your needs. To learn more about this file, see https://agents.md.

Dev Setup

Create a project from this template with the LiveKit CLI (recommended):

lk cloud auth
lk agent init my-agent --template agent-starter-python

The CLI clones the template and configures your environment. Then follow the rest of this guide from Run the agent.

Alternative: Manual setup without the CLI

Clone the repository and install dependencies to a virtual environment:

cd agent-starter-python
uv sync

Sign up for LiveKit Cloud then set up the environment by copying .env.example to .env.local and filling in the required keys:

  • LIVEKIT_URL
  • LIVEKIT_API_KEY
  • LIVEKIT_API_SECRET
  • GOOGLE_API_KEY

The Gemini Live API is used through a plugin rather than LiveKit Inference, so it needs its own key. Get one from Google AI Studio. To use a Vertex AI model with a service account instead, see the note next to GEMINI_LIVE_MODEL in src/agent.py.

You can load the LiveKit environment automatically using the LiveKit CLI:

lk cloud auth
lk app env --write --destination .env.local

Run the agent

Run this command to speak to your agent directly in your terminal:

uv run python src/agent.py console

To run the agent for use with a frontend or telephony, use the dev command:

uv run python src/agent.py dev

In production, use the start command:

uv run python src/agent.py start

Frontend & Telephony

Get started quickly with our pre-built frontend starter apps, or add telephony support:

Platform Link Description
Web livekit-examples/agent-starter-react Web voice AI assistant with React & Next.js
iOS/macOS livekit-examples/agent-starter-swift Native iOS, macOS, and visionOS voice AI assistant
Flutter livekit-examples/agent-starter-flutter Cross-platform voice AI assistant app
React Native livekit-examples/voice-assistant-react-native Native mobile app with React Native & Expo
Android livekit-examples/agent-starter-android Native Android app with Kotlin & Jetpack Compose
Web Embed livekit-examples/agent-starter-embed Voice AI widget for any website
Telephony Documentation Add inbound or outbound calling to your agent

For advanced customization, see the complete frontend guide.

Tests and evals

This project includes a complete suite of evals, based on the LiveKit Agents testing & evaluation framework. To run them, use pytest.

uv run pytest

Using this template repo for your own project

Once you've started your own project based on this repo, you should:

  1. Check in your uv.lock: This file is currently untracked for the template, but you should commit it to your repository for reproducible builds and proper configuration management. (The same applies to livekit.toml, if you run your agents in LiveKit Cloud)

  2. Remove the git tracking test: Delete the "Check files not tracked in git" step from .github/workflows/tests.yml since you'll now want this file to be tracked. These are just there for development purposes in the template repo itself.

  3. Add your own repository secrets: You must add secrets for LIVEKIT_URL, LIVEKIT_API_KEY, and LIVEKIT_API_SECRET so that the tests can run in CI.

Deploying to production

This project is production-ready and includes a working Dockerfile. To deploy it to LiveKit Cloud or another environment, see the deploying to production guide.

Self-hosted LiveKit

You can also self-host LiveKit instead of using LiveKit Cloud. See the self-hosting guide for more information. If you choose to self-host, you'll need to also use model plugins instead of LiveKit Inference and will need to remove the LiveKit Cloud noise cancellation plugin.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

livekit-workshop

Resources

Stars

13 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages