releases.shpreview
LiveKit/Agents (Python)

Agents (Python)

$npx -y @buildinternet/releases show livekit-agents-python
Mon
Wed
Fri
AprMayJunJulAugSepOctNovDecJanFebMarApr
Less
More
Releases15Avg5/moVersionslivekit-agents@1.3.11 → livekit-agents@1.5.4
Nov 25, 2025

What's Changed

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.3.4...livekit-agents@1.3.5

Nov 24, 2025

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.3.3...livekit-agents@1.3.4

Nov 19, 2025

New Features

Observability

To learn more about the new observability features, check out our full write-up on the LiveKit blog. It walks through how session playback, trace inspection, and synchronized logs streamline debugging for voice agents. Read more here

New CLI

The CLI has been redesigned, and a new text-only mode was added so you can test your agent without using voice.

python3 my_agent.py console --text

You can also now configure both the input device and output device directly through the provided parameters.

python3 my_agent.py console --input-device "AirPods" --output-device "MacBook"

New AgentServer API

We’ve renamed Worker to AgentServer, and you now need to use a decorator to define the entrypoint. All existing functionality remains backward compatible. This change lays the groundwork for upcoming design improvements and new features.

server = AgentServer()

def prewarm(proc: JobProcess): ...
def load(proc: JobProcess): ...

server.setup_fnc = prewarm
server.load_fnc = load

@server.rtc_session(agent_name="my_customer_service_agent")
async def entrypoint(ctx: JobContext): ...

Session Report & on_session_end callback

Use the on_session_end callback to generate a structured SessionReport that the conversation history, events, recording metadata, and the agent’s configuration.

server = AgentServer()

async def on_session_end(ctx: JobContext) -> None:
    report = ctx.make_session_report()
    print(json.dumps(report.to_dict(), indent=2))
    
    chat_history = report.chat_history
    # Do post-processing on your session (e.g final evaluations, generate a summary, ...)

@server.rtc_session(on_session_end=on_session_end)
async def my_agent(ctx: JobContext) -> None:
    ...

AgentHandoff item

To capture everything that occurred during your session, we added an AgentHandoff item to the ChatContext.

class AgentHandoff(BaseModel):
    ...
    old_agent_id: str | None
    new_agent_id: str

Improved turn detection model

We updated the turn-detection model, resulting in measurable accuracy improvements across most languages. The table below shows the change in tnr@0.993 between versions 0.4.0 and 0.4.1, along with the percentage difference.

This new version also handles special user inputs such as email addresses, street addresses, and phone numbers much more effectively.

<img width="449" height="493" alt="514623611-bb709e00-71ca-4b0e-86c4-fd854dcaf51c" src="https://github.com/user-attachments/assets/0f9dee1e-5bfa-4c04-be2c-06d3c2213ed5" />

TaskGroup

We added TaskGroup, which lets you run multiple tasks concurrently and wait for all of them to finish. This is useful when collecting several pieces of information from a user where the order doesn’t matter, or when the user may revise earlier inputs while continuing the flow.

We’ve also added an example that uses TaskGroup to build a SurveyAgent, which you can use as a reference.

task_group = TaskGroup()
task_group.add(lambda: GetEmailTask(), id="get_email_task", description="Get the email address")
task_group.add(lambda: GetPhoneNumberTask(), id="phone_number_task", description="Get the phone number")
task_group.add(lambda: GetCreditCardTask(), id="credit_card_task", description="Get credit card")
results = await task_group

IVR systems

Agents can now optionally handle IVR-style interactions. Enabling ivr_detection allows the session to identify and respond appropriately to IVR tones or patterns, and min_endpointing_delay lets you control how long the system waits before ending a turn—useful for menu-style inputs.

session = AgentSession(
    ivr_detection=True,
    min_endpointing_delay=5,
)

llm_node FlushSentinel

We added a FlushSentinel marker that can be yielded from llm_node to flush partial LLM output to TTS and start a new TTS stream. This lets you emit a short, early response (for example, when a specific tool call is detected) while the main LLM response continues in the background. For a concrete pattern, see the flush_llm_node.py example.

