Running Multiple Agents: How to Build an Agent Team
One agent is useful. A team of agents, each with its own specialisation, is transformative. Here's how to set it up.

Quick Answer
Run multiple agents with different roles: research agent finds information, writing agent creates content, work agent handles Slack, personal agent runs on WhatsApp. Each gets its own workspace, SOUL.md configuration, and channel connections. Frameworks like CrewAI coordinate them. Tulip's per-agent pricing makes this affordable, and one user runs six agents handling prospecting, demo building, outreach, and sales.
Why Multiple Agents Are Better Than One
A single agent tries to do everything. Research. Writing. Task management. Customer outreach. Communication across multiple channels. This creates problems:
- Context overload: The agent's memory gets cluttered with unrelated tasks.
- Personality mismatch: An agent optimized for friendly Slack banter isn't optimized for professional email composition.
- Channel isolation: Running one agent across WhatsApp, Slack, and email means a compromise of one channel compromises all.
- Scaling limits: Adding complexity to one agent makes it slower and less reliable.
Multiple agents, each focused on a single specialization, are more reliable, faster, and easier to debug. When something goes wrong, you know exactly which agent caused it. When you want to improve something, you tune one agent instead of tweaking a generalist.
The Agent Team Patterns That Work
The Research Plus Writing Pipeline
This is the simplest pattern:
- Agent 1 (Research): Searches the web, reads documents, gathers facts, compiles sources.
- Agent 2 (Writing): Takes the research output and writes the final piece (blog post, email, proposal, etc.).
Benefits: The research agent focuses on thoroughness and accuracy. The writing agent focuses on tone, structure, and clarity. Each is optimized for its task. You can swap out either agent (use a different research agent, use a different writer) without touching the other.
The Work-Life Separation
Run two agents: one for work, one for personal:
- Work Agent: Connected to Slack, work email, project management tools. Handles meeting scheduling, task updates, quick questions.
- Personal Agent: Connected to WhatsApp, personal email, personal calendar. Handles personal tasks, voice notes, reminders.
Why separate: Work conversations stay separate from personal ones. If the work agent is compromised, your personal agent is untouched. You can update work agent behavior without affecting personal agent behavior. Different credentials, different permissions, different audit trails.
The 24/7 Monitoring Agent
One agent runs continuously, monitoring systems, checking email, watching for issues:
- Monitoring Agent: Watches logs, checks health endpoints, sends alerts, escalates critical issues.
- Interactive Agent: Responds to messages, handles requests, runs on-demand tasks.
Benefits: The monitoring agent is always on. The interactive agent can be lighter-weight, only active when needed. You're not paying for a heavy agent to run 24/7 just to respond to messages occasionally.
The Full Sales Pipeline
This is where agent teams become truly powerful. One user runs six agents:
- Agent 1 (Prospecting): Searches for target companies, builds lead lists, identifies decision makers.
- Agent 2 (Research): Deep-dives into prospects, finds connection points, identifies pain points.
- Agent 3 (Outreach): Sends personalized emails and messages, tracks responses.
- Agent 4 (Demo Builder): Creates demo sites or custom examples for prospects.
- Agent 5 (Follow-up): Manages the pipeline, sends reminders, tracks engagement.
- Agent 6 (Sales): Handles objections, negotiates, closes deals.
Each agent has a single job. Each is optimized for that job. Together, they automate an entire sales process from cold outreach to close.
How to Set Up Multiple Agents in OpenClaw
Separate Workspaces
In OpenClaw, each agent runs in its own workspace. A workspace is a folder with configuration files:
/workspaces/research-agent/
SOUL.md
config.json
skills/
credentials.json
/workspaces/writing-agent/
SOUL.md
config.json
skills/
credentials.json
/workspaces/sales-agent/
SOUL.md
config.json
skills/
credentials.json
Each workspace is completely independent. Each agent has its own personality (defined in SOUL.md), its own skills, and its own credentials.
Configure Each Agent's SOUL.md
The SOUL.md file defines the agent's personality and role. For a research agent:
# Research Agent
You are a research specialist. Your job is to find, verify, and compile information.
## Your Role
- Search the web for relevant information
- Read and summarize documents
- Verify facts against multiple sources
- Compile a structured research report
## Your Constraints
- Only include verified information
- Always cite sources
- Flag uncertain information
- Stop researching after 10 sources (don't over-research)
For a writing agent, the SOUL.md is very different:
# Writing Agent
You are a professional writer. You take research and turn it into clear, engaging content.
## Your Role
- Transform research output into final content
- Maintain a consistent voice and tone
- Structure content for clarity and impact
- Edit for readability
## Your Constraints
- Keep paragraphs short (3-4 sentences max)
- Use active voice
- Write for the target audience (not experts, not beginners)
- Don't make claims without evidence from the research
Set Up Separate Channel Connections
For channel-separated agents (work agent on Slack, personal agent on WhatsApp):
Work Agent Configuration:
CHANNELS:
slack:
workspace: "company-workspace"
auth_token: "xoxb-..."
channels: ["#agent-tasks", "#general"]
email:
provider: "gmail"
account: "work@company.com"
Personal Agent Configuration:
CHANNELS:
whatsapp:
account_id: "1234567890"
api_key: "..."
telegram:
token: "..."
chat_id: "..."
Each agent connects to different channels. They never interfere with each other.
Coordinating Multiple Agents: Frameworks
CrewAI and Similar Frameworks
CrewAI is a framework for coordinating multiple AI agents. You define:
- Agents: Each agent's role, goal, and tools.
- Tasks: What each agent should do.
- A manager: An agent that coordinates the team and decides execution order.
Example CrewAI setup:
researcher = Agent(
role="Researcher",
goal="Find comprehensive market data",
tools=[web_search, document_reader]
)
writer = Agent(
role="Writer",
goal="Turn research into a compelling article",
tools=[grammar_check]
)
manager = Agent(
role="Manager",
goal="Coordinate researcher and writer",
tools=[]
)
task1 = Task(agent=researcher, description="Research topic X")
task2 = Task(agent=writer, description="Write article using research")
team = Crew(agents=[researcher, writer, manager], tasks=[task1, task2])
result = team.kickoff()
The manager agent decides: "Researcher, start searching. Writer, wait. Once the researcher finishes, Writer, create the article."
Manual Coordination with Shared Storage
You don't need a framework. You can coordinate agents using shared files or a database:
- Research agent writes results to `/shared/research-output.md`
- Writing agent reads `/shared/research-output.md` and writes to `/shared/article-draft.md`
- Editing agent reads `/shared/article-draft.md` and publishes
This is simpler than a framework and gives you more control over the workflow.
Real-World Example: The Six-Agent Sales System
Here's how the sales pipeline actually works:
- User tells the system: "Find SaaS companies in Austin with 20-50 employees using AWS."
- Prospecting Agent: Searches for companies, builds a list of 50 prospects.
- Research Agent: For each prospect, finds decision makers, recent funding, tech stack, pain points.
- Outreach Agent: Composes personalized emails to 50 decision makers, sends them.
- Demo Agent: Builds 5 custom demo sites based on prospect company types.
- Follow-Up Agent: Tracks open rates, clicks, responses. Sends follow-ups 3 days later to non-responders.
- Sales Agent: Takes qualified leads and runs them through objection handling and negotiation.
All seven agents run simultaneously or in parallel. The user doesn't touch anything. Leads flow through the pipeline automatically.
Cost: Each agent costs about $10-15/month on Tulip. Total: ~$75-100/month. The time saved: hundreds of hours annually.
Scaling Your Agent Team on Tulip
Tulip's pricing model (per-agent billing) makes agent teams affordable:
- 1 agent: ~$15/month
- 3 agents: ~$45/month
- 6 agents: ~$90/month
- 10 agents: ~$150/month
Traditional platforms charge per-instance or per-usage. Tulip charges per-agent, so you can afford a team.
Tulip also provides:
- Built-in scheduling: Run agents on a schedule (daily, weekly, on-demand).
- Logging: See exactly what each agent did.
- Secrets management: Store credentials safely for each agent.
- Auto-scaling: If your team grows, Tulip scales automatically.
Common Pitfalls to Avoid
Too Much Specialization
Don't create 20 agents. A team of 3-5 agents is typically optimal. Beyond that, coordination overhead exceeds benefits.
Unclear Handoffs
Make sure each agent knows exactly what to do with the output of the previous agent. "Agent B, read the file Agent A created" is better than "Agent B, figure out what Agent A did."
Overlapping Roles
If two agents do similar work, merge them. Duplication wastes money and causes confusion.
Insufficient Testing
Test the team end-to-end before going live. Run a test with 5 prospects before running with 500.
FAQ
What's the difference between agents in one process vs. separate processes?
Agents in one process share memory and share a crash risk. Agents in separate processes (separate machines or containers) don't. If one crashes, others continue. Separate processes are better for reliability.
Can agents talk to each other in real-time?
Yes. Use a message queue (RabbitMQ, Redis) or a shared database. Agent A publishes a message, Agent B subscribes. This enables truly concurrent workflows.
How do you prevent agents from conflicting?
Clear role definition (each agent owns one task), non-overlapping permissions (each agent only accesses what it needs), and careful testing (run a small test first).
Can one agent manage multiple channels?
Yes, but it's not ideal. A single agent handling Slack, WhatsApp, and email simultaneously can confuse context. Better to have one agent per channel, or one agent per channel-group (work agent for all work channels).
What if an agent in the middle of the pipeline fails?
The pipeline stops. Build in error handling: if the research agent fails, alert the user. If the writing agent fails, queue the task for later. Don't let silent failures break the pipeline.
Is there a maximum team size?
Practically, 10-15 agents is the upper limit before coordination becomes a nightmare. Beyond that, reorganize into sub-teams with a manager agent coordinating each sub-team.

