Voice AI agents have a brutal UX problem.
When a tool runs — booking a flight, querying a database, calling an API — the user gets dead silence. No confirmation. No progress. Just a frozen mic.
LiveKit Agents 1.6.0 ships the fix: first-class async tools via `ctx.update()`.
Here's the new contract:
A long-running tool fires an immediate update — "Searching flights to Tokyo, this'll take a minute" — then hands control back to the LLM.
The agent keeps talking. The tool keeps working in the background.
When it finishes, the result streams in as a deferred reply when the agent is idle.
They also shipped `ctx.with_filler()` — configurable filler phrases on a timer. "Almost there." "Hang tight." Rotate them, set the delay, set the interval. No more awkward pauses.
The code pattern:
await ctx.update("Searching flights. This'll take a minute.")
# tool runs in background, agent keeps talking
await asyncio.sleep(40)
return f"Booked! Confirmation FL-{id}."
This is tool-use done right. The LLM doesn't block on I/O. The user doesn't sit in silence. The tool manages its own lifecycle.
If you're building voice agents and your tools still block the conversation, you're shipping a product that feels broken. Rotate to this pattern.
11K stars. Apache 2.0. LiveKit Agents 1.6.0.
Agentic AI
LiveKit just killed the silent voice agent. Async tools hand control back before they finish.
1 views
0 Comments