The headline feature of v1.5.0: an audio-based ML model that distinguishes genuine user interruptions from incidental sounds like backchannels ("mm-hmm"), coughs, sighs, or background noise. Enabled by default — no configuration needed.
Key stats:
When a false interruption is detected, the agent automatically resumes playback from where it left off — no re-generation needed.
To opt out and use VAD-only interruption:
session = AgentSession(
...
turn_handling=TurnHandlingOptions(
interruption={
"mode": "vad",
},
),
)
Blog post: https://livekit.com/blog/adaptive-interruption-handling
Endpointing delays now adapt to each conversation's natural rhythm. Instead of a fixed silence threshold, the agent uses an exponential moving average of pause durations to dynamically adjust when it considers the user's turn complete.
session = AgentSession(
...
turn_handling=TurnHandlingOptions(
endpointing={
"mode": "dynamic",
"min_delay": 0.3,
"max_delay": 3.0,
},
),
)
TurnHandlingOptions APIEndpointing and interruption settings are now consolidated into a single TurnHandlingOptions dict passed to AgentSession. Old keyword arguments (min_endpointing_delay, allow_interruptions, etc.) still work but are deprecated and will emit warnings.
session = AgentSession(
turn_handling={
"turn_detection": "vad",
"endpointing": {"min_delay": 0.5, "max_delay": 3.0},
"interruption": {"enabled": True, "mode": "adaptive"},
},
)
New SessionUsageUpdatedEvent provides structured, per-model usage data — token counts, character counts, and audio durations — broken down by provider and model:
@session.on("session_usage_updated")
def on_usage(ev: SessionUsageUpdatedEvent):
for usage in ev.usage.model_usage:
print(f"{usage.provider}/{usage.model}: {usage}")
Usage types: LLMModelUsage, TTSModelUsage, STTModelUsage, InterruptionModelUsage.
You can also access aggregated usage at any time via the session.usage property:
usage = session.usage
for model_usage in usage.model_usage:
print(model_usage)
Usage data is also included in SessionReport (via model_usage), so it's available in post-session telemetry and reporting out of the box.
ChatMessage.metricsEach ChatMessage now carries a metrics field (MetricsReport) with per-turn latency data:
transcription_delay — time to obtain transcript after end of speechend_of_turn_delay — time between end of speech and turn decisionon_user_turn_completed_delay — time in the developer callbackContext summarization now includes function calls and their outputs when building summaries, preserving tool-use context across the conversation window.
Set the agent log level via LIVEKIT_LOG_LEVEL environment variable or through ServerOptions, without touching your code.
| Deprecated | Replacement | Notes |
|---|---|---|
metrics_collected event | session_usage_updated event + ChatMessage.metrics | Usage/cost data moves to session_usage_updated; per-turn latency moves to ChatMessage.metrics. Old listeners still work with a deprecation warning. |
UsageCollector | ModelUsageCollector | New collector supports per-model/provider breakdown |
UsageSummary | LLMModelUsage, TTSModelUsage, STTModelUsage | Typed per-service usage classes |
RealtimeModelBeta | RealtimeModel | Beta API removed |
AgentFalseInterruptionEvent.message / .extra_instructions | Automatic resume via adaptive interruption | Accessing these fields logs a deprecation warning |
AgentSession kwargs: min_endpointing_delay, max_endpointing_delay, allow_interruptions, discard_audio_if_uninterruptible, min_interruption_duration, min_interruption_words, turn_detection, false_interruption_timeout, resume_false_interruption | turn_handling=TurnHandlingOptions(...) | Old kwargs still work but emit deprecation warnings. Will be removed in v2.0. |
Agent / AgentTask kwargs: turn_detection, min_endpointing_delay, max_endpointing_delay, allow_interruptions | turn_handling=TurnHandlingOptions(...) | Same migration path as AgentSession. Will be removed in future versions. |
generate_reply to resolve with the current GenerationCreatedEvent by @qionghuang6 in https://github.com/livekit/agents/pull/5147Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.4.6...livekit-agents@1.5.0
Fetched April 11, 2026