Sooner AI System
Technical guide
Sooner · Internal technical guide

How Sooner's AI team actually works

The complete technical operating manual for the AI system powering Sooner's day-to-day operations. Built for our CTO and engineering leads.

Version 1.0 · Last updated 19 Apr 2026 · Based on Andrej Karpathy's LLM Wiki pattern

The big picture

Sooner runs on an AI team of six agents plus an infrastructure layer that connects them to Claude Code for heavy work. Memory compiles and validates itself via scheduled dream cycles. Everything backed up daily to a private GitHub repo.

Core insight: OpenClaw handles conversation and orchestration. Claude Code handles the heavy thinking. Memory lives in markdown files that compile and propagate rules automatically. Nothing is a chatbot - everything is a durable system.
Technical foundation
Architecture is an implementation of Andrej Karpathy's "LLM Wiki" pattern (April 2026): raw notes → compiled summaries → validated → promoted → re-loaded. Memory lives in markdown on disk. Agents read the compiled layer first, raw layer only on demand. Periodic "dream cycles" detect patterns and promote stable knowledge to the canonical wiki.

Mo also has an EA agent, Iris, who sits outside the Sooner pod and handles Mo's cross-company coordination and the underlying infrastructure. Lisa coordinates with Iris when needed. Everyone else operates purely within Sooner.

The Sooner team

Lisa
Chief of Staff
Integrates the pod, runs daily stand-ups and weekly dreams, protects Mo's attention. Founder-briefing style, Chief of Staff at Stripe or Ramp energy.
Draper
Head of Product
Product strategy, design, frontend and backend engineering, brand, growth. Treats every design decision as "what would Ramp, Linear, or Apple ship?"
Dinesh
Engineer
Backend, APIs, infrastructure, integrations. Complements Draper's full-stack work with deeper engineering focus.
Nora
Customer Success
Handles customer support for Sooner and Rematch. Triages tickets, drafts replies, surfaces patterns to the team.
Reid
Investor Relations
Fundraising pipeline, investor outreach, monthly updates, materials. Named after Reid Hoffman.
Maya
Design & Creative
Visual assets, creative iteration, design work that complements Draper's brand direction.
Also in the picture: Mo has a separate personal agent, Iris, who acts as his Executive Assistant across companies. She handles calendar, personal coordination, and owns the underlying OpenClaw infrastructure. Lisa coordinates with Iris when pod-level work touches Mo's time or cross-company matters. Iris is not a Sooner agent, but she is the person Lisa reports upward to on infrastructure concerns.

Access rules: who can talk to whom

Surface Mo Gabriel Other Sooner team
Agent DMs (Slack or Telegram)YesNoNo
Channels where agents are invitedYesYesOnly if in the channel
Nora in #support and similar public channelsYesYesYes
Other Sooner channels where agents liveYesYesYes

Gabriel gets channel-level access to all agents. DMs are always Mo-only. The rest of the team can ping any agent in a channel that agent is already invited to.

Enforcement
Each agent has an "Acknowledge First" rule plus a "Slack DM Boundary" rule in their AGENTS.md. Non-Mo DMs get a short redirect telling the sender to use the appropriate shared channel. Non-Mo requests in channels are treated as read-only by default - agents will explain, summarize, advise, but will not execute for anyone else unless Mo explicitly authorizes.

Daily stand-ups

Every weekday at 8:00 AM Dubai time, Lisa posts a Sooner pod stand-up to #sooner-ai-leadership.

Format:

  • Yesterday: 2-4 tight lines on what shipped or moved
  • Today: 2-3 priorities or decisions needed from Mo
  • Blockers: anything stuck
  • Decisions needed from Mo: numbered, specific questions

Stand-ups are operational only. They summarize yesterday, flag today's priorities, and surface decisions. They do NOT modify the wiki or protocol files. They may refresh STATUS.md if a clear state change is visible.

Reading discipline: each stand-up is designed to read in under 60 seconds. If they grow longer, it is a signal that something is wrong in the synthesis and worth flagging.
Technical detail
Triggered by launchd job (ai.openclaw.standup.lisa). The trigger runs openclaw-delegate to synthesize via Claude Code (uses Claude Max subscription, effectively free), then makes a small OpenRouter call via Lisa's agent to post the result to Slack. ~95% of the tokens live in Claude Max, not OpenRouter.

