BackFrançais

The Lab

A software factory I run alone: scheduled agents push five products forward while I'm off doing something else. This is the machine room, numbers and all.

31
scheduled agents
2,892
state commits in 29 days
393
tasks finished, out of 518
132
PRs opened by agents
172
lessons written down

Every number here was pulled by the system itself. This page knows none of them by heart.

Where it runs

Three machines, three reasons to exist

The split isn't for looks: each machine does what the other two can't.

A server

for uptime

Most of the agents run here. It doesn't sleep, doesn't suspend, and doesn't depend on my home Wi-Fi. Anything with no reason to live somewhere else lives here.

An old laptop, at home

for the IP address

Some sites answer 403 to a datacenter address and 200 to a residential one. This node exists for that gap, and to keep a browser that's genuinely logged in. It has no shell on the server: three keys, one operation each.

My Mac

for whatever needs a human

Tasks marked “machine: mac” wait for someone at the wheel — an account to open, a form to submit, a decision to make. Agents get them ready; they don't make the call.

The day

49 scheduled runs a day

A typical day, read straight out of the system's timers. Work starts at 7 AM and stops at 10 PM. Nothing runs overnight, and that's on purpose: a failure at 3 AM would be waiting for a human anyway.

0
3
6
9
12
15
18
21

Tap a dot to see who starts — 7 runs land inside the busiest hour.

  • Code
  • Planning
  • Content
  • Monitoring
  • Home node

The path

From idea to production, without me in the middle

Seven steps, and exactly one of them is mine. What makes this usable is the split of roles: no agent signs off on its own work.

  1. 01

    A task shows up

    Written by a monitoring agent, by a weekly review, or by me in two sentences. It carries its owner and the machine able to do it.

  2. 02

    An agent picks it up

    Test-first, one task at a time, all the way to done. It hands back a draft pull request — never a direct push to the main branch.

  3. 03

    A different agent reviews it

    The reviewer is never the author. It sends the PR to merge, sends it back with a reason, or writes up a verdict for me.

  4. 04

    I merge

    The merge stays a human act. It's the shortest link in the chain and the only one I refuse to automate.

  5. 05

    Deployment follows

    Merging ships it, with a health check and an automatic rollback if the service stops answering.

  6. 06

    A verifier asks for proof

    “Done” doesn't settle it: an agent re-tests the result against a fact — a request, a command — and reopens the task if nothing confirms it.

  7. 07

    The log closes

    It all ends up written in the state repo. The rule is blunt: what isn't recorded there never happened.

The crew

31 agents, 5 kinds of work

Not one of them is a generalist. Each starts with no memory, reads the state, does one thing, writes it down, and stops.

Code5

  • Architecture review

    1st of each month, 11 AM

    Once a month it takes one repo in rotation and looks for what deserves a deeper design. It brings options; the call stays mine.

  • Code review

    daily, 1:30 PM and 7 PM

    A second set of eyes on open PRs: sends them to merge, sends them back with a reason, or writes up a verdict for me. It never touches the code itself — it would be reviewing its own work.

  • Execution

    daily, 11 AM and 5 PM

    Takes backlog tasks one at a time, test-first, all the way to done, and hands back a draft pull request. It runs until the queue is empty, not until a set hour.

  • Proof, not claims

    hourly, 8 AM–10 PM

    Fires after every “it's done”: re-tests the claim against a fact — a request, a command, a grep — and reopens the task if nothing backs it up.

  • Security watch

    Fridays, 10 AM

    Reads merged PRs, the dependency audit, and infrastructure drift. Advice only: it doesn't patch and it doesn't merge.

Planning7

  • Analytics

    Mondays, 10:30 AM

    Reads traffic and Search Console, finds where the funnel leaks, and turns each leak into a task. Every finding has to rest on a number.

  • Lesson consolidation

    daily, 4 PM

    Every Sunday it turns the week's lessons into deterministic guardrails — and throws out the ones that teach nothing.

  • Marketing strategy

    Mondays, 1 PM

    Holds the projects up against the written strategy, picks the focus for the week, and opens the tasks that go with it.

  • Marketing watch

    daily, 9:30 AM

    Did today's post go out, are the queues filling, did a content pipeline stall. It stays quiet when everything is fine.

  • Morning brief

    daily, 8:45 AM

    Reconstructs the last 24 hours, writes the brief, and sends exactly one ping. It fixes nothing and never touches code.

  • Product eye

    Thursdays, 11:30 AM

    Walks each product like someone seeing it for the first time and proposes changes. It proposes; it doesn't decide.

  • Weekly review

    Sundays, 5 PM

    Rereads the logs and the task board, then sets next week's priorities. It doesn't code; it thinks.

