Field Notes/Multi-Agent
💡 Solution

Run Multiple Isolated Agents in One Gateway

3 min read

One gateway. Multiple personalities. Complete isolation.

I run two agents through a single OpenClaw process — different workspaces, tools, and purposes. They share nothing.

Why Split?

Cramming everything into one agent was a mess. The problem wasn't capability — it was context. Calendar management and Kubernetes deployments don't belong in the same brain.

  • Arun — Personal assistant, creative work, daily tasks (MacBook)
  • Dao — Infrastructure, monitoring, automation (Mac Mini)

Each gets its own workspace, SOUL.md, and skills. Different channel, different agent.

How It Works: agents.list

A single file tells OpenClaw which agent handles which channels:

# agents.list — workspace_path | channels
~/.openclaw/agents/arun | slack:C0PERSONAL,telegram:jay
~/.openclaw/agents/dao | slack:C0INFRA,telegram:alerts

Message comes in → OpenClaw checks the channel → routes to the right agent. Instant, no overlap.

Full Isolation

This isn't just routing — it's complete separation:

  • Separate workspaces — Own ~/.openclaw/agents/[name] directory
  • Separate memory — Can't read each other's MEMORY.md
  • Separate skills — Dao has infra skills; Arun doesn't know they exist
  • Separate tools — Different TOOLS.md, different capabilities

Each agent is good at its job because it's only doing that job.

Setup

  1. Create workspace directories for each agent
  2. Add identity files (SOUL.md, AGENTS.md) to each
  3. Create agents.list with routing rules
  4. Restart the gateway
mkdir -p ~/.openclaw/agents/arun
mkdir -p ~/.openclaw/agents/dao
# Add identity files, create agents.list
openclaw gateway restart

Advanced Routing

Beyond channels, you can route by:

  • Account — Different Slack workspaces → different agents
  • User — Specific users get specific agents
  • Pattern matching — Route by channel name patterns

One Process, Many Minds

No multiple Node processes or gateways. One OpenClaw process with smart routing. Isolation is logical, not physical — agents share CPU and memory, but nothing else.

Start with one agent. When you want different personalities for different contexts, add another. The routing is there when you need it.