Weekly dream cycles

Every Sunday at 7:00 PM Dubai, Lisa posts a weekly dream cycle summary to #sooner-ai-leadership (team-visible).

The dream cycle produces:

  • Patterns observed - rules Mo repeated during the week, agent convergence, emerging standards
  • Auto-promotions - high-confidence rules written directly to the wiki
  • Proposals awaiting approval - medium-confidence items numbered for Mo to approve or reject
  • Stale or contradictory items - things in memory that look wrong or out of date
  • Agent health check - who was active, who was idle, any wellness concerns
Auto-promotion policy: High-confidence rules (Mo said them 3+ times across different contexts) get written to the wiki automatically. Medium-confidence items need Mo's explicit approval. DECISIONS.md and protocol files never auto-promote regardless of confidence.
How it runs
Launchd fires ai.openclaw.dream.lisa Sunday 7pm. The trigger script runs openclaw-dream-digest --pod sooner --days 7 which assembles a ~3000-line digest of the whole week's agent memory, shared truth, and project PREFERENCES.md captures. That digest gets handed to Claude Code via openclaw-delegate. Claude Code synthesizes the dream log, writes it to ~/.openclaw/shared-memory/sooner/dreams/YYYY-MM-DD.md, then Lisa makes one final OpenRouter call to post the summary to Slack.

Backups and monitoring

WhatWhenWhere
GitHub backup of all config, memory, wikiDaily 3:17 AM DubaiPrivate repo on Mo's GitHub
Disk space checkEvery 6 hoursTelegram alert if below 20GB
The backup excludes secrets, browser state, session transcripts, and binaries. A secret scanner blocks commits that contain real credentials. The backup only includes durable memory and configuration - enough to rebuild the system on a fresh machine in about 15 minutes if the primary Mac dies.

Memory architecture

Five layers, ordered from raw to canonical:

1. Agent daily notes Per-agent · Raw

Raw daily logs written by each agent during work. Personal, ephemeral, feeds into higher layers.

~/.openclaw/agents/{draper,dinesh,nora,reid,maya,lisa}/memory/YYYY-MM-DD.md

2. Agent MEMORY.md Per-agent · Curated

Durable memory per agent. How that agent operates. Updated when something stable emerges from daily notes.

~/.openclaw/agents/{draper,dinesh,nora,reid,maya,lisa}/MEMORY.md

3. Shared pod current truth Pod-wide · Live

What is happening right now at the Sooner pod level. Lisa is the primary maintainer.

~/.openclaw/shared-memory/sooner/STATUS.md       # what is live now
~/.openclaw/shared-memory/sooner/DECISIONS.md    # key decisions, append-only, Mo-directed
~/.openclaw/shared-memory/sooner/PROJECTS.md     # active projects

4. Wiki Canonical · Stable

Canonical Sooner truth. Brand, product, fundraising, support, operating model. Changes only via dream cycles with Mo's approval.

~/.openclaw/wiki/sooner/
├── brand/
│   ├── positioning.md
│   ├── tone-of-voice.md
│   ├── messaging-hierarchy.md
│   ├── creative-guardrails.md
│   ├── claims-and-proof.md
│   └── campaign-principles.md
├── product.md
├── fundraising.md
├── support/
└── operating-model.md

5. Protocol files Long-form playbooks

In agent folders, long-form operating playbooks:

  • agents/draper/BRAND_PROTOCOL.md
  • agents/reid/FUNDRAISING_PROTOCOL.md
  • agents/nora/SUPPORT_PROTOCOL.md
The promotion flow (Karpathy compound loop)
Agent activity → daily notes (raw) → Sunday dream review → classification (auto / propose / info) → high-confidence writes directly to wiki → medium-confidence proposals wait for Mo's approval → approved writes happen → next session inherits updated wiki via CLAUDE.md pointers. This is Karpathy's "LLM Wiki" loop. Raw input gets compiled once, then the compiled version is what future sessions read - not the raw log.

The Claude Code handoff system

When Draper, Dinesh, or Mo need to build software, the system uses one of five modes. Each starts with a project folder that persists and becomes the single source of truth for that work.

