Live System · 14 Agents · 24/7

The Machine
Operator's Manual

Everything Robert Crabtree needs to understand, operate, and explain The Machine. One document. Always current.

14 agents. One system.
Runs while you sleep.

The Machine is 14 specialized AI agents running 24/7 on a Mac Studio, handling all content creation, research, strategy, quality assurance, and operations for Crabtree Marketing and the Robert Crabtree personal brand simultaneously. Every agent has a distinct role, a distinct voice, and a defined place in the pipeline. Built on n8n + Supabase + Claude API — wired together, monitored, and getting smarter with every run.

Porter
Strategy
Ogilvy
Copy
Vee
Social + Personal Brand
Schwartz
Email
Warhol
Creative
Patel
SEO
Burnett
Ads
Eisenberg
CRO
Drucker
Ops
Covey
Project Management
Hemingway
QA Gate 1
Breaker
Adversarial QA Gate 2
Scout
Research
+1
Reserved

Day-to-day operations.

1
Fire the content pipeline
Send brand + topic to the n8n webhook. The pipeline spins up — Porter strategies, Ogilvy writes, Vee adapts for social, Warhol briefs the visuals, Hemingway scores, Breaker red-teams. Deliverable lands in Content Hub automatically.
2
Approve content in Content Hub
Go to content-dashboard.robert-820.workers.dev — add the ?key= param to authenticate. Review posts with generated images. Hit Approve to queue for Postiz, Reject to kill, or Request Changes to loop it back.
3
Use Scout for research
Send any research topic to @crabtreehermes_bot on Telegram. Scout fires — monitors its 12 sources, uses native web search, scores relevance, synthesizes findings. Results come back to Telegram and are saved to Supabase for agent context.
4
Check if something is working
Three places: n8n execution log for workflow status · Supabase → pipeline_deliverables for output records · Telegram for automated failure notifications from Hermes. If a run is silent and nothing's in deliverables, check n8n first.
5
Handle a QA rejection
Hemingway BLOCKED = content scored below threshold on the 35-point rubric. Automatically routes back to the Copy agent for rewrite — no action needed from you.

Breaker BLOCKED = adversarial failure on one of 8 stress-test checks. This one escalates to Robert. Review the Breaker report via Hermes: show me the last Breaker report.

What's running right now.

Multi-Brand Pipeline
Runs CM and RC simultaneously in the same session. Completely different voices, tones, and audiences — handled automatically. One trigger, two brands.
🛡️
Two-Gate QA System
Hemingway scores against a 35-point rubric. Then Breaker runs an adversarial 8-check red-team. Both gates must be cleared before any content advances.
🔍
Vault Semantic Search
1,200 documents searchable by meaning via pgvector in Supabase. Agents pull context automatically at run time — brand voice, client details, historical content.
📡
Scout Research
Monitors 12 sources, scores relevance against defined priorities, and delivers synthesized insights to Telegram. Runs on-demand or cron.
📋
Content Hub Dashboard
Cloudflare Worker dashboard for reviewing and approving posts with images. Approve/reject/request changes with one click. Posts queue directly to Postiz.
🧠
Agent Memory
Agents write learnings to agent_learnings in Supabase after each run. They read those learnings at the start of the next run. The system gets smarter automatically over time.
📊
Run Observability
Every agent decision, tool call, and score is logged to agent_run_log. Full audit trail. Query via Hermes anytime.
🌐
Native Web Search on Scout
Scout uses Anthropic's native web_search tool — reasons autonomously about what to search, when to search again, and how to synthesize findings. No hardcoded queries.
💰
Prompt Caching
System prompt tokens are cached across all agents. Repeated calls cost 60–80% less. Large system prompts (SOULs) no longer penalize you on every run.
🧹
Context Management
Long agent runs automatically strip stale tool results and tombstone them, keeping context windows clean. Better output quality as runs get longer.

Who does what.

