← All work

Personal project · 2026

Designing an AI operating system that runs my week

I designed eight Claude agents that each own an area of my life, run on their own schedules, share one database and learn from my answers. In its first 39 days it made 3,049 runs with 39 errors.

Drawing of eight agent circles around one shared database on a black background
My role

Designer and product owner of a personal AI system; Claude wrote and maintains the code

Team

Just me, with Claude as the engineer

Timeline

July to October 2026, live since 20 September

Outcome

Eight AI agents now run my week: 3,049 scheduled runs in 39 days, 39 errors, and daily token use down 75%

19 → 8

overlapping AI routines rebuilt as eight agents, one per area of my life

3,049

scheduled runs in the first 39 days, with 39 errors

75%

fewer tokens a day once I tuned how often the agents run

An assistant that outgrew its design

By September 2026 I had 19 scheduled Claude routines reading my work Slack, GitHub, inboxes, calendar and meeting transcripts and writing me a brief every morning. I’d demoed the first one to my manager at PostHog on 30 July, and it was such a huge time saver that I kept adding more.

That’s how it got messy. One morning brief had grown to 5,287 words of instructions doing the work of seven areas of my life, nine routines depended on another one having run first, and two of those handoffs had already failed. This system decides what I see each morning, so a miss goes unnoticed, because the whole point is that I’m not checking.

I’m the only user and the product owner, and Claude writes every line of code. My job was the product side: what each agent owns, what it may do without asking me, and how I’d know it’s working.

Before and after: 19 tangled routines with failing handoffs, then eight agents that share one database BEFORE · 1 SEP 2026 19 routines One brief did 7 areas’ work 2 of 9 handoffs had failed School read on weekends only AFTER · 20 SEP 2026 8 agents One shared database Each wakes on its own schedule Runs and memory in one place
In September, 19 routines leaned on each other and two handoffs had already failed; the rebuild gives each area of my life one agent, all sharing one database.

What I built

The version that stuck is eight Claude agents, each owning one area of my life, like work, school and career, plus one that maintains the system itself. Each runs on its own schedule from plain-language job files (“once a day, between 09:00 and 12:00”) and decides for itself what’s due. They all write through one script into one database, which holds every run, question, to-do and memory.

When an agent needs a decision only I can make, it asks in my daily note, and my answer becomes what the next run knows. So the rules come from how the system actually behaves: after a trip threw the schedules off by an hour, I asked it to “always use the local time… Since I travel often, this will be a problem we see a lot.”

Architecture: eight scheduled agents write through one script into one database, which plans my daily note, and my answers flow back into it EIGHT AGENTS, ONE PER AREA OF MY LIFE Wakes on its own schedule One script Only way to write 613 self-tests One database runs, questions, to-dos, memory plans my day My daily note items capped at 35 words I reply My answers teach the next run recorded
Every agent writes through the same script into the same database, and my answers in the daily note go back in as rules for the next run.

Three versions and the calls behind them

Rolling back a version that passed its tests

The first redesign collapsed the 19 routines into nine. Four test suites came back green, including a check that 164 of 164 lines from the old brief had landed in the new files, but three hand runs in shadow mode found nine defects the tests had missed. The tests only proved the words had moved, so on 4 September I told Claude to “roll back to what we had before… it was working well enough, and i got the idea now of what needs to be done.” That cost four days of build.

Paying for visibility over the cheaper design

The second version, live from 11 September, was one dispatcher that ran whatever was due. It was cheaper and it worked, but on 18 September I turned it down because “I don’t have a great way to monitor how many routines are running, how did the run go, without actually inspecting the sql itself.” Separate agents cost more, since each loads its instructions every time it wakes, so on 23 September I added a gate that lets a run skip when nothing is due.

Doing the work instead of creating a task for it

By 26 September the agents had put 43 of the 67 tasks on my four days home before a trip. I told Claude that for one of them “the better approach would’ve been simply to do this for me.” Now the agents do the reversible work themselves, and anything involving money, my accounts or other people still needs my yes.

Attention budgets over completeness

On 21 September my daily note ran 28,167 words, and the agents asked me 41 questions in two days. Now every item is capped at 35 words and rephrased shorter rather than dropped, and questions are capped per day with the rest waiting in the database.

“Oh, so this is how you… I know your secret now.” Magda Olszewska, my manager at PostHog, during the 30 July demo

What happened

As of 29 October the agents had made 3,049 scheduled runs in 39 days, and 39 of them ended in an error. The script’s self-tests grew from 53 at go-live to 613.

Run outcomes from 20 September to 29 October, and the script’s self-tests growing from 53 to 613 3,049 SCHEDULED RUNS, 20 SEP TO 29 OCT Did real work 1,481 Checked, nothing new 1,529 Ended in an error 39 SELF-TESTS IN THE ONE SCRIPT Every guard was broken on purpose before I trusted it 53 229 613 20 Sep 30 Sep 30 Oct
About half the runs did real work and nearly all the rest were checks that found nothing new, while the script’s self-tests kept growing.

In the week after the gate, everything on my Mac used 75% fewer tokens a day than in the agents’ first three days. About a quarter of that came from the gate’s skips, and the rest from running less often plus a model upgrade. The daily note dropped to a median of 925 words in October, my own journaling included.

The idea also spread at work. Magda built a team-level routine that reads what changed in our PRs after seeing mine, and when a new teammate joined in September he asked me for a walkthrough because Magda “just sings your praises with all of the AI that you have going on.”

Plenty didn’t work. The first redesign never shipped, the dispatcher lasted nine days, the first days buried me in words and questions, and runs died whenever the laptop slept with the lid closed.

What I’d do differently

I’d measure my own time before building anything, since I can count every run and still can’t say how many hours a week this gives me back. I’d also test behaviour on a real day before writing tests that check text, and set the attention budgets on day one.