ModeWhat it meansWhen to use
LaunchFresh project in an agent's domain, Mo drives in Claude CodeStarting something new at the laptop
CreateAgent writes a detailed brief, Mo drivesAgent-planned work Mo wants to build himself
SpawnAgent scaffolds AND builds in the backgroundMo is on the road, agent handles it end-to-end
ContinueAgent keeps building on an existing projectFollow-up work on something already scaffolded
AdoptRetrofit a folder Mo already built soloMo worked alone, wants an agent to take over

Plus two control flows:

  • Takeover - stop a background build, hand to Mo interactively
  • Stop - kill a background build without handoff

What lives in every project folder

FilePurpose
BRIEF.mdThe task brief
CLAUDE.mdAuto-loaded agent identity when Claude Code opens the folder
.openclaw-project.jsonAgent + pod ownership tag
.claude/settings.local.jsonHooks that log activity to live-status.md
PROJECT_SUMMARY.mdCompiled state (auto-regenerated after substantive sessions)
PREFERENCES.mdStanding rules Mo declared during Claude Code sessions
Auto-compile mechanism
After every substantive Claude Code session (default: 30+ new log lines), a Python double-fork daemon spawns a detached claude process that reads the raw live-status log plus the project files and writes a compiled PROJECT_SUMMARY.md. Next session opens with the compiled state loaded first, raw log only referenced when needed. This scales to hundreds of sessions without the log becoming unreadable. Double-fork is necessary because Claude Code's --print mode aggressively cleans up its process tree on exit - standard nohup doesn't survive. The spawner is at ~/.openclaw/handoff-system/hooks/spawn_detached.py.

The visibility loop

Every prompt Mo sends, every tool call Claude Code makes, and every turn completion gets logged via hooks to:

~/.openclaw/shared-memory/sooner/code-projects/<project-name>/live-status.md

This means when Mo is building in Claude Code Desktop and steps away, he can ping Draper from Telegram ("how is broker-portal going?") and Draper reads the live-status file to give an accurate answer - near real-time visibility without Mo having to summarize manually.

The hooks installed in every project:

  • SessionStart - detects conflicting background builds, alerts
  • UserPromptSubmit - logs each prompt
  • PostToolUse - logs each tool call (Read, Write, Edit, Bash)
  • Stop - logs turn completion
  • SessionEnd - logs session end, triggers auto-compile, tries gateway notify

The delegate pattern (cost optimization)

OpenClaw agent turns use OpenRouter credits (real per-token cost). Claude Code uses Mo's Claude Max subscription (fixed monthly, effectively free within cap). The delegate pattern offloads heavy work from OpenRouter to Claude Code.

When agents delegate

Delegate for:

  • Drafting long emails (investor updates, contract reviews, detailed responses)
  • Memory synthesis (weekly dream cycles)
  • Mass operations (triaging 50 tickets, reviewing 20 PRs)
  • Research passes (reading many documents, producing reports)
  • Anything requiring more than ~1000 tokens of context

Don't delegate for:

  • Conversational replies in Slack or Telegram (overhead ruins live feel)
  • Short tasks under 200 words
  • Time-sensitive acknowledgments
Estimated savings: $100-250 per month by offloading synthesis tasks. Sooner's daily stand-up and weekly dream alone save $50-100 per month.
openclaw-delegate \
  --agent reid \
  --task "Draft the April investor update. Pull key metrics from STATUS.md, highlight material changes, sign off from Mo." \
  --context ~/.openclaw/shared-memory/sooner/STATUS.md,~/.openclaw/agents/reid/FUNDRAISING_PROTOCOL.md \
  --output ~/drafts/investor-update-2026-04.md

Delegations run in a temp folder under ~/.openclaw/delegations/ with full agent DNA injected via CLAUDE.md. The output is written to RESULT.md, returned to the caller, and the temp folder auto-cleans unless --keep-folder is passed.

CLI commands (technical reference)

All commands live in ~/.local/bin/ and are on Mo's PATH.

CommandPurpose
openclawThe main OpenClaw CLI (gateway, agent, config)
openclaw-project launchStart fresh project in an agent's domain
openclaw-project createScaffold project with a specific brief
openclaw-project spawnScaffold and run Claude Code in background
openclaw-project continueAdd more background work to existing project
openclaw-project adoptRetrofit existing folder
openclaw-project takeoverStop background build, switch to interactive
openclaw-project stopKill background build
openclaw-project compileRecompile PROJECT_SUMMARY.md
openclaw-project statusShow activity for a project
openclaw-project listList all projects
openclaw-project is-runningCheck if background is active
openclaw-project last-sessionCheck how last session ended (clean/incomplete/stopped)
openclaw-delegateOffload work to Claude Code
openclaw-dream-digestGenerate a pod memory digest
openclaw-backupPush config to GitHub
claudeClaude Code CLI

