Skip to main content

Lampgo LiveKit Agent SDK

Business-facing SDK for the Lampgo LiveKit RTC + Agent stack.

Full Chinese usage guide in this repository: ../docs/xiaomi-livekit-agent-sdk/usage.md.

It wraps:

  • LiveKit token generation with internal RoomAgentDispatch.
  • voice_agents[].name -> agent_name mapping.
  • FastAPI /rtc/token and /healthz routes.
  • Parent process supervision for one HTTP token process plus one Agent Worker process per voice agent.
  • LiveKit Agents runtime with Silero VAD, OpenAI-compatible LLM, and Volcengine STT/TTS.

Install

From public PyPI:

pip install lampgo-livekit-agent-sdk

For local development from the repository root:

pip install -e ./xiaomi-livekit-agent-sdk

The Volcengine STT/TTS plugin is bundled in this SDK wheel, so business users do not install livekit-plugins-volcengine separately.

Both local mode (livekit.api_key + livekit.api_secret) and cloud mode (platform.* + agent.registration_token) work on the public PyPI install. For cloud mode on the public livekit-agents, the SDK adds external agent-token support at runtime, so no internal index or patched framework is required.

Single Config File

The SDK uses one YAML file by default: roles.yaml.

The file now describes concrete voice agents. Each voice agent directly configures how it listens (stt), thinks (llm), and speaks (tts):

version: 1

livekit:
  url: ${LIVEKIT_URL}
  api_key: ${LIVEKIT_API_KEY}
  api_secret: ${LIVEKIT_API_SECRET}

token_api:
  shared_secret: ${TOKEN_API_SHARED_SECRET:-}
  ttl_seconds: 600
  min_ttl_seconds: 60
  max_ttl_seconds: 3600

agent:
  name_prefix: lampgo-agent

providers:
  openai_internal:
    type: openai
    api_key: ${OPENAI_API_KEY}
    base_url: ${OPENAI_BASE_URL}

  volc_main:
    type: volcengine
    app_id: ${VOLCENGINE_APP_ID}
    access_token: ${VOLCENGINE_ACCESS_TOKEN}

defaults:
  stt:
    provider: volc_main
    options:
      resource_id: volc.bigasr.sauc.duration
      sample_rate: 16000
      result_type: single

  llm:
    provider: openai_internal
    options:
      model: xiaomi/mimo-v2-flash
      temperature: 0.3
      max_tokens: 512

  tts:
    provider: volc_main
    options:
      cluster: volcano_tts
      voice: BV700_streaming
      sample_rate: 24000
      streaming: true

voice_agents:
  - name: customer-service
    display_name: "小米客服助手"
    llm:
      system_prompt: "你是小米客服助手,用中文简短回答用户问题,不要使用 Markdown 或表情符号。"

llm.system_prompt is the model system prompt. For longer prompts, use:

voice_agents:
  - name: customer-service
    llm:
      system_prompt_file: ./prompts/customer-service.md

If token_api.shared_secret is set, /rtc/token requires:

Authorization: Bearer <shared bearer secret>

An empty token_api.shared_secret disables token API bearer auth for local/LAN testing. If a token request sends ttl_seconds, the server clamps it to the configured min/max range.

Environment variables are only used when the YAML explicitly references them, for example ${OPENAI_API_KEY} or ${TOKEN_API_SHARED_SECRET:-}.

Voice Agents

The SDK maps each configured voice agent to an internal LiveKit agent_name.

Default generated agent name:

{agent.name_prefix or "lampgo-agent"}-{voice_agent_name_slug}

The public token API never returns agent_name.

Run

lampgo-livekit-agent --config-file roles.yaml --host 0.0.0.0 --port 8080

Equivalent Python entry point:

from lampgo_livekit_agent import LiveKitAgentConfig, start_service

start_service(config=LiveKitAgentConfig.from_env(config_file="roles.yaml"))

Token API

For compatibility, the request field is still named role; it selects voice_agents[].name.

Request:

curl -X POST http://127.0.0.1:8080/rtc/token \
  -H 'Content-Type: application/json' \
  -d '{
    "room_name": "room-001",
    "user_identity": "user-001",
    "role": "customer-service",
    "metadata": {"tenant_id": "business-a"}
  }'

The new voice_agent field is also accepted:

{
  "room_name": "room-001",
  "user_identity": "user-001",
  "voice_agent": "customer-service"
}

Response:

{
  "token": "...",
  "serverUrl": "ws://192.168.31.116:7880",
  "roomName": "room-001",
  "identity": "user-001",
  "role": "customer-service"
}

The JWT contains:

RoomConfiguration(
    agents=[RoomAgentDispatch(agent_name="<internal voice agent agent_name>")]
)

FastAPI Integration

For an existing business FastAPI application:

from fastapi import FastAPI
from lampgo_livekit_agent import LiveKitAgentConfig
from lampgo_livekit_agent.fastapi import mount_livekit_routes

app = FastAPI()
config = LiveKitAgentConfig.from_env(config_file="roles.yaml")

mount_livekit_routes(app, config=config)

Business services remain responsible for user authentication and room/tenant authorization.

Metadata

Release files for lampgo-livekit-agent-sdk 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lampgo-livekit-agent-sdk 0.3.0
File Size Uploaded
lampgo_livekit_agent_sdk-0.3.0.tar.gz 28.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lampgo-livekit-agent-sdk 0.3.0
File Interpreter ABI Platform
lampgo_livekit_agent_sdk-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 69.4 kB

Release files / lampgo_livekit_agent_sdk-0.3.0.tar.gz

Download URL lampgo_livekit_agent_sdk-0.3.0.tar.gz
Size 28.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b42924c6c27fa90955694a6b453d497fceb4bf8c2ce560a043a671d6fc3d8d27
BLAKE2b-256 checksum
How to use checksums
f149974d303b514fb93c171371b1ee4afde5946983805e72259242d76c481a3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.8

Release files / lampgo_livekit_agent_sdk-0.3.0-py3-none-any.whl

Download URL lampgo_livekit_agent_sdk-0.3.0-py3-none-any.whl
Size 40.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6434f37d037a51aa8bb60bdf64bc56ff9ebcbcf27a65031de2b141d1655fbe21
BLAKE2b-256 checksum
How to use checksums
4e262124d08b77a795d2418920c8b8d1a6d690a45e6a181bf0e6fe4a9434ff5f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.8

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page