Skip to main content
A subagent is one role on a call, such as reception or billing. One is active at a time, and the caller hears a single conversation in one voice.
Subagents are available in the Python SDK. Without steps they run on any runtime; with steps, they need a runtime that supports workflows.

Create Subagents

Give each subagent a name, instructions, and its own tools.

Add Them to Your Agent

List them on your Agent. The first one opens the call.
Everything on the Agent is shared: its instructions and tools work in every subagent. A call doesn’t hang up by itself, so add a tool like end_call here.

Move the Call

Return self.transfer_to(...) from a tool or hook. The model can’t transfer on its own, so you decide when a move happens. The next subagent keeps the conversation. Pass inherit_context=False to start it fresh; it still gets the answers recorded so far.
A move only works if you return it.

Hooks

Override these to run code at key moments.

What’s Next

Workflows and Steps

Give subagents ordered steps to follow.

Support Desk Example

Three subagents handing a caller between them.