Content8

  • Review: an architect's site

    every other Friday, 12:30 PM

    Fact-checks the draft, then merges or refuses. The last gate before a working professional's public site.

  • Review: DesignPilot

    Wednesdays, 12:30 PM

    Decides whether it goes out: opens the PR, waits for green, merges.

  • Review: Rat List

    Saturdays, Wednesdays, 2 PM

    Waits for CI to go green and merges — or refuses, and says why.

  • Review: Teste Nacionalidade

    daily, 12 PM

    The last gate before publishing: merges up to two articles per run, or leaves the branch alone and says exactly what's wrong with it.

  • Writing: an architect's site

    every other Friday, 9:30 AM

    One article and a draft PR. It doesn't merge its own work: another agent checks the facts.

  • Writing: DesignPilot

    Wednesdays, 10 AM

    One French article per run, wired into the internal links, delivered on a branch.

  • Writing: Rat List

    Saturdays, Wednesdays, 10:30 AM

    One French article per run, delivered on a branch for review.

  • Writing: Teste Nacionalidade

    daily, 10 AM

    One article per run, checked against primary sources, in Portuguese and English, internal links included. It never pushes to the main branch.

Monitoring4

  • Ground truth in production

    Saturdays, 9 AM

    Checks every week that the promises still hold: buttons go where they say they go, the storefront doesn't contradict the contract, certificates are alive. It only opens a task on a failure it reproduced itself.

  • Production errors

    daily, 9:40 AM

    A reported error becomes a task for the agents; once it's fixed, it gets closed back at the source.

  • Regulatory watch

    daily, 9:15 AM

    Watches for a regulation that one product's launch depends on. An agent whose whole job is to wait properly.

  • Server health

    daily, 8:35 AM

    Daily digest: disk, memory, containers, updates, backups.

Home node7

  • Engagement concierge

    daily, 12:04 PM and 6:04 PM

    Drafts replies to other people's posts, in my voice. It publishes nothing on its own.

  • Execution at home

    daily, 10:30 AM and 5:30 PM

    Takes the tasks that need a real browser: visual acceptance after a merge, checks from a residential address. It returns a verdict with its evidence attached.

  • Links behind the firewall

    quarterly

    Checks links a datacenter address can't reach: 403 from the server, 200 from home.

  • Outreach: drafts only

    weekdays, 11 AM

    Finds up to five profiles matching one product's target and writes personalized messages. Strict draft mode: it sends nothing and follows no one — I approve the batch.

  • Post of the day

    daily, 8:04 AM

    Prepares and publishes a social account's daily post, once I've approved it with a button.

  • Session health

    daily, 7:15 AM

    Checks that the node's browser is alive and that sessions haven't been logged out. It stays quiet when all is well.

  • Weekly stats

    Sundays, 7:01 PM

    The week's numbers on the account, and a read on what actually landed.

The memory

A git repo as the source of truth

Logs, tasks, decisions, and lessons all live in a versioned repo. Agents read it before they start and write to it before they finish — it's the only way they talk to each other, since they share no context at all.

2,892 commits in 29 days, roughly 100 a day, signed by 31 distinct identities. The busiest ones aren't people:

  • pm-executor880
  • megabrain560
  • code-reviewer424
  • verifier354
  • mcp119
  • home-executor102
  • mac-session96
  • brain-board65

The loop

The system learns from its own failures

When an agent gets burned by something non-obvious, it writes a lesson: symptom, cause, how to guard against it. 172 are on file so far. Every Sunday another agent rereads them and pushes each one as far up this ladder as it will go:

  1. 1

    A deterministic guardrail

    A script that says no. The best outcome: the lesson becomes impossible to forget.

  2. 2

    A fix to that routine's prompt

    When only the agent involved can fail this particular way.

  3. 3

    A fix to the shared skill

    When the mistake is waiting for anyone who touches this area.

  4. 4

    A line in the standing rules

    The last useful rung: plain text that everyone rereads.

  5. 5

    The trash

    If the lesson teaches nothing a competent agent would not work out on its own, it gets deleted. A knowledge base that grows without pruning isn't free — it costs attention.

Hitting the same lesson twice doesn't open a second file: the repeat gets recorded in the first one, as proof that a written rule wasn't enough.

The limits

You don't trust an agent — you fence it in

Autonomy stops where the risk starts, and that line is written in code, not in good intentions.

Refusals, not instructions

A deterministic hook blocks the irreversible before it runs: production databases, dumping secrets, recursive deletes, force-pushing the main branch. It doesn't ask the model what it thinks.

Zones that are off limits by design

Migrations, auth, payments, data isolation: an agent may prepare the change, never apply it. That isn't a setting, it's a boundary.

Keys that know one thing each

The machine at home has no shell on the server. Each of its keys is pinned to a single command — write a log entry, read a file, push a repo.

Secrets don't leave

An agent can use an environment variable without ever being able to print it. The gap between those two is what makes the autonomy acceptable.

My part

What's left for the human

Anything headed for the real world waits on a yes: a public post, an outgoing message, a sensitive action. One tap to approve, one to decline. And 46 tasks are sitting right now on a call only I can make.

  • Merge, or refuse.
  • Break the tie when two agents come back with opposite options.
  • Touch the off-limits zones, when it genuinely has to happen.
  • Decide what deserves to exist — which is where the real job starts.

The rest — writing, reviewing, verifying, publishing, watching, recording — runs without me. And the day I stop watching, it keeps going: 33 tasks were thrown out by the agents themselves, because they were badly framed.