Architecture
C
Solution architecture · v1 · 2026-05-20

What we build, from first principles

We sell an AI department: a team of agents, a dashboard and a company brain, trained on one client and wired to their tools. Underneath, that is one open-source agent runtime (Hermes Agent, Nous Research) wrapped per client, plus a web control-center (Hermes Workspace / rawclaw v3), deployed as one isolated instance on one box per client.

00

The whole thing, in four numbers

2
building blocks — the brain + the cockpit
1
isolated instance per client, on one box
2
containers + 2 volumes = an entire client
<2%
of revenue spent on infrastructure
01

Four layers — but only two are our IP

The job splits cleanly. Commodity below, differentiated IP above, automation in the seam.

L4

Client knowledge & agent design

The agents, memory, prompts and skills trained on THIS client. Produced by install-architect.

L3

Cockpit / UI

Pedro's Hermes Workspace (rawclaw v3) + the Rawgrowth portal. The front door for client and ops.

L2

Agent runtime — the brain

Hermes Agent (Nous Research). Self-improving, omnichannel. Never fork it — track upstream.

L1

Infrastructure

A VPS or Mac Mini running Docker. Where it lives. Automate it, don't invest in it.

The strategic point:L1–L2 are commodities — automate them, don't build them. L3–L4 are where Rawgrowth wins. Pedro's time belongs in the cockpit and the provisioning glue; the install-architect work owns the client brain.

02

The two building blocks

Hermes Agent is the brain. Hermes Workspace is the cockpit. They talk over two local HTTP ports — that split is the core of the architecture.

L2 · the brain

Hermes Agent

Nous Research · Python · MIT · v0.14.0 · ~159k★
github.com/NousResearch/hermes-agent
  • Self-improving loop — writes its own skills + curates memory (this is the flywheel)
  • Omnichannel gateway — Telegram, WhatsApp, Slack, Signal, email, voice
  • Cron scheduler — natural-language scheduled jobs (this is the content layer)
  • Memory: SOUL.md / MEMORY.md / USER.md — the client-brain substrate
  • Any model, no lock-in — OpenRouter, OpenAI, Google, local
  • Runs anywhere — “a $5 VPS” → gateway :8642 + dashboard :9119
L3 · the cockpit

Hermes Workspace

Pedro (outsourc-e) · React 19 + Vite · MIT · v2.3.0 · zero-fork
github.com/outsourc-e/hermes-workspace
  • Chat, Files + Terminal, Memory + Skills browsers, Jobs, Dashboard
  • Operations + Conductor + Swarm — the multi-agent control plane (the “8+ agents” surface)
  • Semantic agent roster already defined: orchestrator, builder, reviewer, QA, researcher, ops-watch, strategist…
  • GBrain shared knowledge layer across agents
  • Security: auth on every route, fail-closed bind, path-traversal guards
  • PWA + Tailscale — native-feeling app on the founder's phone, no open ports

Zero-fork is sacred. The cockpit runs on vanillaHermes Agent — no patched backend, no drift. Forking it would forfeit every free upgrade Nous ships. Lineage note: OpenClaw → Hermes (which is why old code says “claw” / “claude-data” — same family, renamed).

03

One client, end to end

The entire client department is two containers and two volumes on one machine.

Founder's phone / browser
PWA over Tailscale · password-protected · no public ports
One box per clientHetzner / Contabo VPS · or Mac Mini
Hermes Workspace

Cockpit UI · port 3000. Chat, memory, skills, terminal, jobs, Operations & Swarm control plane.

:8642 gateway:9119 dashboard
Hermes Agent

The brain · Python. Memory, skills, cron jobs, omnichannel gateway, model routing, MCP.

One volume: hermes-agent-data = all config, sessions, skills, memory, credentials. Back this up = back up the entire business brain.
TelegramSlackGHLEmailSocial— the client's own stack
04

The offer, mapped to the tech

The five things a client buys — and what each one actually is under the hood.

1Company LLM (business brain)
A retrieval layer (RAG) over the client's SOPs, docs, transcripts and voice — the agents' memory + a knowledge skill (“GBrain”).
2Content production layer
Scheduled agent cron jobs that draft content in the founder's voice, fed by competitor scraping.
3War Room dashboard
The Hermes Workspace dashboard + Rawgrowth's own metrics views (the Convex/Vercel portal).
4AI operating layer (8+ agents)
A swarm of role-specialised Hermes Agents (content, sales, research, ops, finance) with a CEO agent on Telegram.
5Company flywheel
The compounding loop: data in → agents act → memory grows → outputs improve. Hermes' built-in learning loop + our data pipes.
05

