Local examples
These examples run all agents in a single process using the defaultAsyncQueueBus.
Single Agent
The simplest use case: one
BaseAgent running a complete voice pipeline through the AgentRunner. No bus bridge, no multi-agent coordination.Two LLM Agents
A greeter and a support agent that transfer control between each other. Demonstrates agent handoff with
handoff_to() and the @tool decorator.Two LLM Agents with TTS
Same as above, but each agent has its own TTS with a distinct voice. The main agent has no TTS — audio comes from the active LLM agent through the bus.
LLM + Flows Agent
An LLM router agent combined with a
FlowsAgent for structured restaurant reservations. Demonstrates mixing agent types.Parallel Debate
A moderator spawns three worker agents in parallel using
task_group(). Each worker argues from a different perspective. Demonstrates task coordination.Voice Code Assistant
A voice agent backed by a code worker that uses Claude Agent SDK with tools (Read, Bash, Glob, Grep) to answer coding questions. Demonstrates task-based agent integration.
Distributed examples
These examples run agents across separate processes or machines, communicating via Redis or WebSocket.Redis Handoff
The two-agent handoff split across separate processes using
RedisBus. The main transport agent runs independently from the LLM agents.Remote Proxy Assistant
A main agent connects to a remote LLM server over WebSocket using proxy agents. Demonstrates point-to-point distributed deployment.