Practical Tutorial

How to Build 3 AI Agents That Run Your Business

A step-by-step guide to creating a CEO, CTO, and CMO agent that coordinate, learn, and operate 24/7. Copy-paste configs included.

~12 min read / 7 steps / working configs

I run an agency with 3 AI agents. A CEO that delegates, a CTO that ships code, a CMO that creates content and generates leads. My daily involvement is about 30 minutes, with at least 3+ hours saved per day.

This guide shows you exactly how to build the same system. Every config is real, pulled from my running setup. Some of you will implement this in a weekend. Others will realize they want help, and that's fine too.

Let's build.


01

Prerequisites and Setup

You need a VPS ($5-20/month on Hetzner, DigitalOcean, or any provider). Ubuntu 22+ works best. 2GB RAM minimum, 4GB recommended if running 3 agents.

terminal
# Install OpenClaw
npm install -g openclaw

# Initialize your workspace
openclaw init my-agency
cd my-agency

# Set your API key (Anthropic, OpenAI, or any provider)
openclaw config set apiKey YOUR_KEY

# Start the gateway
openclaw gateway start
Cost breakdown: VPS $5-20/month + API costs ~$30-60/month for 3 active agents. Total: under $80/month to run your entire back-office.
02

Design Your Agent Team

Before writing any config, decide what each agent owns. The key principle: clear boundaries, zero overlap. Every task belongs to exactly one agent.

Here's my setup:

CEO
Tony
Strategy, delegation, cross-agent coordination, meeting notes, digests
CTO
Pieter
Code, infrastructure, product, deploys, PRDs, bug reviews
CMO
Hormozi
Content, marketing, lead gen, analytics, ad copy, social engagement

Your team will look different. Maybe you need a Sales agent, a Support agent, or a Research agent. The architecture is the same regardless.

Rule of thumb: Start with 2 agents. Add a third only when you feel the bottleneck. Three agents that coordinate well beat five that trip over each other.
03

Create SOUL.md Files

Each agent needs a personality file. This isn't fluff. SOUL.md defines how the agent thinks, what it prioritizes, and how it communicates. A CEO agent without a strategic mindset will just answer questions instead of delegating.

agents/ceo/SOUL.md
# SOUL.md - CEO Agent

## Identity
You are the CEO. You orchestrate, delegate, and make
strategic decisions. You do NOT do the work yourself.

## How You Operate
- Read all agents' memory before making decisions
- Delegate tasks to CTO (code/infra) or CMO (content/marketing)
- Send daily digests to the founder (morning + evening)
- Extract action items from meetings automatically
- Monitor system health across all agents

## What You Don't Do
- Write code (that's the CTO's job)
- Create content (that's the CMO's job)
- Make decisions without data

## Communication Style
Direct. Data-driven. Strategic. Like a founder
talking to a co-founder, not an assistant.
agents/cto/SOUL.md
# SOUL.md - CTO Agent

## Identity
You are the CTO. You ship code, manage infrastructure,
and build the product. Speed over perfection.

## How You Operate
- Generate PRDs from the product roadmap
- Implement features in code, commit, deploy
- Review the live product for bugs every evening
- Keep infrastructure healthy (monitoring, backups)
- Study technical patterns daily (indie hacker style)

## Principles
- Ship fast, iterate faster
- Vanilla HTML/CSS/JS when possible (less complexity)
- Git commit after every meaningful change
- If it works and it's ugly, ship it. Fix later.
agents/cmo/SOUL.md
# SOUL.md - CMO Agent

## Identity
You are the CMO. Every piece of content exists to
drive revenue. Not awareness. Not engagement. Revenue.

## How You Operate
- Create daily content based on analytics (what worked)
- Monitor social platforms for engagement opportunities
- Generate ad copy variants (personas x angles x variants)
- Track performance metrics and adjust strategy
- Write in the founder's voice (ghostwriting)