Agent Alias Type Primary Task Invoked By Status
Porter Strategy Reasoning Campaign strategy, positioning, quarterly planning Pipeline auto + direct Active
Ogilvy Copy Reasoning Conversion copy, blogs, landing pages, ad copy Pipeline auto Active
Vee Social + Personal Brand Reasoning Organic social content for CM and RC Pipeline auto Active
Schwartz Email Reasoning Lifecycle email sequences, automation Pipeline auto Active
Warhol Creative Reasoning Art direction, image briefs, visual ICP gatekeeping Pipeline auto Active
Patel SEO Reasoning Keyword strategy, content briefs, technical SEO Pipeline auto Active
Burnett Ads Reasoning Paid media strategy, Meta/Google/LinkedIn campaigns Direct request Active
Eisenberg CRO Reasoning Conversion audits, A/B test design, funnel analysis Direct request Active
Drucker Ops Routing Invoicing, vendor management, budget tracking Direct request Active
Covey PM Routing Cross-agent coordination, deadlines, client comms Direct request Active
Hemingway QA Gate 1 Routing Scores all content on 35-pt rubric before advancing Pipeline auto Active
Breaker Adversarial QA Gate 2 Routing Red-team stress test: 8 checks, binary CLEAR/BLOCKED Pipeline auto Active*
Scout Research Reasoning Monitors sources, scores relevance, delivers insights Hermes + cron ~50%

* Breaker — logic active, not yet wired into n8n pipeline.   ~50% — Scout partially operational, web search live.

The systems powering it.

n8n
Workflow orchestration and agent pipeline engine. Every automation lives here.
n8n-crabtree-u66840.vm.elestio.app
Supabase
Postgres database for posts, deliverables, agent memory, run logs, and pgvector semantic search.
Via Hermes / Content Hub
Content Hub
Post approval dashboard built on Cloudflare Workers. Review posts with images before they schedule.
content-dashboard.robert-820.workers.dev
Command Center
Hermes Workspace — sessions, terminal, skills, and job management. The control panel.
command.crabtreemarketing.com
Telegram
Primary interface to Hermes. Send commands, receive results, get failure alerts.
@crabtreehermes_bot
CLAUDEVAULT
All agent configs (SOULs), project files, and client documents. Source of truth for agent identity.
Google Drive → Mac Studio sync
Notion
Task management and content ideas database. Where campaigns get planned before they enter the pipeline.
notion.so
Postiz
Social media scheduling. Posts flow automatically from Content Hub approval to Postiz queue.
Via pipeline (post-approval)
Supabase Storage
All social media graphics (PNGs) generated by Warhol/pipeline. Public URLs attached to every post.
Auto via pipeline — public URLs

The Machine, packaged
and sold to agencies.

We built The Machine before Anthropic released
half these tools.

We install it with everything live — native web search, compounding memory, lighter scaffolding — and it gets better automatically with every Claude release. The demo isn't a slideshow. It's the agent_learnings table: what each agent has learned about their clients, sources, and preferences. Day 1 output vs. Day 30 output, side by side.

Hunter Castle
Dylan Mullins
10%
Referral
20%
Strategic
~40%
Wholesale
16fold.ai ← primary
sixteenfold.com → redirect

The roadmap.

SOUL rewrites for 8 reasoning agents — unhobbling in progress tonight. Removing scaffolding constraints, tightening identity, extending autonomy.
Scaffolding comparison test: Porter + Ogilvy run the same task with 30% less scaffolding. Hemingway scores both. We compare outputs objectively.
Claude Code SDK evaluation as a general-purpose agent runtime. Testing whether it outperforms the current n8n-based orchestration for complex agent loops.
Anthropic native platform observability — expected 6–12 months out. Will replace or augment current agent_run_log setup with first-party tooling.
Persistent Claude compute — Claude gets its own computer. Agents with persistent browser, file system, and long-term environment access. The logical endpoint of this architecture.

