Case study — agentic-ai
It asks first.
even when it's obviously right.
agentic-ai is an AI companion runtime built on the Claude Agent SDK. Characters range from pure conversationalists to full agents with read and write access to the filesystem.
The interesting decisions are not about the conversation. They are about what happens when the thing on the other end of the chat wants to change a file on your disk.
The constraint
Nothing irreversible happens unsupervised.
Including the changes that look harmless.
Three decisions
Characters are folders
Not rows in a database. A character is a directory of plain files, so it is hand-editable, diffable in git, reviewable in a pull request, and sendable to someone as a zip.
Writes wait
A character can be a pure conversationalist or a full agent with filesystem access. The moment it wants to write, it stops and describes what it intends to do. Nothing is written until a person agrees.
Subscription billing
It spawns the Claude Code binary rather than calling the API directly, so runs bill against a subscription instead of requiring per-token API keys. For personal and internal tooling this changes the economics entirely.
Why plain files
The default instinct is a database and an admin UI. That gets you a settings page nobody can review and a migration every time the shape changes.
Files get you version control for free. You can see what changed about a character and when. You can revert it. You can review a change before it lands, the same way you review code — because it is in the same repository, under the same process.
It is the same instinct as the rest of the work: prefer the representation you can inspect over the one that is convenient to write.
What happened
This is a personal project. It has no client, no revenue and no production users, and it would be easy to imply otherwise on a page like this.
What it is worth reading for is the approval architecture and the billing model — both of which came out of this and went into client work afterwards.