## Rules
- Every post needs: Hook > Value > CTA
- Run AI detection before publishing (must pass)
- If it doesn't lead to revenue, it doesn't get published
- Numbers beat opinions. Always.
The more specific, the better. Vague SOULs produce vague work. Tell the agent exactly what it should and shouldn't do. Include examples of good output vs bad output.
04

Set Up Persistent Memory

This is the secret sauce. Without memory, agents restart from zero every session. With memory, they compound knowledge daily. The difference is massive.

Each agent gets two memory layers:

directory structure
# Each agent has its own workspace
workspaces/
  ceo/
    MEMORY.md          # Long-term curated memory
    memory/
      2026-02-11.md    # Daily notes (auto-generated)
      2026-02-10.md
      learnings/
        pending.md     # Unvalidated patterns
        validated.md   # Confirmed learnings (2+ occurrences)
  cto/
    MEMORY.md
    memory/...
  cmo/
    MEMORY.md
    memory/...

MEMORY.md is the curated long-term brain. The agent reads it every session. It contains: who they work with, key decisions, project context, learned patterns, what works and what doesn't.

Daily notes are auto-generated. Each session, the agent writes what happened. Next session, it reads yesterday's notes for continuity.

workspaces/cmo/MEMORY.md (example)
# MEMORY.md - CMO Long-term Memory

## Content Strategy
- LinkedIn pillars: AI, Growth, GTM, Solopreneurship
- All content in English (international audience)
- Best performing day: Monday (2x avg impressions)
- Contrarian + personal hooks = 16x reach vs average

## What Works
- Hook with a bold claim, then back it with data
- Posts with specific numbers outperform vague ones
- Carousel posts get 3x more saves than text posts

## What Doesn't Work
- Generic motivational content (low engagement)
- Posts longer than 1200 characters (drop-off)
- Publishing before 7am (audience not active)

## Active Campaigns
- TechBricks: 2,557 LinkedIn contacts enriched
- Pete Tong: 36 ad copy variants generated
- Claw4Growth: daily X engagement (10 posts/day)
Critical: Tell your agents to WRITE things down in AGENTS.md. "Mental notes" don't survive session restarts. Files do. Add a rule: "After every important conversation, update MEMORY.md."
05

Build the Shared Blackboard

Agents need to coordinate without you playing middleman. The blackboard is a shared file that all agents read and write to. Cross-team knowledge lives here.

┌─────────────┐ ┌─────────────────┐ ┌─────────────┐ │ CEO Agent │────▶│ │◀────│ CTO Agent │ │ (Tony) │ │ BLACKBOARD │ │ (Pieter) │ └─────────────┘ │ │ └─────────────┘ │ shared context │ ┌─────────────┐ │ decisions │ │ CMO Agent │────▶│ cross-team info │ │ (Hormozi) │ │ │ └─────────────┘ └─────────────────┘
shared/blackboard.md
# Shared Blackboard
# All agents read this. Tag your entries.

## Business Context
- [ceo] Q1 focus: launch Claw4Growth managed hosting
- [ceo] Revenue target: $5k MRR by March

## Tech Decisions
- [cto] Migrated to Cloudflare Pages (faster deploys)
- [cto] JARVIS dashboard live at jarvis.ironads.agency

## Content & Marketing
- [cmo] Top performing content: contrarian + personal hooks
- [cmo] LinkedIn best day: Monday (2x avg impressions)
- [cmo] 4,500+ leads enriched across all campaigns

## Blockers
- [ceo] Vercel token expired, need renewal from founder

The blackboard syncs automatically every night. An auto-compound job reads each agent's memory and extracts cross-team relevant nuggets.

06

Automate with Cron Jobs

This is where it gets powerful. Cron jobs turn your agents from reactive assistants into proactive workers. They run on schedule, no prompts needed.

My system runs 28+ jobs daily. Here's the schedule:

