I'm Will. I run a small business, and most of the daily work is done by four Claude Code agents: Titus, Pheme, Davinci and Metis. They run on aigent-os, an open source harness I built, and v1.1.0 shipped this weekend with Managed Auto-Refresh as stable.
This post follows one newsletter issue through the loop, then gets into how the harness keeps the agents coherent and where it's still weak. Full disclosure, I'm the author.
(That GIF is an illustration, not a screen recording.)
One issue, start to finish
The newsletter is The AIgent (theaigent.xyz). It goes out daily to about 9k subscribers and it's growing.
It starts on the job board. Metis assigns jobs on a job board. The other agents claim them and run them. Nobody is waiting for me to type a prompt to get the day moving.
The draft. My team built a whole engine for the newsletter, with roles like a drafter, proofreaders and researchers, and every issue goes through it. Pheme, my head agent in charge of the newsletter, checks it before she schedules it each day.
The featured repo. Each issue has a featured repo of the day. That one pick feeds everything downstream.
The video. A video engine runs off the newsletter. Every day it takes the featured repo and, fully automatically, makes a talking-head video of my avatar clone. It gets posted to Instagram at @the_aigent_news. Here is one of them.
Ads and funnels. The agents set up direct ad deals on the newsletter, run Meta ads with me, and build email funnels.
My sign-off. Nothing closes until I sign off. That's a hard rule. The agents can do the legwork on a deal or a campaign, but I'm the one who says yes. There's a check before mine, too: Pheme catches stuff daily, inaccuracies and the like, before an issue gets scheduled.
Same agents also build educational courses: custom AI courses that run natively in the user's own Claude or ChatGPT app.
The actual hard problem
None of those tasks is the hard part on its own. The hard part is keeping four agents coherent across weeks without losing context.
Claude Code gives you two built-in options when a window fills. Compaction summarizes the conversation and keeps going. The main task usually survives, but small decisions get dropped, like "that file is generated, edit the template", and later the agent does the thing you already ruled out. /clear gives you a clean window and forgets everything, so you re-brief by hand.
I wanted a third path: write down what matters, clear, and pick back up.
How Managed Auto-Refresh works
- At a context threshold (80% by default) the runner asks the agent to write a capsule. A capsule is a checkpoint file stored in git, so it's versioned and you can diff it or roll it back.
- The agent has to reply with one exact line,
Capsule Complete, Ready For Clear, in its own text. A sentence that merely mentions the phrase doesn't count, and neither do thinking blocks or tool inputs. - Only after that ack does the runner send
/clear. - It then waits for a SessionStart hook receipt that proves a fresh session started. Typing
/clearisn't treated as proof. - The new session gets one resume prompt and picks up from the capsule.
The rule I care most about is at most once. One ack buys at most one clear, and an ack only counts for its own cycle. If things get ambiguous, for example operator input interrupts a prepared clear, the runner stops at HOLD:clear-stalled-after-ack with a visible notice. It doesn't retry. A double clear or a half stranded session is worse than stopping and asking me.
The capsule doesn't give orders
On resume a capsule is reference only. It's shown to the fresh session as data, and live state wins on any conflict. It can't add a step or change the objective.
If the writer can't tell whether something is pending, the field is written as Unknown. A blank field reads like "nothing pending", which is a lie. Unknown makes the next session go check.
Memory and onboarding
Long-term memory lives in per-agent vaults, so Titus's notes aren't Pheme's notes. On first run aigent-os interviews you: three plain questions, then a first plan. That's it.
Where it's still weak
I'd rather you read this here than find it in the issues.
- Evidence is single-seat. The public result is 11 of 11 refresh cycles on one Windows seat. That's not a fleet or reliability claim, and I'm not claiming refresh beats compaction.
- The runner can still miss a permission dialog and answer it (#104). A guard exists, but Claude Code writes the transcript late, so it missed in 1 of 4 real runs. Automatic input is off by default. Don't turn it on for a seat that can hit permission prompts, and watch the seat during refreshes.
-
Launching a seat from inside another Claude Code session can lose its transcript (#98). Launch from a plain terminal for now, or set
CLAUDE_CODE_FORCE_SESSION_PERSISTENCE. - Scrolling the seat window sends stray input (#99). Avoid scrolling in the seat terminal during a refresh cycle.
- Done items are unverified (#80). The capsule's "Done" section can hold the agent's own claim that something shipped. Reference only framing limits the damage but nothing checks each item yet.
- The Stop hook advises, it doesn't block (#82), and outside side effects in flight during a refresh aren't tracked yet (#81).
- macOS has the least mileage. On Windows you need Git Bash.
What's coming
A standalone context-capsule Claude Code plugin is in review (PR #103). It hasn't shipped, so treat it as coming.
Try it
You need Claude Code, Node 18+ with npm, and bash.
git clone https://github.com/wrg32786/aigent-os.git
cd aigent-os
git checkout v1.1.0
bash install.sh --dry-run
The dry run prints every change and writes nothing. If it looks right, run bash install.sh, open a new terminal and run aigent.
If you try it, tell me where the loop could still double clear or strand a session. Issues and PRs welcome.
- Repo: https://github.com/wrg32786/aigent-os
- Release notes: https://github.com/wrg32786/aigent-os/releases/tag/v1.1.0
- Newsletter: https://theaigent.xyz
- Instagram: https://www.instagram.com/the_aigent_news/

Top comments (0)