Many clients — the fleet layer

The agent and cockpit are done. The missing layer is fleet ops: provisioning, monitoring, backups, updates across every client box.

Rawgrowth control plane(one box we own)
Dokploy / Coolify — deploy · restart · logs · rollback
Provisioning repo — cloud-init + compose per client
Uptime Kuma — health pings + alerts to us first
Backup cron — nightly off-box volume snapshots
provisions · monitors · updates ↓
Client A
Hetzner
Agency-managed
Client B
Contabo
Cheapest
Client C
Their cloud
Client-owned
Client D
Mac Mini
On-prem

Single-tenant per box — kept on purpose. Data isolation is the sale, blast radius is one client, and Hermes isn't built multi-tenant. “Multi-tenant” for us means one control plane managing many single-tenant boxes — never many clients in one process.

06

Where it runs — three postures

Chosen per client. Hermes is mostly idle, so it's RAM- and reliability-bound — 4–8 GB is the sweet spot, not raw CPU.

Agency-managed cloudDefault
Hetzner
~€8–16 / mo

Best performance-per-dollar. NVMe, real API, fast support, hourly billing. We own uptime.

Cheapest cloudPrice-sensitive
Contabo
~$7 / mo

Best GB-per-dollar (4 vCPU / 8 GB ≈ $6.99). Weaker support + performance — fine for many small clients.

Client-ownedSovereignty
Their cloud / Mac Mini
client pays

For enterprise or data-sovereignty demands. Mac Mini is a great story but you inherit “is their internet up?” support.

DigitalOcean / Vultr run ~10× the price of Hetzner / Contabo at equal specs — only worth it for free-credit trials or if a client already lives there. Avoid metered hyperscaler compute for always-on agents.

07

Why infrastructure is a rounding error

Per client, per month, to us.

<2%
of revenue goes to infrastructure
$30–170 /client/mo infra + tokens
against a $10,000/mo retainer
infra cost$10K/mo retainer →

Infrastructure is not a cost worth optimising for dollars. The real cost is human ops-time per client — which is why fleet automation, not host-shopping, is the margin lever. Margin scales with clients-per-ops-person.

08

The gap to close — Pedro's build order

The product is done. This is the fleet-ops layer that lets a 2–3 person team run many clients. In MECE priority order.

01

Provisioning automation

clients/<slug>/deploy/ template (compose + cloud-init + per-client .env) and one command to spin up client X on host Y. Collapses the build's infra step.

02

Fleet control plane

Stand up Dokploy/Coolify on a Rawgrowth box; register every client server. One screen to deploy, restart, log and roll back.

03

Monitoring

Uptime Kuma pinging each client's health endpoints; alert to our channel when a client is down before the client notices.

04

Backup / restore

Nightly off-box snapshot of each hermes-agent-data volume + a tested one-command restore. The volume is the entire business brain.

05

Client-brain seeding pipeline

Turn install-architect output (agents, memory, skills, RAG seeds) into files dropped into ~/.hermes/ at provision time. The bridge from your work to a running deployment.

06

Update cadence

A controlled “bump Hermes Agent + Workspace to vN across the fleet” process with a canary client + rollback. Protects zero-fork as upstream moves.

Not now: a hosted SaaS multi-tenant version, team-collaboration features, or building our own agent runtime. All scope creep.

09

Open decisions for you

Five calls that unblock the build.

Q1

Default host — Hetzner or Contabo as the standard?

Recommendation: Hetzner default; Contabo for price-sensitive; client-cloud / Mac Mini on request.

Q2

Fleet PaaS — Dokploy or Coolify for the control plane?

Recommendation: Dokploy — leaner (~0.8% idle CPU vs ~6%), native multi-server. Coolify if the team prefers UI maturity.

Q3

Who owns the box — agency-managed or client-owned by default?

Recommendation: Agency-managed default (better margin + cleaner support); client-owned only on demand.

Q4

Model-cost policy across the fleet?

Recommendation: A default OpenRouter routing policy — cheap model for routine, premium for reasoning — so token cost is capped per client.

Q5

Build sequence for Pedro?

Recommendation: Start at provisioning (08.1) → control plane (08.2). Those unblock everything else.

Sources
  • ops/strategy/solution-architecture-2026-05.md
  • brand/offer.md
  • ops/delivery/DELIVERY-SPEC.md
  • github.com/NousResearch/hermes-agent
  • github.com/outsourc-e/hermes-workspace