Live and voice agents¶
ADK is the framework for building live and voice agents. A live agent holds an open, two-way connection with the user: instead of sending a message and waiting for a reply, the user and the agent both speak, listen, and respond at the same time, and the user can interrupt the agent mid-sentence the way people interrupt each other in real conversation. Live agents accept text, audio, and video input and reply with text or speech.
A live agent is an ADK agent, built with the same agent, tool, and session abstractions you use everywhere else. You describe the agent's behavior; ADK manages the real-time connection, tool execution, and session state underneath. Today that connection runs on the Gemini Live API; ADK handles the wiring so your agent code stays the same as the platform evolves.
Build live agents¶
-
Get started
Build your first live agent and talk to it in the browser.
- Start here — pick a language and build one
- Jump straight to Python or Java
-
Building
The capability pages, roughly in the order you will need them.
- Sessions —
run_live(), resumption, scale - Events — what comes back and how to handle it
- Tools — automatic execution and streaming tools
- Workflows — multi-agent under a live connection
- Audio and video — formats and streaming
- Configuration —
RunConfig, voice, transcription, turn detection
- Sessions —
-
Production
Take a live agent beyond
adk web.- Evaluation — score voice conversations before you ship
- Build a custom server
- Supported models
Which kind of streaming do you need?¶
"Streaming" covers three different things in ADK, and picking the wrong one is a common source of confusion.
| What it does | User can interrupt? | Use it when | Where | |
|---|---|---|---|---|
| Server-side streaming | One-way flow from server to client, like a live feed. | No | You push dashboard or feed updates, not a conversation. | Outside ADK |
| Token-level streaming | Text arrives word by word, but you wait for it to finish before sending more. | No | You want a responsive text chat. | StreamingMode.SSE (Configuration) |
| Bidirectional streaming | Both sides speak, listen, and respond at once over one open connection. | Yes | You are building voice or video conversation. | runner.run_live() — these pages |
These pages are about the third row.
sequenceDiagram
participant Client as User
participant Agent
Client->>Agent: "Explain the history of Japan"
Agent->>Client: "Sure! Japan's history is a..." (partial)
Client->>Agent: "Ah, wait."
Agent->>Client: "OK, how can I help?" [interrupted: true]
Why build live agents on ADK¶
The Live API gives you the streaming protocol. ADK gives you everything around it, so you write agent behavior instead of streaming infrastructure.
Raw Live API (google-genai) |
ADK | |
|---|---|---|
| Tool execution | Manual | Automatic |
| Reconnection | Manual | Automatic session resumption |
| Events | Custom structures | Unified event model |
| Async coordination | Manual | LiveRequestQueue + run_live() |
| Session persistence | Manual | SQL, Agent Platform, in-memory |
| Multi-agent | Not available | Workflows, sub-agents, transfer |
Demos and resources¶
-
LensMosaic: Visual Shopping with Live AI
Merges live camera input, voice, and product discovery. Point your camera at any object to find similar products. Built with ADK live agents, Gemini Embedding, Vector Search, and FastAPI.
-
A Visual Guide to Bidi-streaming
Diagrams and illustrations covering how streaming works and how to build interactive agents with ADK.
-
Google ADK + Gemini Live API
Using live agents for real-time audio/video, with a Python server example built on
LiveRequestQueue.