Task lookup.

Task Agent(s) How to Fire
Write a week of social posts for CM Ogilvy + Vee + Warhol + Hemingway + Breaker Fire V4 pipeline with client=cm
Research a topic or competitor Scout Message Hermes on Telegram with topic
Plan a campaign strategy Porter Direct request via Hermes
Write an email sequence Schwartz Direct request via Hermes
Audit a landing page for conversion Eisenberg Direct request via Hermes
Plan a paid ads campaign Burnett Direct request via Hermes
SEO audit or keyword research Patel Direct request via Hermes
Generate social graphics Warhol Auto via pipeline or direct
Review what agents have learned agent_learnings Hermes: "show me what Scout has learned"
Check why a post got blocked Breaker report Hermes: "show me the last Breaker report"
See pipeline run history pipeline_deliverables Hermes: "show last 5 pipeline runs"
Generate content for RC personal brand Vee (Mode B) Fire V4 pipeline with brand=rc
Check agent performance stats agent_run_log Hermes: "show me agent run stats this week"
Approve pending posts Hemingway + Content Hub Go to Content Hub, approve/reject
Create a new client content system Full pipeline Direct request via Hermes

Every command.
In one place.

Hermes is the AI orchestration layer running on Mac Studio — accessible via Telegram (@crabtreehermes_bot), the Command Center web UI, or the terminal. Below are all major CLI subcommands and the in-session slash commands available during a live chat.

