[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "livekit-agents"
dynamic = ["version"]
description = "A powerful framework for building realtime voice AI agents"
readme = "README.md"
license = "Apache-2.0"
requires-python = ">=3.10,<3.15"
authors = [{ name = "LiveKit", email = "hello@livekit.io" }]
keywords = ["webrtc", "realtime", "audio", "video", "livekit", "agents", "AI"]
classifiers = [
    "Intended Audience :: Developers",
    "License :: OSI Approved :: Apache Software License",
    "Topic :: Multimedia :: Sound/Audio",
    "Topic :: Multimedia :: Video",
    "Topic :: Scientific/Engineering :: Artificial Intelligence",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.14",
    "Programming Language :: Python :: 3 :: Only",
]
dependencies = [
    "certifi>=2025.6.15",
    "livekit==1.1.9",
    "livekit-api>=1.0.7,<2",
    "livekit-local-inference>=0.2.5",
    "livekit-protocol>=1.1.17,<2",
    "livekit-blingfire~=1.1,<2",
    "protobuf>=3",
    "pyjwt>=2.0",
    "types-protobuf>=4",
    "psutil>=7.0",
    "aiohttp~=3.10",
    "typing-extensions>=4.12",
    "docstring_parser>=0.16",
    "eval-type-backport",
    "colorama>=0.4.6",
    "av>=14.0.0",
    "numpy>=1.26.0",
    "pydantic>=2.0,<3",
    "nest-asyncio>=1.6.0",
    "opentelemetry-api~=1.39.0",
    "opentelemetry-sdk~=1.39.0",
    "opentelemetry-exporter-otlp~=1.39.0",
    "prometheus-client>=0.22",
    "openai>=2",
    "aiofiles>=24",
    "json-repair==0.59.10",
    "pyyaml>=6.0.3",
    # Required by the deprecated rich CLI (`cli.run_app`); drop when it is removed.
    "typer>=0.15.1",
    "click~=8.1",
    "sounddevice>=0.5",
    "watchfiles>=1.0",
]

[project.optional-dependencies]
mcp = ["mcp>=1.24.0, <2"]
codecs = ["numpy>=1.26.0"]
images = ["pillow>=10.3.0"]
anam = ["livekit-plugins-anam>=1.6.2"]
anthropic = ["livekit-plugins-anthropic>=1.6.2"]
assemblyai = ["livekit-plugins-assemblyai>=1.6.2"]
asyncai = ["livekit-plugins-asyncai>=1.6.2"]
avatario = ["livekit-plugins-avatario>=1.6.2"]
avatartalk = ["livekit-plugins-avatartalk>=1.6.2"]
aws = ["livekit-plugins-aws>=1.6.2"]
azure = ["livekit-plugins-azure>=1.6.2"]
baseten = ["livekit-plugins-baseten>=1.6.2"]
bey = ["livekit-plugins-bey>=1.6.2"]
bithuman = ["livekit-plugins-bithuman>=1.6.2"]
browser = ["livekit-plugins-browser>=0.2.2"]
cambai = ["livekit-plugins-cambai>=1.6.2"]
cartesia = ["livekit-plugins-cartesia>=1.6.2"]
cerebras = ["livekit-plugins-cerebras>=1.6.2"]
clova = ["livekit-plugins-clova>=1.6.2"]
deepgram = ["livekit-plugins-deepgram>=1.6.2"]
elevenlabs = ["livekit-plugins-elevenlabs>=1.6.2"]
fal = ["livekit-plugins-fal>=1.6.2"]
fishaudio = ["livekit-plugins-fishaudio>=1.6.2"]
fireworksai = ["livekit-plugins-fireworksai>=1.6.2"]
gladia = ["livekit-plugins-gladia>=1.6.2"]
gnani = ["livekit-plugins-gnani>=1.6.2"]
google = ["livekit-plugins-google>=1.6.2"]
groq = ["livekit-plugins-groq>=1.6.2"]
hamming = ["livekit-plugins-hamming>=1.6.2"]
hedra = ["livekit-plugins-hedra>=1.6.2"]
hume = ["livekit-plugins-hume>=1.6.2"]
inworld = ["livekit-plugins-inworld>=1.6.2"]
keyframe = ["livekit-plugins-keyframe>=1.6.2"]
langchain = ["livekit-plugins-langchain>=1.6.2"]
lemonslice = ["livekit-plugins-lemonslice>=1.6.2"]
liveavatar = ["livekit-plugins-liveavatar>=1.6.2"]
lmnt = ["livekit-plugins-lmnt>=1.6.2"]
minimax = ["livekit-plugins-minimax-ai>=1.6.2"]
mistralai = ["livekit-plugins-mistralai>=1.6.2"]
murf = ["livekit-plugins-murf>=1.6.2"]
neuphonic = ["livekit-plugins-neuphonic>=1.6.2"]
nltk = ["livekit-plugins-nltk>=1.6.2"]
nvidia = ["livekit-plugins-nvidia>=1.6.2"]
openai = ["livekit-plugins-openai>=1.6.2"]
perplexity = ["livekit-plugins-perplexity>=1.6.2"]
resemble = ["livekit-plugins-resemble>=1.6.2"]
respeecher = ["livekit-plugins-respeecher>=1.6.2"]
rime = ["livekit-plugins-rime>=1.6.2"]
runway = ["livekit-plugins-runway>=1.6.2"]
rtzr = ["livekit-plugins-rtzr>=1.6.2"]
sarvam = ["livekit-plugins-sarvam>=1.6.2"]
silero = ["livekit-plugins-silero>=1.6.2"]
simli = ["livekit-plugins-simli>=1.6.2"]
smallestai = ["livekit-plugins-smallestai>=1.6.2"]
simplismart = ["livekit-plugins-simplismart>=1.6.2"]
slng = ["livekit-plugins-slng>=1.6.2"]
soniox = ["livekit-plugins-soniox>=1.6.2"]
speechify = ["livekit-plugins-speechify>=1.6.2"]
speechmatics = ["livekit-plugins-speechmatics>=1.6.2"]
spitch = ["livekit-plugins-spitch>=1.6.2"]
tavus = ["livekit-plugins-tavus>=1.6.2"]
trugen = ["livekit-plugins-trugen>=1.6.2"]
turn-detector = ["livekit-plugins-turn-detector>=1.6.2"]
ultravox = ["livekit-plugins-ultravox>=1.6.2"]
upliftai = ["livekit-plugins-upliftai>=1.6.2"]
gradium = ["livekit-plugins-gradium>=1.6.2"]
xai = ["livekit-plugins-xai>=1.6.2"]
phonic = ["livekit-plugins-phonic>=1.6.2"]
did = ["livekit-plugins-did>=1.6.2"]


[project.urls]
Documentation = "https://docs.livekit.io"
Website = "https://livekit.io/"
Source = "https://github.com/livekit/agents"

[tool.hatch.version]
path = "livekit/agents/version.py"

[tool.hatch.build.targets.wheel]
packages = ["livekit"]
include = ["livekit/agents/resources/*", "livekit/agents/debug/index.html"]


[tool.hatch.build.targets.sdist]
include = ["/livekit"]

[tool.uv]
exclude-newer = "7 days"
exclude-newer-package = { livekit = "0 days", livekit-api = "0 days", livekit-protocol = "0 days", livekit-blingfire = "0 days" }
