livekit-agents@1.8.0
AudarAI/Audar-ASR-V1livekit-agents@1.8.0Sep 5, 2026by tinalenguyen
Upgrading?
AI Summary
Major overhaul of OpenTelemetry integration to follow GenAI semantic conventions, with significant changes to telemetry attributes and in-process PII filtering.
Key Highlights
- Adoption of OpenTelemetry GenAI semantic conventions
- PII filtering moved in-process rather than at the collector
- New request/response and usage attributes
- New metrics for client token usage and operation duration
Breaking Changes
- Conversation content is no longer emitted as span events
- Realtime inference moved off agent_turn onto a new realtime_inference child span
- gen_ai.provider.name is normalized to registry spelling
- Custom llm_node is no longer credited with configured model unless it served the request
- Content attributes are stripped in-process when redaction is mandatory
New Features
- New telemetry attributes (gen_ai.request.stream, gen_ai.output.type, etc.)
- New metrics (gen_ai.client.token.usage, gen_ai.client.operation.duration)
- Configurable PII stripping via OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT
Full Release Notes
## OpenTelemetry Changes (#7104)
Spans, metrics, and logs now follow the OTel GenAI semantic conventions, so
Langfuse, Datadog Agent Observability, and other GenAI-aware backends read
LiveKit traces natively. PII filtering also moved in-process.
**Migration Notes**
| Before | After |
|---|---|
| event `gen_ai.system.message` | attribute `gen_ai.system_instructions` |
| events `gen_ai.user.message`, `gen_ai.assistant.message`, `gen_ai.tool.message` | attribute `gen_ai.input.messages` |
| event `gen_ai.choice` (`role`/`content`/`tool_calls`) | attributes `gen_ai.output.messages` + `gen_ai.response.finish_reasons` |
| realtime `gen_ai.*` on the `agent_turn` span | on the new `realtime_inference` child span |
| realtime `gen_ai.operation.name = "chat"` | `= "generate_content"` |
| `gen_ai.provider.name = "api.openai.com"`, `"AWS Bedrock"`, `"google"` | `"openai"`, `"aws.bedrock"`, `"gcp.gen_ai"` |
| custom `llm_node` always tagged with the configured model/provider | tagged only when that LLM served the call; otherwise the node span records the convention itself |
| PII stripped at LiveKit Cloud's collector | stripped in-process; under project redaction content never reaches any exporter, Cloud included |
| `telemetry._chat_ctx_to_otel_events(chat_ctx)` | `telemetry.gen_ai.to_system_instructions()` / `to_input_messages()` / `to_output_messages()` |
| `telemetry.utils._redaction_enabled()` | `telemetry.utils.redaction_enabled(span_attributes=None)` |
**Breaking**
- Conversation content is no longer emitted as span events — `gen_ai.system.message`,
`gen_ai.user.message`, `gen_ai.assistant.message`, `gen_ai.tool.message` and
`gen_ai.choice` are gone, replaced by the attributes in the table above (JSON,
part-based format). Dashboards and processors reading the events see nothing.
- Realtime inference moved off `agent_turn` onto a new `realtime_inference` child span,
so queries reading realtime token usage from `agent_turn` return nothing. Its
`gen_ai.operation.name` also changed from `chat` to `generate_content`.
- `gen_ai.provider.name` is normalized to the registry spelling. Providers outside the
registry are unchanged. Update any group-by on the old values.
- A custom `llm_node` is no longer credited with the configured model and provider
unless that LLM actually served the request; a node calling a third-party engine is
left unattributed and records the convention on its own span instead.
- When the project mandates redaction, content attributes are now stripped in-process
before every exporter, LiveKit Cloud included — previously the local pass scrubbed
only exception details and Cloud's collector handled the rest.
- `gen_ai.usage.input_cached_tokens` is emitted again on the pipeline path (reversing
#6852) and reasoning tokens go out under both `gen_ai.usage.reasoning.output_tokens`
and `gen_ai.usage.reasoning_tokens`. A backend summing both spellings double-counts.
- `telemetry._chat_ctx_to_otel_events()` removed; `telemetry.utils._redaction_enabled()`
is now `redaction_enabled(span_attributes=None)`.
**Added**
- Request/response attributes: `gen_ai.request.stream`, `gen_ai.output.type`,
`gen_ai.conversation.id`, `gen_ai.response.{id,model,finish_reasons,time_to_first_chunk}`.
- Usage attributes: `gen_ai.usage.cache_write.input_tokens`, `.reasoning.output_tokens`
and the per-modality `.{text,audio,image}.*` counts.
- `execute_tool` spans carry `gen_ai.tool.{name,type,call.id,call.arguments,call.result,description}`;
turns carry `gen_ai.agent.name`, sessions `gen_ai.workflow.name`.
- `error.type` on failures, set even when redaction is on.
- Metrics `gen_ai.client.token.usage`, `gen_ai.client.operation.duration`,
`gen_ai.client.operation.time_to_first_chunk`, `gen_ai.invoke_agent.duration`,
`gen_ai.execute_tool.duration`, alongside the existing `lk.agents.*`.
- `OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=0` (or
`telemetry.gen_ai.set_capture_content(False)`) omits message payloads, tool
definitions and tool arguments/results. Content capture is on by default.
- `set_tracer_provider(..., allow_pii=False)` / `LIVEKIT_TELEMETRY_ALLOW_PII=0` strips
conversational content in-process before third-party exporters. PII is allowed by
default.
## What's Changed
* fix(llm): tolerate unparseable stored tool-call arguments in Anthropic/Google/AWS formatters by @PranavMishra28 in https://github.com/livekit/agents/pull/6321
* aws: omit temperature/topP for Bedrock models that reject them by @rrfunde in https://github.com/livekit/agents/pull/6947
* fix(tests): settle genai client finalizers in the test that owns them by @helin-mktech in https://github.com/livekit/agents/pull/6882
* fix(gradium): update parameters by @timpratim in https://github.com/livekit/agents/pull/7014
* fix(xai): reject FileSearch plus collections_search or file_search by @mehrdroid in https://github.com/livekit/agents/pull/6998
* fix(aws): import AsyncBedrockRuntimeClient for bedrock-runtime 0.10+ by @libaojiang in https://github.com/livekit/agents/pull/7002
* chore: remove unused segment_uuid and speech_uuid helpers by @detail-app[bot] in https://github.com/livekit/agents/pull/7021
* fix: handle RoomIO microphone track replacement by @chenghao-mou in https://github.com/livekit/agents/pull/6744
* fix(openai): handle incomplete Responses events by @dawNotPoi in https://github.com/livekit/agents/pull/7024
* fix: correctly handle SIGTERM/SIGINT even when sync functions block by @davidzhao in https://github.com/livekit/agents/pull/7034
* avoid shutting down third-party otel providers by @davidzhao in https://github.com/livekit/agents/pull/7033
* fix(mistralai): support assistant-ending chat contexts by @mikemikimike in https://github.com/livekit/agents/pull/7036
* feat(deepgram): add numerals, profanity_filter, and redact options to STTv2 (Flux) by @vadimatmurphy in https://github.com/livekit/agents/pull/6993
* fix(openai): close the STT's websocket connection pool by @Rehansanjay in https://github.com/livekit/agents/pull/7023
* fix: retry connection pool prewarm after failure by @jstar0 in https://github.com/livekit/agents/pull/6969
* fix(plugins): redact API keys from rejected websocket handshakes by @aniketwaghh in https://github.com/livekit/agents/pull/7032
* fix(elevenlabs): don't forward re-sent partial transcripts by @captainbanan in https://github.com/livekit/agents/pull/6922
* fix: transcription_delay reported as ~0 with the default VAD by @davidzhao in https://github.com/livekit/agents/pull/6557
* feat(ultravox): implement say() via ForcedAgentMessage by @ssgutierrez42 in https://github.com/livekit/agents/pull/7001
* fix: disable default AGC with noise cancellation by @chenghao-mou in https://github.com/livekit/agents/pull/7064
* refactor(hotel_receptionist): split scenarios into scoped and open-ended files by @u9g in https://github.com/livekit/agents/pull/7065
* feat(google): support custom prompt config for STT chirp_3 by @kechako in https://github.com/livekit/agents/pull/7055
* fix(simplismart): close the streams the STT collects by @Rehansanjay in https://github.com/livekit/agents/pull/7012
* feat(metrics): expose reasoning_tokens in LLM metrics and traces by @s-hamdananwar in https://github.com/livekit/agents/pull/7068
* docs: add --audio_eot to documented CI unit gate command by @detail-app[bot] in https://github.com/livekit/agents/pull/7070
* fix(voice): flush recorder resampler tails at run end by @dajiaohuang in https://github.com/livekit/agents/pull/7047
* fix(aws): pin the CRT transport for Nova Sonic by @longcw in https://github.com/livekit/agents/pull/7076
* fix(voice): cancel parked preemptive generation before pausing the activity by @uuzzrm in https://github.com/livekit/agents/pull/6865
* fix(avatar): recover DataStreamAudioReceiver from a lost stream trailer by @jasper-face-up in https://github.com/livekit/agents/pull/7007
* Bump livekit 1.1.17 by @cnderrauber in https://github.com/livekit/agents/pull/7078
* feat: twilio connector warm transfer by @anunaym14 in https://github.com/livekit/agents/pull/6283
* fix: resolve transcript-only amd greetings at eot by @chenghao-mou in https://github.com/livekit/agents/pull/7026
* fix(cartesia): ignore stale frames from previous contexts on pooled websockets by @Panmax in https://github.com/livekit/agents/pull/7081
* feat(elevenlabs): add secondary_languages for Scribe v2 realtime STT by @tinalenguyen in https://github.com/livekit/agents/pull/7086
* fix(llm): keep falsy tool return values in make_function_call_output by @Osamaali313 in https://github.com/livekit/agents/pull/6551
* fix(google): don't let closing the TTS input generator mask the real error by @avionicharshit-byte in https://github.com/livekit/agents/pull/7041
* fix(aws): restore Transcribe STT on transcribe-streaming 0.11 by @longcw in https://github.com/livekit/agents/pull/7094
* fix(google): route Gemma 4 thinking through thinking_level by @longcw in https://github.com/livekit/agents/pull/7095
* fix(inworld): keep a reference to the prewarm task and cancel it on close by @Rehansanjay in https://github.com/livekit/agents/pull/7050
* chore(deps): update dependency nltk to v3.10.3 [security] by @renovate[bot] in https://github.com/livekit/agents/pull/7091
* feat(assemblyai): add universal-3-6-pro streaming model by @dlange-aai in https://github.com/livekit/agents/pull/7100
* Remove deprecated Hedra avatar plugin by @bcherry in https://github.com/livekit/agents/pull/7084
* feat(phonic): add update_options for mid-session config changes by @arunwpm-work in https://github.com/livekit/agents/pull/7089
* chore(lint): enable RUF006 so dangling asyncio tasks fail CI by @Rehansanjay in https://github.com/livekit/agents/pull/7054
* tests: stop room tests hanging on macOS by @longcw in https://github.com/livekit/agents/pull/6857
* feat: add Vakyam TTS plugin by @Adithya-Sakaray in https://github.com/livekit/agents/pull/7009
* fix(hotel_receptionist): stop a restaurant modification silently resizing the party by @u9g in https://github.com/livekit/agents/pull/6806
* chore(inference): remove ElevenLabs models after the gateway brownout by @chenghao-mou in https://github.com/livekit/agents/pull/7106
* feat(assemblyai): surface end_of_turn_confidence on SpeechData.metadata by @gsharp-aai in https://github.com/livekit/agents/pull/7107
* fix(voice): stop the recorder writing over audio still in the resampler by @longcw in https://github.com/livekit/agents/pull/7079
* fix: timestamp say transcripts at speech start by @chenghao-mou in https://github.com/livekit/agents/pull/7110
* fix: restore endpointing overlap when agent speech resumes by @chenghao-mou in https://github.com/livekit/agents/pull/6939
* fix: exclude agent speech from dynamic endpointing pauses by @chenghao-mou in https://github.com/livekit/agents/pull/7061
* fix: preserve forkserver copy-on-write sharing by @chenghao-mou in https://github.com/livekit/agents/pull/7120
* feat(phonic): export LiveKit tools for the Responses API by @elizabeth-phonic in https://github.com/livekit/agents/pull/7112
* fix: release stale transcript gates and playout pauses by @chenghao-mou in https://github.com/livekit/agents/pull/7083
* fix: restore speaking state when releasing playout pause by @chenghao-mou in https://github.com/livekit/agents/pull/7087
* feat(telemetry): full OTel GenAI semantic conventions + in-process PII stripping by @theomonnom in https://github.com/livekit/agents/pull/7104
* livekit-agents@1.8.0 by @github-actions[bot] in https://github.com/livekit/agents/pull/7123
## New Contributors
* @PranavMishra28 made their first contribution in https://github.com/livekit/agents/pull/6321
* @rrfunde made their first contribution in https://github.com/livekit/agents/pull/6947
* @helin-mktech made their first contribution in https://github.com/livekit/agents/pull/6882
* @timpratim made their first contribution in https://github.com/livekit/agents/pull/7014
* @mehrdroid made their first contribution in https://github.com/livekit/agents/pull/6998
* @libaojiang made their first contribution in https://github.com/livekit/agents/pull/7002
* @dawNotPoi made their first contribution in https://github.com/livekit/agents/pull/7024
* @Rehansanjay made their first contribution in https://github.com/livekit/agents/pull/7023
* @jstar0 made their first contribution in https://github.com/livekit/agents/pull/6969
* @aniketwaghh made their first contribution in https://github.com/livekit/agents/pull/7032
* @dajiaohuang made their first contribution in https://github.com/livekit/agents/pull/7047
* @jasper-face-up made their first contribution in https://github.com/livekit/agents/pull/7007
* @Osamaali313 made their first contribution in https://github.com/livekit/agents/pull/6551
* @avionicharshit-byte made their first contribution in https://github.com/livekit/agents/pull/7041
* @Adithya-Sakaray made their first contribution in https://github.com/livekit/agents/pull/7009
* @elizabeth-phonic made their first contribution in https://github.com/livekit/agents/pull/7112
**Full Changelog**: https://github.com/livekit/agents/compare/livekit-agents@1.7.1...livekit-agents@1.8.0Related Repositories
public-apis/public-apis★ 491,131
A collective list of free APIs
NousResearch/hermes-agent★ 255,909
The agent that grows with you
yt-dlp/yt-dlp★ 200,005
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,483
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,700
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.