hermes
Start a new interactive chat session. Loads AGENTS.md, SOUL.md, memory, and preloaded skills automatically.
hermes -c
Resume the most recent session. Picks up exactly where you left off — full context intact.
hermes -c "session name"
Resume a named session by title. Hermes finds the latest in the lineage matching that name.
hermes --resume <session_id>
Resume a specific session by its exact ID. Use hermes sessions list to find IDs.
hermes -z "prompt"
One-shot mode. Sends a single prompt and prints only the response — no banner, no spinner. Ideal for scripts and pipes.
hermes -m model_name
Override the model for this session only. Example: -m anthropic/claude-opus-4-5
hermes --tui
Launch the modern TUI (terminal UI) instead of the classic REPL. Richer interface with panels.
hermes -s skill1,skill2
Preload one or more skills for the session. Example: -s crabtree,hermes-agent
hermes -w
Start in an isolated git worktree. Useful for parallel agents working on the same repo without conflicts.
hermes --yolo
Bypass all dangerous command approval prompts. Use when you trust the agent completely or in CI.
hermes --ignore-rules
Skip auto-injection of AGENTS.md, SOUL.md, .cursorrules, memory, and preloaded skills. Clean-slate session.
/
Open the slash command menu. Lists all available commands with descriptions. Type to filter.
/new
Start a fresh session from within the current one. Resets context while staying in the terminal.
/stop
Interrupt the agent mid-generation. Stops the current response without ending the session.
/model
Switch the active model for the current session. Opens an interactive picker to choose provider and model.
/memory
View, edit, or clear memory entries for the current session. See what Hermes remembers about you and the project.
/skills
Manage skills in the active session. Load, unload, or inspect skills without restarting.
/kanban
Open the Kanban board inside the session. Create tasks, view board status, claim and complete work items.
/plan
Ask Hermes to plan out a multi-step task before executing. Shows the proposed approach for your approval.
/todo
Show or manage the session to-do list. Hermes tracks tasks it's working on and their completion status.
hermes config show
Print the full current configuration in readable format. Model, provider, tools, hooks, all settings.
hermes config edit
Open ~/.hermes/config.yaml in your default $EDITOR. The full config file.
hermes config set model gpt-4
Set a config value from the command line. Useful for scripted provisioning.
hermes config path
Print the path to the active config file. Quick lookup when you need to know where it lives.
hermes config env-path
Print the path to the .env file where API keys are stored.
hermes config check
Scan configuration for missing or outdated values. Useful after updates.
hermes config migrate
Update the config file format with any new options from a Hermes version upgrade.
hermes skills list
List all installed skills with their status, source, and version.
hermes skills search <query>
Search skill registries (skills.sh, ClawHub, GitHub) for available skills matching your query.
hermes skills install <skill>
Install a skill by name or registry path. Example: hermes skills install crabtree
hermes skills browse
Interactive paginated browser for all available skills across all tapped registries.
hermes skills inspect <skill>
Preview a skill's full contents before installing. Useful for reviewing what a skill injects.
hermes skills update
Update all installed hub skills to their latest versions.
hermes skills uninstall <skill>
Remove an installed skill completely.
hermes skills config
Interactive interface to enable or disable individual installed skills without uninstalling them.
hermes skills audit
Re-scan all installed hub skills. Refreshes metadata and checks integrity.
hermes skills tap <source>
Add a custom skill registry as a source. Expands what skills search and skills browse can find.
Installed skills on this system: apple · autonomous-ai-agents · crabtree · creative · data-science · devops · diagramming · dogfood · domain · email · feeds · gaming · gifs · github · inference-sh · leisure · mcp · media · meta · mlops · note-taking · productivity · red-teaming · research · sales-ops · smart-home · social-media · software-development · task-quality-assessment · workspace-dispatch · yuanbao — plus markdown skill files: approval-queue.md · client-report.md · content-qa.md · pipeline-monitor.md
hermes kanban init
Create the kanban.db SQLite database if it doesn't exist. Idempotent — safe to run multiple times.
hermes kanban create "task title"
Create a new task on the board. Add --body for description, --assign to assign to a profile.
hermes kanban list
List all tasks on the board. Filter by status with --status ready|blocked|done|archived
hermes kanban show <task_id>
Show full task details including comments, event log, and run history.
hermes kanban claim <task_id>
Atomically claim a ready task for the current profile. Returns the resolved workspace path for isolated execution.
hermes kanban complete <task_id>
Mark one or more tasks as done. Triggers dependent task promotion if any were waiting.
hermes kanban block <task_id>
Mark a task as blocked. Add a reason with --reason
hermes kanban unblock <task_id>
Return a blocked task to ready state.
hermes kanban comment <id> "text"
Append a comment to a task. Visible in kanban show and the event stream.
hermes kanban stats
Per-status and per-assignee task counts plus the age of the oldest ready task. Board health at a glance.
hermes kanban watch
Live-stream all task events to the terminal in real time. Ctrl+C to exit. Good for monitoring parallel agent runs.
hermes kanban dispatch
Run one dispatcher pass: reclaim stale tasks, promote ready tasks, spawn workers.
hermes kanban assignees
List all known profiles with per-profile task counts. Shows who's working on what.
hermes kanban log <task_id>
Print the full worker log for a task from ~/.hermes/kanban/logs/
hermes kanban runs <task_id>
Show attempt history — one row per run with profile, outcome, elapsed time, and summary.
hermes kanban gc
Garbage-collect archived task workspaces, old events, and old logs. Reclaims disk space.
hermes kanban archive <task_id>
Archive one or more completed tasks. Keeps the board clean without deleting history.
hermes sessions list
List all past sessions with IDs, titles, timestamps, and message counts.
hermes sessions browse
Interactive session picker — scroll through history and resume any session.
hermes sessions rename <id> <title>
Give a session a human-readable name for easy resuming with hermes -c "name"
hermes sessions prune
Delete old sessions beyond the retention limit. Reclaims disk space.
hermes logs
View the last 50 lines of agent.log. General operation log.
hermes logs -f
Follow agent.log in real time. Live tail — useful when monitoring running agents.
hermes logs errors
View the errors log only. Faster than grepping the full log.
hermes logs --since 1h
Show only log lines from the last N time period. Supports 1h, 30m, 2d, etc.
hermes status
Show status of all components — gateway, cron, auth, model, skills. Full health check.
hermes doctor
Run a diagnostic check on configuration and dependencies. Catches common issues.
hermes update
Update Hermes Agent to the latest version.
hermes backup
Create a zip backup of the entire ~/.hermes home directory.
hermes import <file.zip>
Restore a Hermes backup from a zip file.
hermes insights
Show usage analytics — model usage, token spend, session counts, top tasks.
hermes gateway install
Install the Hermes gateway as a background service. Runs the Telegram bot and webhook listener persistently.
hermes dashboard
Start the web UI dashboard. Accessible at the configured local port.

Direct access to Claude.
No wrapper.

Claude Code is Anthropic's native agentic CLI — a direct interface to Claude that can read files, write code, run terminal commands, and operate autonomously in your codebase. It complements Hermes (which has more integrations and memory) with raw, low-latency Claude access for development tasks.

claude
Interactive mode. Opens a full REPL session with Claude. Has access to your file system, can run commands, write and edit code. Context is maintained throughout the session.
claude -p "prompt"
One-shot / print mode. Sends a single prompt, prints the result, and exits. Useful for scripting and piping. Equivalent to hermes -z
claude --resume
Resume the most recent Claude Code session. Restores full context — all prior messages, file edits, tool calls.
claude --resume <session_id>
Resume a specific past session by its ID. Use claude --list-sessions to find session IDs.
claude --continue
Continue a conversation in a new session window while retaining context from the previous one.
--model <model>
Specify the Claude model. Example: --model claude-sonnet-4-5 or --model claude-opus-4
--max-turns <n>
Limit the number of agentic turns in one-shot mode. Prevents runaway loops in automated scripts.
--output-format json
Output results as JSON instead of plain text. Useful for piping Claude output into other programs.
--output-format stream-json
Stream JSON output as Claude generates it. Each token arrives as a structured JSON event.
--no-auto-approve
Require manual approval for every tool use (file writes, terminal commands). Maximum oversight mode.
--dangerously-skip-permissions
Skip all permission checks and run fully autonomously. Use only in sandboxed or trusted environments.
--add-dir <path>
Add an additional directory to Claude's allowed file access scope beyond the current working directory.
--system-prompt "text"
Inject a custom system prompt for the session. Overrides or extends the default behavior instructions.
cat file.txt | claude -p "summarize"
Pipe file contents directly into Claude one-shot. Claude reads stdin as part of the prompt.
claude -p "fix this" < broken.py
Feed a file to Claude via stdin redirection. The file content becomes the context for the prompt.
claude --output-format json -p "…" | jq
Pipe structured Claude output to jq for parsing. Useful for extracting specific fields in shell scripts.
claude -p "…" --max-turns 5
Run Claude agentically for up to 5 tool-use cycles, then stop. Bounded automation for CI pipelines.
ANTHROPIC_MODEL=claude-opus-4 claude
Set model via environment variable. Useful in scripts and dotfiles to override the default without passing flags.
Hermes vs. Claude Code — when to use what: Use Hermes for anything involving The Machine (Supabase, n8n, Telegram, skills, memory, kanban, multi-session projects). Use Claude Code for raw development work — refactoring a codebase, debugging a file, quick one-shot generation, or when you want Claude directly without any middleware overhead.
/clear
Clear the current conversation context. Starts a clean context window without ending the session binary.
/compact
Compact the conversation history. Summarizes older turns to free up context window for longer sessions.
/cost
Show the token cost of the current session — input, output, and cache read/write tokens.
/doctor
Run a health check on the Claude Code installation — checks API key, model access, tool availability.
/model
Switch the active model mid-session. Opens a picker to change from Sonnet to Opus or vice versa.
/review
Ask Claude to review the changes it just made. A self-QA pass before you commit.
/init
Create a CLAUDE.md file in the current project with Claude-discovered context. Sets up project memory.
/exit or /quit
Exit the Claude Code interactive session cleanly.