cron schedule (all times in local timezone)
# TRAINING (while you sleep)
01:00  CEO studies leadership (Mon/Wed/Fri hard, rest soft)
01:30  CTO studies tech patterns (same alternation)
02:00  CMO studies marketing frameworks

# BUILDING (early morning)
02:30  CTO generates PRD from roadmap
03:00  CTO implements features, pushes to git

# MARKETING (pre-work hours)
05:00  CMO finds X posts, writes engagement comments
06:00  CMO extracts LinkedIn analytics
06:15  CMO analyzes performance data
06:30  CMO creates today's content (uses analytics)

# DIGESTS (your morning briefing)
07:00  CEO morning digest -> Telegram
07:20  CTO morning digest -> Telegram
07:40  CMO morning digest -> Telegram

# EVENING (review & learn)
18:00  CTO reviews product interface for bugs
20:00  All three: evening digests
22:00  Auto-compound: extract learnings from today
22:45  Blackboard sync across agents
23:00  Full backup to GitHub

Here's how you create a cron job in OpenClaw:

example: daily content creation job
# In your OpenClaw config or via API
{
  "name": "content-factory-daily",
  "agentId": "cmo",
  "schedule": {
    "kind": "cron",
    "expr": "30 6 * * *",
    "tz": "Europe/Rome"
  },
  "payload": {
    "kind": "agentTurn",
    "message": "Create today's LinkedIn content.
Read yesterday's analytics. Use the top-performing
format. Write in founder's voice. Run AI detection.
Send to Telegram for approval with buttons."
  },
  "delivery": {
    "mode": "announce",
    "channel": "telegram"
  }
}
Start with 3-5 cron jobs. Morning digest, content creation, and evening recap. Add more as you trust the system. Going from 0 to 28 jobs on day one is a recipe for chaos.
07

Connect Human-in-the-Loop

Full autonomy sounds cool but breaks things. The sweet spot is augmented autonomy: agents do 90% of the work, you approve the remaining 10%.

I use Telegram with inline buttons. Every content piece, every task, every decision gets sent to me with approve/reject buttons. One tap and it's done.

what I actually see on Telegram
// Content approval card from CMO
🟠 LinkedIn Post Ready

Hook: I replaced my entire team with 3 AI agents.

[Full post text here]

AI Detection: risk_level = low ✓
Format: Text post | Pillar: AI

[✅ Approve]  [✏️ Edit]  [❌ Reject]

// Meeting action items from CEO
📋 New Action Item

Meeting: Q1 Strategy Review
Task: Update pricing page
Assigned: CTO (Pieter)
Priority: High

[✅ Approve]  [✏️ Edit]  [❌ Reject]

The approval flow is simple:

The compound effect: Every rejection teaches the system. After a few weeks, rejection rate drops below 10%. The agents genuinely improve. This isn't a static prompt, it's a learning system.

The Full Architecture

Here's everything connected. One gateway, three agents, shared memory, automated scheduling, human approval loop.

┌──────────────┐ │ FOUNDER │ │ (Telegram) │ └──────┬───────┘ │ approve / reject ┌──────▼───────┐ │ GATEWAY │ │ (OpenClaw) │ └──┬───┬───┬───┘ │ │ │ ┌────────────┘ │ └────────────┐ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ CEO │ │ CTO │ │ CMO │ │ Tony │ │ Pieter │ │ Hormozi │ │ │ │ │ │ │ │ SOUL.md │ │ SOUL.md │ │ SOUL.md │ │ MEMORY.md│ │ MEMORY.md│ │ MEMORY.md│ │ skills/ │ │ skills/ │ │ skills/ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ └───────┬───────┘───────┬───────┘ ▼ ▼ ┌──────────┐ ┌──────────┐ │BLACKBOARD│ │ CRON │ │ (shared) │ │ (28 jobs)│ └──────────┘ └──────────┘

Ready to build yours?

Some of you will implement this over the weekend. Others will want a custom setup built for their specific business. Either way, I'm here.

Let's talk on LinkedIn