Chromium Embedded Framework (CEF) bindings for LiveKit
Project Links
Meta
Author: LiveKit
Requires Python: >=3.12.0
Classifiers
Intended Audience
- Developers
License
- OSI Approved :: Apache Software License
Programming Language
- Python :: 3
- Python :: 3 :: Only
- Python :: 3.12
- Python :: 3.13
- Python :: 3.14
Topic
- Multimedia :: Sound/Audio
- Multimedia :: Video
- Scientific/Engineering :: Artificial Intelligence
Browser plugin for LiveKit Agents
Chromium Embedded Framework (CEF) for LiveKit Agents
Development notes
Avoid excessive asyncio task creation
Audio is very sensitive to event loop latency. Avoid creating short-lived tasks
(asyncio.create_task, asyncio.ensure_future) on hot paths like paint
callbacks, audio callbacks, and input event dispatch. Each task adds scheduling
overhead that accumulates into audible jitter.
Prefer a single persistent loop task that drains a queue (see
_input_sender_loop, _audio_loop in session.py). The total number of
long-lived tasks in steady state should stay in the low tens — not scale with
frame rate or input frequency.