2.8 KiB
OpenClaw Multi-Agent Workflows - 4 Levels Explained
Source: https://www.reddit.com/r/openclaw/comments/1r2euvp/this_is_how_ive_learned_to_create_multiagent/ Summarized: 2026-02-23
TL;DR
OpenClaw has 4 levels of multi-agent support built-in, from simple persistent agents to full A2A Protocol orchestration. No Docker required for levels 1-3—they all run in a single gateway process.
Level 1: Multiple Persistent Agents (Built-in)
Define isolated agents in config, each with their own workspace, system prompt, model, and tools:
agents:
list:
- id: researcher
default: true
workspace: ~/.openclaw/workspace-research
- id: coder
workspace: ~/.openclaw/workspace-code
bindings:
- agentId: researcher
match: { channel: telegram, accountId: research-bot }
- agentId: coder
match: { channel: discord, guildId: "123456" }
Each agent has full isolation: separate session history, model config, tool permissions.
Level 2: Agent-to-Agent Communication (Built-in)
Enable tools.agentToAgent for agents to talk via sessions_send:
tools:
agentToAgent:
enabled: true
allow: ["researcher", "coder", "writer"]
- Ping-pong conversations (up to 5 turns by default)
sessions_spawnfor background sub-agents that report back- Closest to "orchestrator delegates to specialist" pattern
Level 3: Cross-Agent Delegation (3-Level Hierarchy)
Work around single-level limits:
Orchestrator (main agent)
├─ sessions_send → Specialist A (sibling main agent)
│ ├─ sessions_spawn → subagent A1
│ └─ sessions_spawn → subagent A2
└─ sessions_send → Specialist B (sibling main agent)
├─ sessions_spawn → subagent B1
└─ sessions_spawn → subagent B2
Config uses subagents.allowAgents for cross-agent spawning.
Level 4: True Multi-Agent Orchestration (A2A Protocol)
For advanced use cases with intelligent routing, review, retries, synthesis:
- a2a-adapter: Wraps OpenClaw agents as A2A Protocol servers
- Mix-and-match: OpenClaw + CrewAI + LangChain + n8n
- Can run as local Python processes or remote agents
Example:
from a2a_adapter import load_a2a_agent, serve_agent
adapter = await load_a2a_agent({
"adapter": "openclaw",
"agent_id": "researcher",
"thinking": "low",
"async_mode": True,
})
serve_agent(agent_card=agent_card, adapter=adapter, port=9001)
Key Takeaways
| Level | Complexity | Setup |
|---|---|---|
| 1 | Low | Config only |
| 2 | Low-Medium | Config + enable tool |
| 3 | Medium | Config + cross-agent permissions |
| 4 | High | A2A Protocol + external orchestrator |
Bottom line: OpenClaw's built-in multi-agent (levels 1-3) requires only ~/.openclaw/config.yaml changes—no additional infrastructure needed.