Agno Team Execution Modes (TeamMode): Coordinate, Route, Broadcast, and Tasks Explained

Agno supports four Team execution modes defined by the TeamMode enum: coordinate (default supervisor), route (single specialist), broadcast (parallel all-members), and tasks (autonomous task decomposition).

The agno-agi/agno repository provides a flexible Team class for orchestrating multiple AI agents. Understanding the available Team execution modes is essential for controlling how the team leader coordinates work among member agents and synthesizes final responses.

Understanding the TeamMode Enum

The TeamMode enum is defined in libs/agno/agno/team/mode.py. It provides four distinct execution strategies that determine how the Team object (the leader) interacts with its member agents.

class TeamMode(str, Enum):
    coordinate = "coordinate"
    route = "route"
    broadcast = "broadcast"
    tasks = "tasks"

Each mode changes the runtime behavior implemented in libs/agno/agno/team/_run.py and the initialization logic in libs/agno/agno/team/_init.py.

The Four Team Execution Modes

Coordinate Mode (Default)

coordinate is the default supervisor pattern. When this mode is active, the team leader selects specific members, crafts individual tasks for each, runs them sequentially, and synthesizes the members’ responses into a final answer. This mode provides the most control over the workflow and is ideal when tasks require careful orchestration between multiple specialists.

Route Mode

route implements a router pattern. The leader forwards the entire user request to a single specialist member and returns that member’s response directly to the user without modification. This mode is optimized for speed when you know the request belongs to a specific domain, and it sets respond_directly=True internally.

Broadcast Mode

broadcast uses a broadcast pattern. The leader sends the same task to all members in parallel and returns the combined or selected responses. This mode is useful when you want multiple perspectives on the same query or need to aggregate results from different specialized agents. It forces delegate_to_all_members=True.

Tasks Mode

tasks enables autonomous task-based execution. The leader breaks the overall goal into a shared task list, delegates specific tasks to members, and loops until the task list is empty. This mode supports complex, multi-step workflows where the team must maintain state across iterations. Unlike the other modes, tasks is only selectable explicitly and cannot be inferred from boolean flags.

How TeamMode Is Resolved at Runtime

When a Team is instantiated via libs/agno/agno/team/team.py, the constructor in libs/agno/agno/team/_init.py (lines 88-109) resolves the effective mode through the following logic:

Explicit mode resolution takes precedence. If mode= is passed to the constructor, that value wins and the related boolean flags are normalized. For example, mode=TeamMode.route forces respond_directly=True and delegate_to_all_members=False.

Implicit inference occurs when mode is omitted:

  • respond_directly=True ⇒ TeamMode.route
  • delegate_to_all_members=True ⇒ TeamMode.broadcast
  • Otherwise ⇒ TeamMode.coordinate

The tasks mode is never inferred; it must be set explicitly via mode=TeamMode.tasks.

Code Examples for Each TeamMode

Example: Coordinate Mode (Default)

from agno.team import Team
from agno.agent import Agent

assistant = Agent(name="assistant")
team = Team(
    name="coord-team",
    members=[assistant],
    # No mode argument → defaults to TeamMode.coordinate

)

# The leader coordinates the assistant and synthesizes its reply

team.run("Summarise the latest news about AI.")

Source: Construction logic in libs/agno/agno/team/_init.py lines 88-109.

Example: Route Mode

from agno.team import Team, TeamMode
from agno.agent import Agent

researcher = Agent(name="researcher")
team = Team(
    name="router-team",
    members=[researcher],
    mode=TeamMode.route,          # forces respond_directly=True

)

# The whole request is routed to researcher; raw response returned

team.run("Give me the raw JSON schema for a product catalog.")

Source: TeamMode.route handling in libs/agno/agno/team/_init.py lines 91-97.

Example: Broadcast Mode

from agno.team import Team, TeamMode
from agno.agent import Agent

agent_a = Agent(name="A")
agent_b = Agent(name="B")
team = Team(
    name="broadcast-team",
    members=[agent_a, agent_b],
    mode=TeamMode.broadcast,      # forces delegate_to_all_members=True

)

# Both agents receive the same prompt; responses are aggregated

team.run("Explain quantum computing in one paragraph.")

Source: TeamMode.broadcast handling in libs/agno/agno/team/_init.py lines 98-100.

Example: Tasks Mode

from agno.team import Team, TeamMode
from agno.agent import Agent

planner = Agent(name="planner")
writer = Agent(name="writer")
team = Team(
    name="tasks-team",
    members=[planner, writer],
    mode=TeamMode.tasks,          # enables autonomous task loop

    max_iterations=5,
)

# The leader decomposes the goal into subtasks and iterates

team.run("Create a short tutorial on how to use Agno Teams.")

Source: Tasks mode is recognized in libs/agno/agno/team/_init.py lines 101-104 and drives the task-loop logic in libs/agno/agno/team/_run.py.

Summary

  • Agno provides four Team execution modes (coordinate, route, broadcast, tasks) defined in libs/agno/agno/team/mode.py.
  • coordinate is the default supervisor pattern that synthesizes member responses into a final answer.
  • route forwards the entire request to a single specialist and returns the raw response directly.
  • broadcast sends the same task to all members in parallel and aggregates their responses.
  • tasks enables autonomous execution where the leader maintains a shared task list and iterates until completion.
  • Mode resolution occurs in libs/agno/agno/team/_init.py, with explicit mode= arguments taking precedence over implicit boolean flag inference.

Frequently Asked Questions

What is the default Team execution mode in Agno?

The default Team execution mode is coordinate. When you instantiate a Team without specifying the mode parameter and without setting respond_directly=True or delegate_to_all_members=True, the constructor in libs/agno/agno/team/_init.py automatically selects TeamMode.coordinate. This mode uses a supervisor pattern where the team leader orchestrates members sequentially and synthesizes their outputs.

How do I switch between Team execution modes?

You switch modes by passing the mode parameter when creating a Team instance. Import TeamMode from agno.team and set mode=TeamMode.route, mode=TeamMode.broadcast, or mode=TeamMode.tasks. According to the initialization logic in libs/agno/agno/team/_init.py, this explicit setting overrides any boolean flags like respond_directly and normalizes them to match the selected mode's requirements.

When should I use broadcast mode versus coordinate mode?

Use broadcast mode when you need multiple perspectives on the same input simultaneously, such as gathering diverse opinions or running parallel analyses across specialized agents. Use coordinate mode when the task requires sequential dependency handling or when the team leader must synthesize intermediate results into a coherent final answer. The broadcast mode delegates to all members in parallel, while coordinate selects specific members and orchestrates them sequentially.

Can I use TeamMode with custom agent configurations?

Yes, Team execution modes work with any valid Agent configuration. The Team class in libs/agno/agno/team/team.py accepts a members list containing fully configured Agent instances with custom tools, knowledge bases, and instructions. The selected TeamMode determines how the team leader invokes these agents—whether routing to one, broadcasting to all, or coordinating sequentially—without restricting the underlying agent capabilities.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →