Run Multiple AI Agents with OpenClaw

SetupAdvanced

Run Multiple AI Agents with OpenClaw

Run multiple isolated AI agents on one Gateway. Route messages by channel, account, or user. Perfect for teams or separating work/personal.

8 min readLast updated Feb 18, 2026
Stuck?Check the troubleshooting index or ask in Discord.

Overview

Run multiple isolated AI agents on one Gateway. Each agent has its own workspace, personality, and sessions. Perfect for teams or separating work/personal assistants.

One agent = one brain
Each agent is fully isolated with its own workspace, auth profiles, and session history.

Quick Start

Create agents and route messages to them:

bash
# Create a new agent
openclaw agents add work

# List all agents
openclaw agents list --bindings

Key Concepts

agentId

One "brain" with its own workspace, auth, and sessions.

accountId

One channel account (e.g., WhatsApp "personal" vs "biz").

binding

Routes inbound messages to an agent by channel, account, or user.

Message Routing

Bindings are deterministic — most specific match wins:

  1. Direct message match (exact phone/ID)
  2. Group/channel ID match
  3. Discord role routing
  4. Account ID match
  5. Fallback to default agent

Discord Bots per Agent

Each Discord bot maps to a different agent:

json5
{
  agents: {
    list: [
      { id: "main", workspace: "~/.openclaw/workspace-main" },
      { id: "coding", workspace: "~/.openclaw/workspace-coding" },
    ],
  },
  bindings: [
    { agentId: "main", match: { channel: "discord", accountId: "default" } },
    { agentId: "coding", match: { channel: "discord", accountId: "coding" } },
  ],
}

Telegram Bots per Agent

Create bots via BotFather, then bind each to an agent:

json5
{
  agents: {
    list: [
      { id: "personal", workspace: "~/.openclaw/workspace-personal" },
      { id: "alerts", workspace: "~/.openclaw/workspace-alerts" },
    ],
  },
  bindings: [
    { agentId: "personal", match: { channel: "telegram", accountId: "default" } },
    { agentId: "alerts", match: { channel: "telegram", accountId: "alerts" } },
  ],
}

WhatsApp Numbers per Agent

Link each phone number, then route to different agents:

bash
# Login each WhatsApp account
openclaw channels login --channel whatsapp --account personal
openclaw channels login --channel whatsapp --account biz
json5
{
  agents: {
    list: [
      { id: "home", default: true, workspace: "~/.openclaw/workspace-home" },
      { id: "work", workspace: "~/.openclaw/workspace-work" },
    ],
  },
  bindings: [
    { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } },
    { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } },
  ],
}

CLI Commands

bash
# Add a new agent
openclaw agents add coding

# List agents with bindings
openclaw agents list --bindings

# Check agent status
openclaw agents status

# Remove an agent (must stop gateway first)
openclaw agents remove coding