Working alongside
the agents.

A Cowork Session is a live, interactive working session where Robert and Hermes (or Claude Code) operate in parallel — Robert sets direction, the agent executes. Different from firing a pipeline or running a one-shot. This is real-time collaboration on complex, multi-step work.

hermes -c
Resume ongoing work. Best for continuing an existing project. Full context from the last session is restored automatically.
hermes
New session. Clean start. AGENTS.md and SOUL.md are loaded — Hermes knows the full context of The Machine from the first message.
hermes -s crabtree
With the Crabtree skill preloaded. Gives Hermes immediate access to Supabase tools, vault search, n8n controls, and all machine-specific capabilities.
claude
Raw Claude Code session. When the work is primarily code — building a new workflow, debugging a Worker, writing a script. No Hermes overhead.
hermes --tui
TUI mode. Better for longer sessions. Panel-based layout makes it easier to track multi-step work. Recommended for cowork sessions over 30 minutes.
/stop
Interrupt mid-generation. Use when Hermes is heading in the wrong direction. Doesn't lose context — you can redirect immediately.
/plan
Before a complex task, ask Hermes to lay out the plan. Review and approve before execution begins. Prevents surprises on long tasks.
/todo
Check session progress. Hermes maintains a running list of sub-tasks. Use this to see what's done, in-progress, and pending.
/memory
See what Hermes has remembered from this session and past sessions. Add corrections with /memory add "correction"
/kanban create "task"
Turn a discussion into a tracked task mid-session. Keeps complex cowork from losing items to context.
Ctrl+C (then "y")
Hard interrupt and exit. Use only if /stop doesn't work. Hermes autosaves session state so you can resume.
Use This When
Cowork Session (Hermes)
  • Multi-step work that needs direction at each stage
  • Building something new (skill, workflow, system)
  • Troubleshooting an issue that requires iteration
  • Strategic decisions — campaign planning, architecture
  • Anything involving Supabase, n8n, or the vault
  • Work that spans more than one session / day
Use This When
Content Pipeline (n8n)
  • Generating a week of content for a client
  • Running the full CM or RC brand cycle
  • Batch operations that are fully defined and repeatable
  • Hands-off — fire and check Content Hub later
Use This When
One-Shot (hermes -z or claude -p)
  • Single, well-defined task that needs no back-and-forth
  • Scripting and automation (piping output to other tools)
  • Quick lookups, summaries, or rewrites
  • Cron jobs and scheduled agentic tasks
Use This When
Claude Code (claude)
  • Deep coding work — refactoring, debugging, architecture
  • Building a new n8n workflow from scratch in code
  • Working in a specific repo context (Claude reads the files)
  • When you want raw Claude access without Hermes overhead
Name your sessions
After a productive session, run hermes sessions rename <id> "short description" so you can resume it by name. Makes multi-day projects easy to pick back up.
State the goal upfront
Start with a clear statement of what you want accomplished by the end of the session. Hermes plans better when it knows the destination, not just the first step.
Use /plan on complex tasks
For anything that will take more than 5 steps or 10 minutes, ask for the plan first. Approve, reject, or edit before execution. Prevents expensive wrong-direction runs.
Redirect, don't restart
If Hermes is on the wrong track, use /stop and redirect — don't start a new session. Context is an asset; preserve it. Corrections land in memory for future sessions.
Review before committing
For any code or config changes, ask Hermes to summarize what changed before you commit or deploy. what did we change this session? produces a clean summary.
End with a summary
Before closing a session: "summarize what we did today and what's still open" — Hermes writes this to memory and you have a handoff doc for the next session.
The golden rule: Hermes is autonomous-first. For any task it can complete without asking, it will. You don't need to hand-hold every step — give it the goal and let it work. Your job is direction, not supervision. Interrupt only when the direction is wrong, not just to check in.