I Run 3 AI Agents. Here's How They're Organized.


I’ve been running AI agents for a few months now. Started with one. Now I run three — each with a clear job, its own workspace, and access to the tools it needs.

This is how I set it up and what I’ve learned.

The agents

Jaspa is the main operator. It handles inbox triage, project work, deployments, research, and anything that doesn’t fit neatly into a category. It’s the orchestrator — it can spawn sub-agents and delegate tasks across the other two.

Gari handles social media. Drafting posts, managing content calendars, publishing to X and LinkedIn through Post Bridge. It has its own Telegram bot and Slack presence, so I can message it directly when I need something posted.

Erika manages events. She tracks upcoming events, handles registrations, and keeps my calendar in order. Same setup — own bot, own workspace.

All three run on OpenClaw, an open-source framework for running persistent AI agents. They share a single server (an 8GB Hetzner VPS) but operate independently.

The three agents showing up as team members in Slack

Why three instead of one

One agent doing everything sounds simpler. In practice, it’s not.

Context windows fill up. A single agent juggling emails, social posts, event management, and code deployments starts losing track of things. Splitting by domain keeps each agent focused.

It also makes the system more resilient. If I’m iterating on social strategy with Gari, Jaspa is still triaging my inbox on schedule. They don’t block each other.

How they communicate

The agents can message each other directly using session keys. Jaspa can tell Gari to draft a post. Erika can alert Jaspa about a scheduling conflict. It’s simple — just text messages between sessions.

In practice, most coordination goes through me. I message the right agent for the right task. The inter-agent communication is there for when one agent needs to hand something off without my involvement.

The workspace structure

Each agent gets:

  • Its own workspace — separate files, memory, and context
  • Its own identity — SOUL.md defines personality and boundaries
  • Its own tools — Gari has Post Bridge access, Erika has calendar tools, Jaspa has everything
  • Its own channels — each has a Telegram bot and Slack account

They share the server and some config, but their working memory is isolated. Gari doesn’t see Jaspa’s inbox triage notes. Jaspa doesn’t see Gari’s draft tweets. Clean separation.

What actually works

Scheduled tasks are the killer feature. Jaspa checks my inbox every 4 hours during work hours, archives noise, and flags anything urgent to a Slack channel. I didn’t ask it to do this — I set up the process once and it just runs.

Quick commands save real time. I type /xmatt here's a thought about AI agents in Telegram, and Gari drafts two versions, I pick one, and it publishes. The whole loop takes 30 seconds.

Memory files are underrated. Each agent writes daily notes and maintains long-term memory. When a new session starts, it reads its memory files and picks up where it left off. No re-explaining context.

What I’d do differently

Start with one agent and add more only when you feel the pain of overloading it. I added Gari when social posting became a regular task. I added Erika when event management started cluttering Jaspa’s context.

Don’t over-architect. Three agents with clear boundaries beats five agents with overlapping responsibilities.

The stack

  • OpenClaw — agent framework (open source)
  • Claude Opus — the model powering all three
  • Telegram + Slack — communication channels
  • Hetzner VPS — 8GB RAM, runs everything
  • Post Bridge — social media publishing
  • Composio — tool integrations (Gmail, Calendar, etc.)

Total cost: about $50/month for the server and API usage. The agents handle work that would take me 1-2 hours daily.

That’s it. Three agents, clear roles, separate workspaces. Nothing fancy — just practical automation that compounds over time.