Introducing PII Redaction Support
This release adds PII redaction support for Agent Observability. It semantically redacts detected entities from chat history and audio recordings. It also filters sensitive data from logs and traces while retaining useful diagnostic context.
To support this feature, we renamed sensitive trace attributes and log fields emitted by the framework. If your third-party observability queries depend on these names, update them when you upgrade.
Introducing Expressive Mode
Expressive mode allows voice agents to speak with natural prosody and emotion. Speech delivery is determined by emotion tags generated from the context of the conversation. Enable expressive mode in your AgentSession:
from livekit.agents import AgentSession, inference
session = AgentSession(
stt=inference.STT(model="deepgram/nova-3", language="multi"),
llm=inference.LLM(model="google/gemma-4-31b-it"),
tts=inference.TTS(model="fishaudio/s2.1-pro", voice="b347db033a6549378b48d00acb0d06cd"),
expressive=True,
# ... vad, turn_detection
)See the documentation and the blog post for more information.
What's Changed
- ci: bump gh-action-pypi-publish for metadata 2.5 support by @u9g in #6836
- ci: pin the publish action to a commit, not a tag object by @longcw in #6837
- fix(elevenlabs): send keyterms on the realtime STT WebSocket by @pawlowskipawel in #6746
- fix: emit completed tool events after interruption by @chenghao-mou in #6823
- (expressive example): update readme by @tinalenguyen in #6829
- fix: preserve Cartesia inference timestamp spacing by @chenghao-mou in #6848
- fix(openai): fail generate_reply fast on conversation_already_has_act… by @ByteMaster-1 in #6818
- fix(voice): answer every tool call by @longcw in #6785
- fix: preserve adaptive interruption across tool calls by @chenghao-mou in #6564
- chore(deps): update github actions (major) by @renovate[bot] in #6395
- feat(spatius): forward avatar session extra params, update spatius to 1.0.5 by @3DRX in #6878
- fix(voice): keep the turn transcript when the tts sends no word timings by @biztex in #6704
- fix(voice): keep transcript pacing speed nonzero for syllable-free segments by @kevtae in #6751
- fix(voice): capture the full on_enter output when starting with capture_run by @biztex in #6872
- fix(audio): check AudioArrayBuffer frame size after resampling by @longcw in #6879
- fix(telemetry): log a warning when the audio recording can't be read at upload time by @dubbl-a in #6833
- fix(tokenize): include the last character in the final sentence span by @uuzzrm in #6866
- fix(telemetry): report cached input tokens on LLM spans by @Panmax in #6852
- feat(expressive): allow dynamic updates via Agent and update_options by @tinalenguyen in #6886
- plugins/phonic: support built-in tools via phonic_tools + configs_for_tools by @arunwpm-work in #6853
- feat: correlate inference requests with session ids by @chenghao-mou in #6863
- fix(llm): preserve provider events on restart by @Bortlesboat in #6568
- fix(agents): omit separator for empty exception details by @u9g in #6894
- fix: wait for final user turn during close by @chenghao-mou in #6897
- chore: bump local inference to 0.2.7 by @chenghao-mou in #6892
- docs: fix typos in healthcare example by @Excelius-Wang in #6912
- feat(ultravox): support server-side external TTS voices via externalVoice by @ssgutierrez42 in #6850
- fix(cli): restore terminal settings on console exit by @kamalmostafa in #6046
- fix: prevent wait_for_idle cancellation from poisoning user turns by @Excelius-Wang in #6913
- fix(tts): include supported encodings in RuntimeError message by @YusufKeremKezer in #6910
- fix: place Gemini realtime user turns before replies by @chenghao-mou in #6914
- fix(rime): remove Arcana model support by @naszzz in #6773
- feat(bland): BTTS ws integration by @rv-blandai in #6752
- feat(telemetry): tag content-bearing trace and log keys with lk.pii. for redaction AGT-3074 by @chenghao-mou in #6356
- fix(proto): one ChatItem serializer that carries every declared field by @u9g in #6756
- livekit-agents@1.7.0 by @github-actions[bot] in #6928
New Contributors
- @pawlowskipawel made their first contribution in #6746
- @kevtae made their first contribution in #6751
- @dubbl-a made their first contribution in #6833
- @Bortlesboat made their first contribution in #6568
- @Excelius-Wang made their first contribution in #6912
- @ssgutierrez42 made their first contribution in #6850
- @kamalmostafa made their first contribution in #6046
- @YusufKeremKezer made their first contribution in #6910
- @naszzz made their first contribution in #6773
Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.6.10...livekit-agents@1.7.0