Front page.What it is
Live
The agentic operating system
The system I use to run a one-person software business. Agents do much of the work, and a test decides what merges.
Private. Every other page in this portfolio was built with it and runs on it.

Set in type.The stack
What it runs on
Four layers: a memory, a build loop, the business apps, and the agents that run inside them.
Memory
- Markdown vault1,641 pages, versioned in git
- 35 skillsprocedures agents follow
- 72 scripts + timersdigest, keyword harvest, knowledge sync
Build
- Archon0.10runs coding agents in loops
- Claude Codethe agent at the keyboard
- Worktreesa second checkout per feature
Apps
- Bun monorepo6 apps, 31 shared packages
- Next.js16.2
- React19.2
- Payload3.82one CMS for every site
Runtime
- AI SDK7.0
- Eve0.398 sub-agents that draft
- Trigger.dev4.5background jobs
Data + watch
- Neon Postgresone database, a schema per service
- Cloudflare R2files
- Upstashqueues and limits
- Langfuse5.4traces over OpenTelemetry
On the press.How it works
5 steps, in order
How a feature goes from an idea to production without me typing the code.
Write it down first
Work starts as a vault page: a brief, then an architecture, then a feature list.
Turn it into a spec
An interview turns a feature into a PRP: a spec an agent can build from.
Build in a worktree
Archon runs coding agents in a second checkout of the repo, one round after another.
Only the gate ends the loop
validate.sh must exit 0. Up to eight rounds. No AI step can end the loop by saying it is done.
Land it, then run it
The work merges to main. At runtime, agents draft and I approve in an inbox.
Pulled proof.The code
The gate no agent can argue with
code=$? echo "$code" > "$ARTIFACTS_DIR/.validate-exit" echo "validate.sh exit_code=$code" echo "--- last 150 lines of validation.log ---" tail -n 150 "$log" if [ "$code" -eq 0 ]; then echo "<promise>GREEN</promise>" fi exit 0until: GREENuntil_bash: 'test "$(cat "$ARTIFACTS_DIR/.validate-exit" 2>/dev/null)" = "0"'max_iterations: 8fresh_context: trueThe loop ends when a shell test reads exit code 0 from a file. The agent's opinion of its own work is not an input.
The reel.The walkthrough
Watch it run
Corrections.What it fixes
The problems it solves
Nine apps, nine databases, nine logins.Six apps on one database and one sign-in.
Agents that say “done” when they are not.A shell test decides. No AI step can end the loop.
Knowledge lost in chat history.Versioned markdown every agent reads and writes.
Agents that publish on their own.Drafts only; I approve in an inbox.
AI bills with no ceiling.A fixed monthly budget for the runtime agents.
Editor's letter.Why I built it
Why it exists
One person, one company, three lines of work. The system is not one of them; it is what operates all three.
It began with a gap in my own business: the one piece of software that turned work into invoiced revenue was pointed at the wrong industry. Now the specs are how the system builds itself.

Against the rack.Better than average
Against the usual tools
Against Devin and Cursor's cloud agents, and Zapier or n8n as glue. Their side was read from each vendor's own docs on 2026-09-27.
| What | The market average | This app |
|---|---|---|
| Who decides it is done | The agent tests its own work, then opens a pull request. | A test script outside the agent must exit 0.vendor's page |
| Data | Each app keeps its own data; triggers copy it between them. | One database, one schema per service.vendor's page |
| Memory | Rule files and saved notes, scoped to one repo or organisation. | One versioned vault of 1,641 pages across all the work.vendor's page |
| Approval | Approval steps exist, but you add them per workflow. | Drafts by default; a person approves in an inbox.vendor's page |
The imprint.How long it took
894 commits in 297 days
- commits
- 894
- days with a commit
- 71
- days, first commit to today
- 297
- First commit, now the booking app
- The monorepo is born; the apps move in with their history
- Latest commit. The vault adds 971 commits over 55 days.
Measured: git log across the monorepo, my own commits only, 2026-09-27. 646 imported template commits are excluded.
Colophon.Where it sits in the ledger