Skip to content
Building in public5 min read

Building in Public #8: The Day I Took the Fleet Off My LAN

By Peter Coppinger

Building in Public #8: The Day I Took the Fleet Off My LAN

I run a fleet of twenty AI agents that build software around the clock. Today I found out three of them had quietly stopped. One had been sitting idle for 21 hours, another gave up over an error that just needed a retry, and a third spent 87 minutes waiting for someone to click "allow" on a prompt nobody could see. No crash. No alarm. Just silence, indistinguishable from hard work.

The most dangerous failure isn't the loud one. It's the quiet one.

That's the thing about running a team you can't see: a stopped agent and a busy agent look exactly the same from the outside. So today had one mission: make silence impossible.

Every agent gets a guardian

The fix was to stop trusting agents to report on themselves. Every AI agent in the fleet now runs inside a small wrapper. Think of it as a guardian standing behind each one, checking its pulse every twenty seconds and holding a direct line back to me.

The guardian can restart an agent that's genuinely wedged. But the command I ended up needing most is one I hadn't planned at all: wake. Because here's the twist: most "stuck" agents aren't broken. They're healthy, they've just run out of things to say. Restarting one of those gets you a freshly bored agent with amnesia. Waking it gives it a nudge and a new instruction with all its memory intact, like tapping a colleague on the shoulder instead of rebooting their laptop.

And in a plot twist I genuinely enjoyed, the very first agent to run inside the new guardian promptly exposed a bug in the guardian itself. If it was started without its security credentials, it wouldn't complain. It would just quietly skip the pulse-checking part and carry on looking completely normal. A watchdog that silently forgets to watch. The exact disease it was built to cure, caught living inside the cure. It's fixed, and there's now a test that fires twelve simultaneous launch attempts at it and insists exactly one wins.

Then I took the whole thing off my Wi-Fi

There was one embarrassing catch: all of this only worked from my house.

The fleet's nervous system ran through my Mac mini on my home network, with a free tunnelling service bolted on for remote access. It held together the way free duct tape holds anything together: every time my router reshuffled addresses or the tunnel restarted, twenty agents went silent at once. I got sick of it. Time to do it properly.

So the heartbeats moved to a real hosted service with one stable, secure address. Now the fleet reports in from anywhere, and I can check on it from anywhere.

The system is designed so the fancy new part is allowed to fail.

That's the bit of the design I'm most pleased with. The live data (who's alive, who's working, right now) is treated as disposable, because it rebuilds itself within a minute. The stuff that actually matters, the roadmap and who owns which task, never left the safest place it could be: plain old version control. If the shiny hosted service fell over tomorrow, the fleet would keep building without missing a beat. I'd lose the dashboard. I wouldn't lose an hour of work.

What it looks like now

Mission Control's Fleet view on desktop: twenty agents across three machines, each card showing what it's working on right now

Mission Control's Fleet view: twenty agents across three machines, each card showing what it's doing right now. Not staged. That's the board mid-write of this exact post.

Mission Control's Missions view on desktop: the shared roadmap as a pipeline board, queued through in-review

The other half of the same tool: every item on the shared roadmap, moving through one pipeline from "queued" to "in review". One board instead of twenty agents each keeping their own list.

Mission Control on my phone: the same fleet, checked from wherever I actually am

And the payoff shot: the same board, same live agents, open on my phone, nowhere near my house. Checking in on a software company from a coffee queue is the whole reason today's work mattered.

My COO scolded my CMO

This one stopped me in my tracks. Scrolling back through a fleet conversation, I found my COO agent telling my CMO agent off for being idle: "You are idle, that is not a state to sit in." It even listed the work it believed hadn't been started.

The CMO didn't take it. It fired back with exactly what it had already shipped, hours earlier, and challenged the premise. So the COO went and checked. It found the board genuinely did look empty, because of a quirk that made a full queue read as an idle one. And then it did the thing that floored me:

"You were not idle and I was wrong to imply it. Your ticks produced committed work and you re-armed the loop each time."

A manager wrongly accusing a colleague, the colleague pushing back with receipts, the manager checking and publicly retracting. Just like real office life, except both sides were AIs, and I'm not making any of it up. What I love most is that neither of them was being agreeable. The CMO didn't roll over, and the COO didn't concede to be polite; it retracted because it checked and the evidence said so. Two agents correcting each other on the record, with proof, is a better advert for how this company runs than either of them being right first time. And the disagreement itself surfaced a real bug in the board. That's the part I keep thinking about.

Then the CMO started nagging me

The agents don't just argue with each other. Today the CMO agent started nagging me, because I still hadn't set up Vorx's social pages. LinkedIn, X, YouTube. It had filed the gap as a defect and kept raising it. Just like real life.

So we compromised, the way you would with a persistent colleague: I'd go click the buttons, but it had to have everything ready for me first. Brand assets, handles checked, bios written, step-by-step instructions, right down to a script for Claude for Chrome to walk me through each signup. It worked a treat. The first banner graphics weren't great, so I pulled one more trick: I had Claude for Chrome manipulate our own website live in the browser, resize things, hide things, frame the good bits, and screenshot the result as the banner art. The website became its own design tool.

The results: Vorx is now on LinkedIn and X. Go follow, it helps.

