Remote OpenClaw Blog
OpenClaw Multi-Agent Setup 2026: Run a Team of AI Agents
8 min read ·
Remote OpenClaw Blog
8 min read ·
A single OpenClaw instance handles general tasks well, but production operations benefit from specialized agents with focused responsibilities. Running multiple agents with distinct roles produces better results than one agent trying to handle everything, for three reasons.
Each agent carries a different SOUL.md personality, different skills, and different context in its memory. An operations agent does not need sales playbooks in its context window. A content agent does not need CRM credentials. Separating roles keeps each agent's context focused and reduces token costs by 30-50% compared to a single overloaded instance, based on operator reports in the community.
Security improves when each agent only has access to the tools and credentials it needs. Your sales agent should not have access to financial accounts. Your content agent should not have execution approval for CRM writes. Multi-agent setups enforce the principle of least privilege at the agent level.
If one agent crashes or enters an error loop, the others continue operating. A single-agent setup means a crash takes down all operations. Multi-agent architectures provide fault isolation by design.
For the original multi-agent guide (still relevant for basic setups), see How to Set Up OpenClaw Multi-Agent. This guide covers the updated 2026 architecture with current best practices.
The multi-agent architecture uses separate OpenClaw instances, each running as an independent process with its own configuration directory, memory files, and channel connections.
Each agent gets its own configuration directory. The recommended structure, based on the official documentation:
~/.openclaw-atlas/ # Operations agent
├── SOUL.md
├── config.json
├── memory/
│ ├── memory.md
│ └── vault/ # Shared vault (symlink)
└── skills/
~/.openclaw-scout/ # Sales agent
├── SOUL.md
├── config.json
├── memory/
│ ├── memory.md
│ └── vault/ # Shared vault (symlink)
└── skills/
~/.openclaw-muse/ # Content agent
├── SOUL.md
├── config.json
├── memory/
│ ├── memory.md
│ └── vault/ # Shared vault (symlink)
└── skills/
~/.openclaw-shared/ # Shared vault (source)
├── contacts.md
├── projects.md
└── handoffs.md
Agents share context through a shared vault directory that is symlinked into each agent's memory folder. The vault contains reference documents (contacts, projects, company info) that all agents can read. Each agent maintains its own memory.md for working memory and conversation history.
Do not point multiple agents at the same memory.md file. This causes write conflicts and memory corruption. Use separate working memory files with a shared read-only vault.
# Create directories for each agent
mkdir -p ~/.openclaw-atlas/memory/vault
mkdir -p ~/.openclaw-atlas/skills
mkdir -p ~/.openclaw-scout/memory/vault
mkdir -p ~/.openclaw-scout/skills
mkdir -p ~/.openclaw-muse/memory/vault
mkdir -p ~/.openclaw-muse/skills
# Create shared vault
mkdir -p ~/.openclaw-shared
Each agent needs a distinct SOUL.md that defines its role, personality, and operational boundaries. The SOUL.md is the single most important configuration file — it determines how the agent behaves, what it prioritizes, and how it communicates.
Example for Atlas (operations):
# Atlas — Chief of Staff
## Role
You are Atlas, an AI chief of staff responsible for daily operations,
calendar management, email triage, and task coordination.
## Boundaries
- You handle scheduling, email, and task management
- You do NOT handle sales outreach (route to Scout)
- You do NOT create content (route to Muse)
- You escalate financial decisions above $500 to human approval
## Communication Style
Professional, concise, proactive. Morning briefing at 7:00 AM.
End-of-day summary at 6:00 PM.
For production-ready SOUL.md files with full skill integration, the marketplace personas include pre-configured Atlas, Scout, Muse, and Compass profiles.
Each agent's config.json should only include the credentials and tool permissions it needs:
// Atlas config.json — operations permissions only
{
"name": "Atlas",
"configDir": "~/.openclaw-atlas",
"port": 3001,
"tools": {
"calendar": true,
"email": true,
"tasks": true,
"crm": false,
"social": false,
"finance": false
},
"execApprovals": {
"required": ["email_send", "calendar_modify"],
"auto": ["email_read", "calendar_read", "task_read"]
}
}
// Scout config.json — sales permissions only
{
"name": "Scout",
"configDir": "~/.openclaw-scout",
"port": 3002,
"tools": {
"calendar": false,
"email": true,
"tasks": false,
"crm": true,
"social": true,
"finance": false
},
"execApprovals": {
"required": ["crm_write", "email_send"],
"auto": ["crm_read", "social_read"]
}
}
Routing determines which agent handles incoming messages. Configure routing in a shared routing config or use channel-based separation:
// routing.json
{
"rules": [
{
"match": {"channel": "telegram", "keywords": ["schedule", "meeting", "calendar", "task"]},
"agent": "atlas",
"port": 3001
},
{
"match": {"channel": "telegram", "keywords": ["lead", "prospect", "deal", "pipeline", "sales"]},
"agent": "scout",
"port": 3002
},
{
"match": {"channel": "telegram", "keywords": ["blog", "post", "content", "article", "social"]},
"agent": "muse",
"port": 3003
},
{
"match": {"channel": "telegram", "default": true},
"agent": "atlas",
"port": 3001
}
]
}
# Create shared reference documents
echo "# Shared Contacts" > ~/.openclaw-shared/contacts.md
echo "# Active Projects" > ~/.openclaw-shared/projects.md
echo "# Agent Handoffs" > ~/.openclaw-shared/handoffs.md
# Symlink vault into each agent's memory
ln -sf ~/.openclaw-shared/* ~/.openclaw-atlas/memory/vault/
ln -sf ~/.openclaw-shared/* ~/.openclaw-scout/memory/vault/
ln -sf ~/.openclaw-shared/* ~/.openclaw-muse/memory/vault/
# Start each agent on a different port
OPENCLAW_DIR=~/.openclaw-atlas openclaw start --port 3001 &
OPENCLAW_DIR=~/.openclaw-scout openclaw start --port 3002 &
OPENCLAW_DIR=~/.openclaw-muse openclaw start --port 3003 &
For production deployments, use systemd services or Docker containers instead of background processes. See our Docker Compose guide for containerized multi-agent setups.
This is a production configuration used by several solo founders in the community. Three agents coordinate to cover the core operational needs of a small business.
Marketplace
Free skills and AI personas for OpenClaw — browse the marketplace.
Browse the Marketplace →When Atlas receives an email from a prospect, it writes a handoff note to ~/.openclaw-shared/handoffs.md and routes the next interaction to Scout. When Scout closes a deal, it writes the client details to the shared vault for Atlas to begin onboarding workflows. When Atlas identifies a content opportunity from a client call, it creates a brief in the shared vault for Muse to pick up.
This coordination is file-based and asynchronous. Agents do not call each other directly. They communicate through the shared vault, which each agent checks on its configured schedule.
The simplest approach: assign each agent its own messaging channel. Atlas gets the primary Telegram chat. Scout gets a dedicated sales channel. Muse gets a content channel. No routing logic needed — each agent only listens to its assigned channel.
For operators who want a single channel (e.g., one Telegram chat for everything), keyword routing sends messages to the appropriate agent based on content. This requires a lightweight routing proxy that inspects incoming messages and forwards them to the correct agent port.
Route messages based on who sent them. Team members in the sales group go to Scout. The founder's direct messages go to Atlas. External contacts go to the default handler.
For advanced routing patterns including priority queuing and fallback chains, see the Operator Suite guide.
Set up a cron job that pings each agent's health endpoint every 5 minutes:
# Check agent health every 5 minutes
*/5 * * * * curl -s http://localhost:3001/health || systemctl restart openclaw-atlas
*/5 * * * * curl -s http://localhost:3002/health || systemctl restart openclaw-scout
*/5 * * * * curl -s http://localhost:3003/health || systemctl restart openclaw-muse
Each agent writes logs to its own directory. For centralized monitoring, tail all agent logs into a single dashboard:
# Tail all agent logs
tail -f ~/.openclaw-atlas/logs/*.log \
~/.openclaw-scout/logs/*.log \
~/.openclaw-muse/logs/*.log
For a visual dashboard, see our Mission Control setup guide.
Each agent consumes LLM API tokens independently. Monitor per-agent costs by checking API usage dashboards (Anthropic Console, OpenAI Dashboard, or OpenRouter). A typical 3-agent setup costs $30-80/month in API tokens depending on message volume and model selection. See our cost optimization guide for reduction strategies.
Update agents one at a time, not all at once. Start with the least critical agent, verify stability for 24 hours, then update the next. This prevents a bad update from taking down all agents simultaneously. Pin versions in package.json and read our update survival guide before upgrading.
On a typical 4GB VPS ($10-15/month), you can comfortably run 2-3 OpenClaw agent instances. Each instance uses approximately 500MB-1GB of RAM depending on loaded skills and memory size. A 8GB VPS supports 4-6 agents. For larger teams, use separate VPS instances or Docker containers with resource limits to prevent one agent from starving others.
Not by default. Each OpenClaw instance maintains its own memory in a separate ~/.openclaw/ directory. To share context between agents, configure a shared vault directory that multiple instances can read from. Use file-based handoff documents or a shared Obsidian vault for structured knowledge sharing. Do not point multiple agents at the same memory.md file — use separate files with a shared reference directory.
Multi-agent refers to running separate OpenClaw instances with distinct roles (Atlas for ops, Scout for sales, Muse for content). The Operator Suite is a pre-configured bundle from the Remote OpenClaw marketplace that includes SOUL.md files, skills, memory systems, and routing rules for a coordinated multi-agent team. The Operator Suite saves the 20-40 hours of manual configuration required to build a multi-agent setup from scratch.