44 sites, one engineer, a fleet of agents

A portfolio of 44 domains on Cloudflare Workers, kept alive by scheduled agent roles that cost nothing when things are healthy and cannot ship without passing the same gates I do. This site is one of them.

client
On my own time
role
Builder and operator
when
Ongoing
drawn by
Jesse Tamburino
SCHEDULER · CRON CONTAINER PER SITE01watchdogevery 15 minengineerevery 30 minerror scanevery 5 minweekly rolesseo, planner, writerEVERY TICK02Bash probeszero model callson a healthy tickModel passonly on real work,turn + time budgetGATES03Hooks + buildno bypass flags,no laptop deploysSHIP04GitHubpushWorkers Buildsbuild + deploy44 Workersone per domaindrafts of personal writing never auto-publishOBSERVE05cf-stats → Grafanasite-trackeruptime → Slack
Probe cheaply, think only when needed, ship only through gates.Hover a step below to find it on the sheet. Scroll sideways on small screens.
44domains on Workers
5 minerror-scan interval
0laptop deploys

the problem

Running dozens of production sites alone means the operations work scales with the number of sites unless something else does it. Handing that work to AI agents is only acceptable if they are cheap when idle, bounded when busy, and unable to skip the guardrails.

Constraints

  • Most ticks find nothing wrong. Those ticks should cost nothing.
  • Agents get budgets: turn caps and wall-clock limits per role.
  • Nothing deploys from a laptop. Every change ships through GitHub and Cloudflare Workers Builds.
  • Anything written in my voice is a draft until I read it.

Stack

Cloudflare WorkersAstroGitHubWorkers BuildsDockerBashPythonFastAPISQLiteGrafanaClaude

how it is built

  1. 01

    Scheduler

    A cron container per site. A watchdog every 15 minutes, an engineer every 30, an error scan every 5, and weekly SEO, planning and writing roles.

  2. 02

    Bash first

    Each role starts as a shell orchestrator doing the mechanical checks with zero model calls. The model pass only runs when the sweep finds real work.

  3. 03

    Gates

    Commits go through git hooks and a production build. No bypass flags, no override variables.

  4. 04

    Ship

    Push to GitHub; Cloudflare Workers Builds builds and deploys. One Worker per domain.

  5. 05

    Observe

    A custom Cloudflare API telemetry collector (cf-stats) feeding Grafana dashboards, a FastAPI/SQLite site tracker, and uptime checks that alert to Slack. Every Slack alert is also written to disk, where the error scan picks it up.

calls I made

Why it looks like this.

01

Agents are the expensive path

Cheap deterministic probes run every tick; a model only gets invoked when there is something to fix. Healthy is free.

02

Same gates as a human

Agents commit through the same hooks and build as I do. A guardrail an agent can turn off is not a guardrail.

03

Write down what broke

The fleet taught me things the docs did not, like cron triggers that report healthy and never run. Those become Field Notes.

Want the longer version, with the parts that went wrong?

Ask me about it