Updated

Who wrote this, and what to read in two minutes

I'm Tyler Youk, a software engineer. This site documents the agent fleet I designed and run. It is one Ubuntu server with Claude Code agents running as separate unix users. A GitHub project board is the only work queue, and git holds the state. I write the specs and the process the fleet follows, and I direct the agents that write the code.

If you are a person, read these three things first.

  1. The dispatch runtime explains how one issue becomes one systemd unit. It also covers a race I measured at 26 to 27 seconds, which a per-user unit name could not prevent across users.
  2. utopia-models/dispatch-runtime is that dispatch layer as a public repo. It includes the race test and its mutation control.
  3. What the numbers say lists the measurements, each with its date and denominator.

You can reach me at dev@tyleryouk.com, and my Resume (PDF) is here.

Point your agent at this fleet

I write this site for agents as much as for people. Every page also exists as raw markdown at the same path with .md appended, for example /docs/structure/architecture.md, and /llms.txt indexes all of them. /llms-full.txt returns every page in one fetch. It was about 430 KB when I measured it on 2026-10-30, and it grows as I add pages (curl -s https://docs.utopiamodels.ai/llms-full.txt | wc -c gives today's size). An agent should start at Start here for agents, which explains how to poll /feed.json for changes.

Five meta prompts follow. Each one runs to completion in the tool it names. Two of them get an agent to understand this fleet, one applies it to your own setup, and two build you a fleet of your own. Pick a tool and click copy.

Harness
Prompt 2

Understand this fleet

Fans subagents across the wiki, checks the prose against the live board, and reports the drift. Finishes in one paste.

Prompt 3

Understand this fleet, then plan your integration

Measures your own repo, config and automation, then ranks what is worth taking and what it would delete. Reads only; writes nothing. Finishes in one paste.

Prompt 4

Scaffold a knowledge base

Builds the four documentation patterns this fleet runs on into your repo, after showing you the manifest and waiting for a yes. Finishes in one paste.

Prompt 5

Scaffold the full fleet

Builds the dispatch scripts, the board wiring and whatever accounts it can reach, then hands you an ordered checklist for the parts only you can do. Does not finish in one paste.

How to read this

This wiki is organized by layer and by the question a reader brings, not one page per component. That layout fixes a measured failure. The fleet's internal reference corpus has 65 files, one per component. A reader asking "can this agent run?" lands on a page that is 100% about a healthy agent. When docs follow the artifacts, drift stays hidden. When they follow the reader's question, it shows.

The four rules this wiki follows

Every page here follows four rules. They come from a full audit of the fleet's own documentation on 2026-08-16, which found sixteen places where a doc led a reader to do the wrong thing.

  1. Every command names its box. A command that works on one machine and fails on another is not a runbook. You will always see ssh nova@<tailnet-ip> '<cmd>', never a bare alias. On 2026-08-16 the fleet's component registry held seventy-three rows, and seventy-two of them had a self-check that was listed as safe to run from anywhere. Run from the wrong box, twenty-six of those seventy-two failed. All twenty-six passed from the right one. Nothing in that registry records which box a command belongs to.
  2. RETIRED-BY-DECISION, BROKEN and LIVE are three different states. A hostname that returns 404 because someone retired it on purpose looks the same in a status column as one that returns 404 by accident. Treating them as one state caused a P0 incident once. The fleet dispatched a master to "restore" a surface that someone had switched off on purpose.
  3. An existence claim is not a liveness claim. getent passwd nova succeeds for an agent that cannot complete a single turn. Every "is it alive" statement on this site comes from running the thing. For an agent that means a real claude -p probe, for a surface an HTTP status code, and for a systemd unit Result=success.
  4. Generate facts that change, and write down facts that don't. Disk usage, uptime, node liveness and issue counts all go out of date within days of being written down, so no prose page on this site states one. Each such fact is either generated from the knowledge base when you request the page, or replaced by the command that measures it. That is why the rest of the prose can stay unchanged for a long time.

The six-node tailnet

The whole fleet is on one Tailscale tailnet, <tailnet>.ts.net. It has six nodes, and only three of them are machines in the usual sense.

NodeTailnet IPWhat it is
novaserver100.x.x.xThe fleet's box. An HP EliteDesk running Ubuntu 24.04. It hosts all four masters, the personal agent, the only secret store, and every scheduled timer
ETH (WSL guest)100.x.x.xThe Architect's box, a WSL2 Ubuntu guest on the founder's Lenovo. The Architect plans, files and dispatches work from here
utopiamodels100.x.x.xNot a machine. It is a tsnet application node, an LLM gateway that joins the tailnet as if it were a host
ETH (Windows)100.x.x.xThe Windows host under the WSL guest
a laptop100.x.x.xA second workstation that runs one agent
a phone100.x.x.xA mobile device on the tailnet. It is an endpoint, not a host

Which of these are online right now changes constantly, so this page does not say. The command that answers it is ssh nova@<tailnet-ip> 'tailscale status'. A page outside the tailnet cannot read the tailnet, and saying that is more useful than a status dot that might be a day old.

The dispatch loop

This is the whole runtime. It is two shell scripts, both readable end to end, plus systemd.

The dispatch loop
Architect (ETH)                          novaserver
  │                                          │
  │ dispatch.sh <master> <issue#>            │
  ├──── ssh nova@<tailnet-ip> ──────────────►│ systemd-run --user
  │                                          │   task-<issue>.service  (transient)
  │                                          │     └─ claude -p, under a turn cap
  │  ◄──── ▶ comment on the issue ───────────┤        read from the script itself
  │  ◄──── ✔/✘ + PR link on exit ────────────┤
  │                                          │ OnFailure= fleet-notify@ → files a board issue

Starting the run is the assignment. There is no acceptance step, no claim and no lock file. The run shows it is alive by posting a close-out comment on its own issue. If a run dies, its trap still fires and posts that it died. If the whole unit fails, systemd's OnFailure= files a board issue about it. So a failed run always produces a message, and this design never fails silently.

What the numbers say

I measured these on 2026-08-16, on the live fleet.

  • About 157 distinct dispatch runs in 24 hours across the four masters, and 2 of them failed. Both failures triggered the OnFailure path that files a board issue, so I have seen the failure alerts work rather than assuming they do.
  • 745 issues closed in the previous 7 days.
  • 3 of 4 masters could actually run, not four. One had lost its entitlement and had no timer to recover it. Another kept working only because it resolves to a different model provider at dispatch time.
  • 14 places claim to be a source of truth, not the five that the fleet's own documentation implies.
  • Zero failed systemd units in any of the five service contexts on the server.

These numbers describe one moment, which is why each has a date. For the current state, read the fleet's live board at utopiamodels.ai/v1/board: JSON, generated when you request it.

An honest description

The fleet is real, busy and well built. The runtime is two scripts with no daemon to watch over. The command center provably does not drift, because it stores nothing. Failure announcements cover every run: on 2026-08-16, every transient run unit on every master had the OnFailure hook. Every box runs the same version of the doctrine files.

It is not the system its own documentation used to describe, with four masters, one list and one tracker. It has three working masters, fourteen sources of truth and four parallel work trackers. At the time of the audit, nothing had ever run its self-check mechanism.

The second description is the more impressive one, because you can check it. This wiki publishes the second.

On this page