Scheduled jobs (launchd)

The Sooner-relevant jobs:

LabelSchedulePurpose
ai.openclaw.gatewayBoot + auto-restartOpenClaw gateway process
ai.openclaw.standup.lisaDaily 8:00 AMSooner stand-up
ai.openclaw.dream.lisaSunday 7:00 PMSooner weekly dream cycle
ai.openclaw.backupDaily 3:17 AMGitHub backup
ai.openclaw.disk-monitorEvery 6 hoursDisk space check
Inspect running jobs
launchctl list | grep ai.openclaw

Plist files in ~/Library/LaunchAgents/. Schedule definitions live in ~/.openclaw/dreams/scheduler/. Trigger logs under ~/.openclaw/dreams/scheduler/logs/

Backup and recovery

What is backed up

Everything in ~/.openclaw/ except the excluded items below. ~674 files on initial push, auto-synced daily.

What is NOT backed up (intentionally)

  • .env (Slack/Telegram/OpenRouter tokens) - stored in 1Password instead
  • browser/ (Chrome profiles, cookies)
  • credentials/, identity/
  • */sessions/*.jsonl (conversational transcripts)
  • Delegation temp folders
  • Caches, logs, binaries over 100MB

Recovery path if the primary Mac dies

  1. Install OpenClaw, Claude Code, Node, gh CLI on the new machine
  2. Clone the private backup repo to ~/.openclaw/
  3. Restore .env from 1Password
  4. Re-authenticate integrations: gog auth, op signin, gh auth login
  5. Run openclaw gateway restart
  6. All agents come back with full memory intact. Expected recovery time: 10-15 minutes.

When things break

SymptomLikely causeWhere to look
Agents stop responding on Slack/TelegramGateway down~/.openclaw/logs/ or openclaw status
Backup failsBig file or auth issue~/.openclaw/handoff-system/logs/backup.log
Dream cycle doesn't fire on Sundaylaunchd job unloaded~/.openclaw/dreams/scheduler/logs/
Claude Code hooks don't fireMissing .claude/settings.local.jsonProject folder
Disk filling upOld delegation folders, session filesCost Controller alert on Telegram
Agent giving wrong answersStale memory, out-of-date wikiTell Mo → corrects via dream cycle or direct MEMORY.md edit

Working with the Sooner team

For the rest of the team (you, CTO, Gabriel, anyone else):

Your morning routine with the agents

  • Check #sooner-ai-leadership at around 8am Dubai. Lisa's stand-up is there.
  • Read in 60 seconds. Comment in thread if you have input. Don't DM Lisa directly.

During the day

  • Need something product-related? Tag Draper in a channel he's in.
  • Backend or infra question? Tag Dinesh.
  • Support or customer question? Tag Nora in #support.
  • Status across the pod? Tag Lisa.

Sunday evening

  • Lisa posts the weekly dream cycle to #sooner-ai-leadership.
  • Mo reviews and approves the promotion proposals.
  • You can comment on anything that looks off before Mo approves.

Boundaries you should know

  • Agents won't execute external actions (send emails, publish content) without Mo's approval - this is by design.
  • Agents won't modify canonical wiki content without Mo's approval - changes go through the Sunday dream cycle.
  • DMs to agents are Mo-only - use channels.
  • If you correct an agent ("that's wrong because X"), they'll note it and learn. Don't feel bad about correcting them.

Operating principles

1. Let the dream cycle handle promotion. If Mo repeats a rule 3+ times, the Sunday dream auto-promotes it to the wiki. Don't manually edit canonical truth mid-week.
2. Use delegate for heavy work. Agents will offload long synthesis to Claude Code. This saves real money and stays invisible to everyone reading the output.
3. Trust the hooks. When Claude Code opens in a project folder, CLAUDE.md auto-loads with the owning agent's identity. No need to re-brief.
4. Approvals are async. Agents don't chase Mo. They don't chase you either. Reply on your own timeline.
5. When in doubt, escalate to Mo. Anything that feels structural, off-pattern, or needs a judgment call - Mo. Agents will too.