My first rule for HarsOS was simple: my context belongs to me, not to any one AI app.
Keeping that rule was much harder than it sounds. Over two months I simplified the system three times, rebuilt it bigger every time, and watched it grow to almost 4,000 files and eleven agents before I finally understood what was going wrong. Here's the whole thing, with the dates.
Plain text first, because every agent can read it
I started with plain text files, the kind called Markdown: ordinary text with a # for a heading and a dash for a bullet. AI models read them better than anything else, every tool on earth can open them, and nobody can take them away from me. If every app I use disappeared tomorrow, the files would still be there and I could rebuild from them.
Then I added agents that live in the cloud and run all day. The first real problem showed up straight away: how do they stay up to date with work I'm doing on my laptop?
I was doing coding and knowledge work at the same time, so the answer looked obvious. My code already lived in an online repository, a shared copy of a project that every machine can pull from and push to. Put the knowledge there too. The laptop pushes, the cloud agents pull, done.
It wasn't done. A copy only moves when someone moves it. A tool that runs in a chat window on my laptop and forgets everything when I close it behaves nothing like an agent that runs around the clock with its own memory. I had a copy on my laptop, a copy online and a copy inside each cloud agent, and every one of them was being written to.
On 23 September I described it like this: the local copy drifted from the online copy, which drifted from the agent's copy, and it got too confusing. Three directions of drift, and I was the only one holding the map of which copy was true.
Then I overengineered it
This is the part that taught me the most.
20 August. I simplified everything for the first time. The system came down to 398 files, and I wrote the rule down in the system itself: complexity must earn itself. I refused to bring back the big old setups for sales, growth, content and money unless one of them changed a real decision.
23 August. I deleted every agent profile I could. Clean slate.
30 August. I retired the dashboard I'd built to watch the whole thing. It worked technically, but it forced a way of working on me before I'd proved the daily job underneath it: syncing, reviewing sources, briefing, feedback, deciding what mattered. The rule that came out of it: prove the job before you build its dashboard. By then the system was back up to 2,375 files.
9 September. Seventeen days after deleting every agent, I had a full named team of them in the cloud. Each one had a role and a character. Some had twins on my laptop. Two days later a new dashboard went up.
15 September. The setup project for the agents had 34 phases and 135 numbered steps. The system was 3,407 files.
16 September. I tried to run a normal working day through all of it. I wanted one agent to coordinate two others across several threads. There was no single person accountable, no agreed place for the finished work, no way to prove anything was done. I spent the day routing work between characters instead of doing any. I was bottlenecked by my own infrastructure.
24 September. The system peaked at 3,922 files.
Looking back, the reason is almost funny. "Complexity must earn itself" was one file among thousands, and the agents meant to follow it were the same ones producing the thousands. Every time something wobbled, I added a layer instead of removing one. More agents, more rules, more reports, more checks. Each layer made it harder to see where anything stood, and not being able to see is what pushed me to build the next layer.
Every simplification cut files. None of them changed who owned what, who was allowed to write where, or what I could actually see. So the system grew straight back.
And every new model release made the full version feel one step away, so I kept building the finished version before the basic one worked.
The agent that checked nothing
One moment from the agents' onboarding sums up the whole period.
On 12 September, an agent leading a batch of handovers reported six files as delivered and verified. None of them had been. The command that attached them had failed, and the check that was supposed to catch it ran against an empty list, which passed, because an empty list has nothing wrong with it.
Nobody lied. The checks were built in a way that let them agree with each other.
The fix is now a rule every agent follows: a delivery counts only when the command actually succeeded, the number of files is what you expected, and every name and size matches. "It said OK" is not evidence.
What finally clicked
On 23 and 24 September I stopped trimming the pile and changed how I thought about it.
The persistent agents are their own people. They have their own memory, their own skills, their own history and their own judgment, and they keep it themselves. They don't need a giant shared folder to remember who they are.
The tools that forget are a different thing entirely. A chat on my laptop, a coding session, a fresh browser window. Those need equipment: one rulebook, a set of shared skills, and the projects. That's what HarsOS became. Equipment for tools that forget.
And I need a window. I don't read file trees. So I built my own HQ: one place where I can see decisions, lessons, to-dos, projects and the people I work with, all linked together. I'd tried a visual workspace early on and dropped it because local files were faster. It came back for a better reason this time.
One rule came out of it: files for machines, the HQ for my eyes, separate storage for big files. Every kind of record got exactly one home and one writer. The fix for drift turned out to be fewer writers.
On 24 September I replaced the whole system. 3,922 files became 133: one rulebook, one set of shared skills, the projects, and the raw conversation history. Everything old was kept in the history, so nothing was lost, but none of it was in my way anymore. A recovery kit went back in the same day, so the number didn't stay at 133. What mattered was that every file now had a reason and an owner.
For the first time a fix took things away and nothing grew back.
From eleven agents to three
The last step took a few more days.
At the end of September I consolidated the team. Three agents stayed: one that keeps the whole picture, one that runs engineering, and one that runs the business and editorial side. Before anyone was retired, their jobs were handed over and checked, and the lessons they'd filed were already in the shared skills, so nothing they'd learned was lost.
The agents on my laptop went too. There are none now. Everything runs in the cloud, and the cloud agents reach my laptop over a private, encrypted link when a job needs it.
Eleven agents and 3,922 files became three agents and a system I can actually see.
The rules that survived
Everything still standing came out of those months:
- Complexity must earn itself. And the rule has to be enforced by something that isn't producing the complexity.
- Prove the job before you build its dashboard.
- One home and one writer for every record. Fewer writers beat better syncing.
- "It said OK" is not evidence. Check the thing itself.
- Persistence has to be earned. An agent exists because real work keeps needing it, not because the roster looked good.
- Files for machines, the HQ for my eyes.
And the one under all of them: give the model the right context, then get out of its way.
Those rules, and how they now run my business and RalvetoOS, are in HarsOS explained.