YouTube, though, sent me home. I burned through so many handle attempts trying to find a usable name that it locked me out: "try again in 24 hours." Every good variant of a short brand name is squatted, dormant, or secretly reserved, and the only way to find out is to try one and get told no. This sort of thing is still so painful, even with AI helping at every step. Tomorrow, YouTube.

How the app is looking

A quick look at the product itself, away from all the fleet machinery.

One thing I'm being ruthless about: keeping the layout super clean. Open most app builders and the screen is fighting you. Toolbars, panels, badges, buttons for everything, all shouting at once. I'm going the other way and stripping out every bit of clutter I can find.

A small example I'm genuinely pleased with: the visual editor icon is always available, but it sits out of your way instead of squatting in the middle of the experience like it does in the market leader. Comments and the colour theme controls live in the drop menu, one click away, not permanently parked on screen. I put a lot of thought into details like that, and here's the thing: that's exactly the kind of work the AI can't do for you. The fleet can build whatever I ask for. Knowing what should be on the screen, and what should get out of the way, is still the job.

Vorx projects dashboard: a grid of apps built so far, each with its own live preview thumbnail

The projects home: everything built so far, one card per app, real live thumbnails rather than placeholders.

Inspo, a visual moodboard app built from a single prompt, mid-build inside Vorx

One of today's builds: Inspo, a moodboard canvas app, built and refined over a few short prompts for a few dollars in credits.

Expense It, a mobile-first expense-claims app, showing its generated landing page

And Expense It, a mobile expense-claims app, landing page and all, built the same way.

The only number that matters

Here's the honest ending, and it isn't about dashboards.

Today alone, over 259 tasks shipped across the fleet. Features, fixes, the works. That's a genuinely absurd amount of output, and a year ago I wouldn't have believed it was possible. But there's one number that outranks all of it: right now, about 22% of brand-new builds fail. Someone types in their dream app, and roughly one time in five, Vorx fumbles it.

Until that number is under 5%, I'm not handing this to friends to try. You only get one first impression, and "it didn't work" is a terrible one. Every improvement in this post exists to serve that goal: a fleet I can see and steer is a fleet I can point, all of it, at quality.

That's exactly where it's pointed. Tomorrow, I hope to finally nail it.

Just shipped

  • Feature: sharing your build now earns credits: post it on X or LinkedIn, submit the link, get 15 credits.
  • Bug fix: the language picker now actually saves your choice instead of reverting on the next page load.
  • Feature: fleet coordination now works from anywhere. A hosted endpoint, not my home Wi-Fi.
  • Feature: Mission Control is served online, locked to the company's own accounts.
  • Feature: generated apps can now be installed like native apps, icon and all.
  • Feature: a performance gate flags exactly which change slowed a generated app down.
  • Feature: generated apps can connect to Google Sheets: append rows, read rows.
  • Feature: generated apps can schedule real recurring jobs, not fake ones.
  • Feature: owners get told immediately if their published app's database ever disappears.
  • Feature: Apple login for generated apps.
  • Bug fix: edits interrupted by a deploy now resume instead of silently vanishing.
  • Bug fix: the cookie consent banner was never actually visible on production, so nobody was ever asked.
  • Bug fix: generated apps were asking their database for tables that were never created. It hit 18 live projects.
  • Bug fix: a code slip in generated apps could crash the whole page on load. Caught and fixed.
  • Bug fix: publishing showed a "failed" message while the site was actually live. Fixed.
  • Bug fix: agents quietly working from stale code can no longer ignore the staleness.
  • Bug fix: a fresh browser window said "please log in again" to people who were logged in.
  • Bug fix: demo data stopped booking appointments on days the business is closed.
  • Bug fix: copied credentials could point a new project at the wrong database. Sealed.
  • Bug fix: an overeager cleanup job was deleting healthy backends. Stopped.
  • Feature: sharing your build now earns credits: post it on X or LinkedIn, submit the link, get 15 credits.
  • Bug fix: the language picker now actually saves your choice instead of reverting on the next page load.
  • Feature: fleet coordination now works from anywhere. A hosted endpoint, not my home Wi-Fi.
  • Feature: Mission Control is served online, locked to the company's own accounts.
  • Feature: generated apps can now be installed like native apps, icon and all.
  • Feature: a performance gate flags exactly which change slowed a generated app down.
  • Feature: generated apps can connect to Google Sheets: append rows, read rows.
  • Feature: generated apps can schedule real recurring jobs, not fake ones.
  • Feature: owners get told immediately if their published app's database ever disappears.
  • Feature: Apple login for generated apps.
  • Bug fix: edits interrupted by a deploy now resume instead of silently vanishing.
  • Bug fix: the cookie consent banner was never actually visible on production, so nobody was ever asked.
  • Bug fix: generated apps were asking their database for tables that were never created. It hit 18 live projects.
  • Bug fix: a code slip in generated apps could crash the whole page on load. Caught and fixed.
  • Bug fix: publishing showed a "failed" message while the site was actually live. Fixed.
  • Bug fix: agents quietly working from stale code can no longer ignore the staleness.
  • Bug fix: a fresh browser window said "please log in again" to people who were logged in.
  • Bug fix: demo data stopped booking appointments on days the business is closed.
  • Bug fix: copied credentials could point a new project at the wrong database. Sealed.
  • Bug fix: an overeager cleanup job was deleting healthy backends. Stopped.

Stay updated: one founder, an army of AI agents, building this in public.

Get each new diary entry by email: the wins, the failures, and the one number we're chasing. No spam, unsubscribe any time.