Files
obsidian-vault/Summaries/OpenClaw Multi-Agent Workflows - 4 Levels Explained.md

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_spawn for 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.