async def llm_node(self, chat_ctx: llm.ChatContext, tools: list[llm.FunctionTool], model_settings: ModelSettings) -> AsyncIterable[llm.ChatChunk | FlushSentinel]:
    yield "This is the first sentence"
    yield FlushSentinel()
    yield "Another TTS generation"

Changes

asyncio-debug

The --asyncio-debug argument was removed, use PYTHONASYNCIODEBUG environment variable instead.

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.18...livekit-agents@1.3.3

Nov 17, 2025

[!NOTE] A more detailed changelog will be available soon!

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.18...livekit-agents@1.3.1

Nov 5, 2025

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.17...livekit-agents@1.2.18

Oct 29, 2025

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.16...livekit-agents@1.2.17

Oct 27, 2025

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.15...livekit-agents@1.2.16

Oct 15, 2025

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.14...livekit-agents@1.2.15

Oct 1, 2025

New feature

What's Changed

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.13...livekit-agents@1.2.14

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.12...livekit-agents@1.2.13

Sep 29, 2025

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.11...livekit-agents@1.2.12

Sep 18, 2025

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.9...livekit-agents@1.2.11

Sep 15, 2025

Features:

  • OpenAI Realtime API now supports video input

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.8...livekit-agents@1.2.9

Sep 2, 2025

Features:

  • AgentSession.start() now returns a RunResult when called with capture_run=True. This makes it possible to assert the first message when the agent initiates the conversation:
result = await sess.start(EchoAgent(), capture_run=True)
result.expect.next_event().is_agent_handoff(new_agent_type=EchoAgent)
result.expect.next_event().is_message(role="assistant")
  • Agent false interruptions are now automatically resumed after the false_interruption_timeout. Audio output is paused and then resumed on the same SpeechHandle, eliminating the need to manually call generate_reply() in the agent_false_interruption event handler—please remove this call if present from earlier versions. This behavior is enabled by default; to disable automatic resume, set resume_false_interruption=False.

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.7...livekit-agents@1.2.8

Aug 28, 2025

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.6...livekit-agents@1.2.7

Aug 18, 2025

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.5...livekit-agents@1.2.6

Aug 10, 2025

[!NOTE]
livekit-agents 1.2 introduced many new features. You can check out the changelog here.

What's Changed

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.4...livekit-agents@1.2.5

Aug 7, 2025

[!NOTE]
livekit-agents 1.2 introduced many new features. You can check out the changelog here.

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.3...livekit-agents@1.2.4

Aug 4, 2025

[!NOTE]
livekit-agents 1.2 introduced many new features. You can check out the changelog here.

previous patch version changelog here (1.2.2)

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.2...livekit-agents@1.2.3

Jul 24, 2025

[!NOTE]
livekit-agents 1.2 introduced many new features. You can check out the changelog here.

New features

SpeechHandle

Waiting for the playout to finish inside the function tools could lead to deadlocks. In this version, an error will be raised instead. To wait for the assistant's spoken response prior of executing a tool, use RunContext.wait_for_playout.

@function_tool
async def my_function_tool(self, ctx: RunContext):
    await ctx.wait_for_playout() # wait for the assistant's spoken response that started the execution of this tool

False interruption detection

We're now emitting an event when the agent got interrupted, but we didn't receive any transcript. (Likely a false interruption). This is useful to "re-regenerate" an assistant reply so the agent doesn't seems stuck.

@session.on("agent_false_interruption")
def on_false_interruption(ev: AgentFalseInterruptionEvent):
    session.generate_reply(instructions=ev.extra_instructions or NOT_GIVEN)

Initial conversation recording

We have begun implementing conversation recording directly within the Worker. Currently, it can be accessed using the console subcommand. A future update will provide API to use this in production.

python3 examples/drive-thru/drivethru_agent.py console --record

What's Changed

New Contributors

Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.2.0...livekit-agents@1.2.2

Latest
livekit-agents@1.5.4
Tracking Since
Mar 19, 2025
Last fetched Apr 19, 2026