Multi-Agent Systems

One model-driven agent handles a lot, but some problems want a team — a specialist per subtask, or a coordinator delegating to workers. Strands builds multi-agent systems from the same minimal parts, most elegantly by making an agent a tool another agent can call, so the model-driven approach scales up without new machinery.

A single agent has limits — too many tools, too broad a scope, or genuinely separable subtasks. Multi-agent systems address this by composing several agents. This post covers how Strands does multi-agent, centered on its most characteristic pattern (agents as tools), plus the orchestration patterns available, and — importantly — when multi-agent is worth it versus a single agent. It’s the model-driven approach scaled from one agent to many.

When one agent isn’t enough

Before how, the when, because multi-agent adds complexity and is often reached for too early. A single model-driven agent is capable, and you should prefer it until a specific limit forces more:

The discipline (echoing the CrewAI and multi-agent lessons): prefer a single agent until a real limit forces multi-agent. Multi-agent multiplies cost (more model calls), latency, and failure modes, so it must earn its place. When it does, Strands offers a few composition patterns.

Agents as tools: the characteristic pattern

Strands’s most elegant multi-agent pattern falls straight out of the model-driven design: an agent can be a tool that another agent calls. Because a Strands agent is invoked like a function and a tool is just a function, you can wrap an agent as a tool and give it to another agent:

Coordinator agent
  tools: [ research_agent (as a tool), writer_agent (as a tool), calculator ]
    → the coordinator's model decides to call research_agent, then writer_agent,
      just as it would call any tool

This is beautifully consistent with everything prior: the coordinator is a normal model-driven agent, and the specialist agents are just tools in its toolset. The coordinator’s model drives — deciding when to delegate to which sub-agent — exactly as it decides when to call any tool (the tools post). No new orchestration machinery is needed; multi-agent is composition of agents through the tool interface, and the model-driven loop handles the coordination. This is the model-driven approach scaling up: the coordinator model plans the delegation the same way a single agent plans tool use.

The benefits mirror the single-agent tool lessons: each specialist agent has a focused tool set and prompt (reliable, expert), and the coordinator sees them as a few clear tools (reliable delegation). It’s the “few, well-described tools” discipline applied at the agent level — specialists as clean, described capabilities the coordinator draws on.

Other orchestration patterns

Beyond agents-as-tools, Strands supports patterns for different multi-agent shapes (the framework provides primitives for these):

The choice among these mirrors the single-vs-multi and autonomy-vs-control themes: agents-as-tools (coordinator delegates dynamically) is the most model-driven (the coordinator’s model decides delegation), while more structured patterns (sequential, graph) add explicit control over how agents interact. Strands, true to its philosophy, makes the model-driven delegation (agents-as-tools) the natural default, with more structured patterns available when you need defined multi-agent flow — the same “structure where you need predictability, autonomy where you need flexibility” balance, now at the agent-composition level.

Keeping multi-agent reliable (and worth it)

Multi-agent amplifies both capability and the failure modes, so the disciplines matter more:

The overarching guidance: multi-agent is powerful but earns its complexity only when a single agent genuinely can’t do the job — and when it does, keep each agent focused, right-size its model, bound its loop, and observe the whole. Strands makes composing agents natural (agents-as-tools), but naturalness isn’t a reason to over-decompose; a well-equipped single agent beats a needlessly fragmented team. The next post covers observing and operating all of this — Strands’s observability and production story.

Key takeaways

Further reading

Sources & References