A personal AI operating system, and what building it actually taught me
Milan-OS is my own operating system, a Next.js monorepo on Supabase running a fleet of agents across my work, content and learning, grounded in a GitHub-synced Obsidian vault. Roughly 28 agent modules and 45+ architecture decision records in. Genuinely useful, genuinely rough in places. Included here because it's where I test patterns before client work sees them.
Why this exists
Client work is operational: real systems running real businesses, where experiments are expensive. I wanted somewhere to try patterns first, on a system where the only person a bad decision costs is me.
Milan-OS is that: a personal operating system, and my R&D surface. Several things that later became client architecture were tried here first: agent grounding, MCP tool connections, cron-driven pipelines, vault-as-context.
What it is
- Single Next.js monorepo on Vercel with Supabase as the source of truth, plus pgvector for retrieval.
- A GitHub-synced Obsidian vault as ground truth. Every push re-chunks and re-embeds the changed files. Agents ground in it two ways: retrieval for topic context, and a full read of one stable identity document for who I am and what I'm working on.
- An agent fleet, roughly 28 modules. Content intelligence, LinkedIn drafting and scheduling, comment drafting with human approval over Telegram, vault organization, meeting prep, work logging, and a self-improvement loop that proposes and promotes config changes behind an A/B harness.
- 45+ numbered architecture decision records. Every significant choice is written down with its reasoning, which is the only reason the system is still comprehensible to me months later.
- Operational discipline: every agent run is logged, every agent has a daily cap and a real kill switch in the UI, and nothing autonomous ships without a review surface.
The detail that matters: the ADR folder is the authoritative state, not any summary document. I learned that the hard way. Summaries drift, and I spent real time acting on a build-state note that had been wrong for months. Decisions written at the moment of the decision don't drift.
Honest status
Useful daily, and rough in places. Some modules are more polished than others, a few have known bugs I've decided not to prioritize, and two planned modules are parked indefinitely because the thing they'd serve isn't ready. It runs my content pipeline and my context system and earns its keep at about $5-7/month in API and infrastructure.
Included in this portfolio because the patterns are real and the decision log is worth reading, not as a finished product. The client work above is where I'd point you first.