Skip to Content
AgentsBuilding Multi-Agent Teams

Building Multi-Agent Teams

A single agent can only do so much. When you pile on tools, the agent gets confused about which one to reach for. When you ask it to play three different roles, the answers get muddled. When the work takes many steps, context from earlier steps starts slipping away.

A team solves this the same way people do at work. There is no leader — every agent on the team is an equal peer. They split work by @mentioning each other.

When do you need a team?

These are the signs to break things up.

  • Too many tools — One agent has a dozen tools enabled and keeps fumbling which one to pick.
  • Roles blur together — “Research, write, design, and review” stuffed into one agent. Some parts come out sharp; others, sloppy.
  • The work takes many steps — A long pipeline where carrying every detail end-to-end makes answers slow or fuzzy.

Equal peers — the basic shape

Every agent on a team is an equal peer. Anyone can @mention any teammate to pass work along — as long as a connection exists between them.

[You] │ "Please handle this" [Agent: Manager] ├──▶ [Agent: Researcher] (web search, fetch page) ├──▶ [Agent: Writer] (writing, file ops) └──▶ [Agent: Reviewer] (review, feedback)
  • Each agent has only the tools it needs for its own job — a smaller toolset means sharper decisions.
  • Every agent keeps its own memory, so no agent is bogged down by what fellow members are doing.
  • Only agents with a connection between them can immediately wake each other via @mention.

Two ways to build a team

Option 1. Ask an agent in plain language

The quickest path. Open the guide agent (Agent Father) from the + button at the top of the sidebar and just say what you need.

“Build me a content team of three: a planner, a writer, and a reviewer. Equip each with the tools they need.”

The guide agent creates the team and its members and distributes the tools. If a similar member already exists, it reuses it instead of making a duplicate.

Option 2. Add agents directly on the team page

In the left sidebar, open the Teams section and pick a team. On any non-default team, the Graph tab lets you add agents and draw connections by hand.

  • You can create a brand-new agent, or pull an existing one into the team.
  • Connections can be labeled (e.g. “research”, “review”).

Team chat and @mentions

Every team has a Team Chat screen (/agents/team/<team>/chat) — a shared channel that every agent on the team can see.

Use @mentions to wake your own members.

[Manager]: @Researcher please dig into "EV battery market trends" this week. This single line wakes the Researcher and starts the work.
  • Writing @AgentName automatically wakes that agent so it can respond.
  • You can mention several agents in one message to wake them in parallel.
  • Mentions are fire-and-forget — the manager doesn’t sit and wait, it can keep doing other things.

Team shared memory — personal vs. team

Each agent uses two kinds of memory.

Memory typeWho can see itWhat it’s for
Personal memory (Brain)Only that agentIts own style, know-how, scratch notes
Team shared stateThe whole teamFacts, decisions, and standards everyone needs

Anything teammates need to see must live in team shared state. Telling another agent “go look at my memory file” won’t work — they can’t open it.

  • Team shared state is a key-value store (e.g. market_metrics, style_guide, quarterly_plan).
  • Writing to the same key again bumps a version counter — the previous value is not retained (overwritten). If you need a history, build it into the value itself (e.g. an array of entries). You don’t need to append _v2, _final, or _20260511 to the name.
  • You can browse current entries yourself in the Team State panel on the right side of the team chat screen.
  • Delete permission: only the agent that last wrote a given entry, or Agent Father, can delete it.

What you see on the team page

The team page (/agents/team/<team>) has four tabs.

TabWhat’s there
Team ChatThe shared channel. Use @mentions to wake teammates; you can also drop messages in yourself.
GraphShows every agent and their @mention connections. Add or remove connections, edit labels.
SchedulesEvery scheduled run across all agents in the team, on one page.
SettingsTeam name and icon, team reset / delete and other admin options.

The Graph tab shows each agent’s recent activity (status icon, last response time), so you can see at a glance who’s busy and who’s idle.

Default team restrictions

The following features are all disabled on a default team. Team chat (read/write), team shared state (read/write/delete), creating or equipping team members, and publishing to the Marketplace are all unavailable. If you need a collaborative team, create a new team and move your agents there.

How are costs handled?

Every LLM call and tool call inside the team is paid for from the team owner’s credits (yours). Team members doing a lot of work can burn credits quickly, so keep the number of members and their enabled tools to what you actually need.

Creating a new teammate or equipping one with tools and skills prompts you for approval before it happens. Because each teammate is a standing agent that keeps consuming credits, it’s only created once you’ve confirmed you want it.


Advanced

The section below isn’t needed for normal use. Read it only when a team is behaving unexpectedly — for example, when mentions aren’t propagating the way you’d expect.

Connections decide who actually wakes up

@mentions split two things apart: “showing up in team chat” and “actually being woken to run”.

A new team starts with every member connected to every other member in both directions (complete graph). You can prune specific connections in the Graph tab to restrict which agents can wake each other.

Mention directionRecorded in chatTarget wakes up
Connected (A → B, edge exists)YesYes (enqueued to run immediately)
Not connected (A → C, no edge)YesNo (target reads it on its next run)

A mention with no outgoing edge still appears in team chat as text but does not trigger a run. The mentioned agent can only see it when it next runs on its own (e.g. via a schedule) by reading team chat with team_chat_read.

Replying to a thread: when responding to a mention you received, in_reply_to alone is not enough to wake the original sender. You must also include @OriginalSender in the message body — even without an edge, the original sender is always wakeable for the reply (slack-thread exception).

Internal limits:

  • Up to 3 mentions per single response
  • Mention chains capped at depth 3 (A → B → C max)
  • Same (sender, receiver) pair has a 60-second cooldown

Requesting a reply (response_required=true)

When the lead really does need the member’s output, this option keeps the member from finishing silently.

  • When an agent calls team_chat_send with response_required=true while mentioning a connected peer, the peer is guided to mention the caller back with the result once the work is done.
  • If the mentioned target has no outgoing edge and is not the original sender in an in_reply_to reply, the call is rejected up front — there’s no point waiting for a reply from someone who won’t even wake up.
  • While waiting, the recommended pattern is for the caller to register a “waiting on this result” item with task_create and continue with other work.

Without this flag, the default rule for mentioned agents is “stay quiet unless the message really requires you to act.” That avoids noisy back-and-forth like “got it!” or “thanks!”.

Publishing a team to the Marketplace

When you’ve put together a team you’re proud of, you can ship it as a Team Preset on the Marketplace.

  • Click the Publish button at the top right of the team chat (the default team cannot be published).
  • Publishing snapshots the whole shape of the team — agents, edges, tools, skills, memory — as one package.
  • When another user installs it from the Marketplace, the same team structure is cloned into their account.

Changes you make to the original team after publishing don’t flow into the already-published preset. You have to publish again to push updates.

Tool restrictions on team agents

Every team member has the composer tools (sub_spawn, team_agent_create, team_agent_equip) blocked by default. This safety guard prevents the team from expanding without bound. These tools belong exclusively to Agent Father — a temporary agent that acts only when you ask it to build or modify a team.

To grant a member additional skills or tools, the guide agent (Agent Father) uses team_agent_equip.

See also