Claude OS
A wrapper on Claude Code (Anthropic's CLI agent) that turns it into a stateful personal operating system. Persistent memory, multi-instance coordination, and real integrations with calendar, contacts, and email. Running it to manage this job search right now.
Claude OS is a wrapper on Claude Code (Anthropic's CLI agent tool) that turns it into a stateful personal operating system. Claude Code is already a capable agent. The problem is what's missing out of the box: no memory between sessions, no coordination between multiple instances, no integrations with the tools I actually use.
I built Claude OS to fill those gaps. The result: a system that manages my calendar, contacts, email, and priorities through natural conversation. I'm running it right now to manage this job search (not a demo, the live system).
The architecture: four layers
The memory layer is a git-tracked markdown repo. TODAY.md and MEMORY.md load into every Claude session via startup hooks. No vector database, no embeddings. The filesystem IS the memory. When Claude writes something to a file, every future session reads it. Inspectable, editable, and version-controlled.
On top of that: a Python infrastructure layer (file watchers, FastAPI backend, SQLite as the structured data glue), a FastMCP server with 15+ tools for calendar/contacts/email, and a Next.js virtual desktop that renders the live system state as windows and widgets.
Multi-agent coordination via TMUX injection
Multiple Claude Code instances run in structured tmux (a "life" session with named windows). A Chief instance runs all day as the primary interface. Specialists spin up for focused work (Builder for code, Researcher for analysis, Writer for documents) and close when done.
TMUX injection sends messages directly into agent panes. This is how Chief coordinates Specialists and how the cron scheduler fires overnight missions autonomously. At 1 AM, the scheduler injects a wake signal into a dormant window and a new Claude session boots up, does its work, and hands off context for the morning.
What it actually does
Through MCP tools, Claude has live access to calendar, contacts, email, and a custom job search pipeline. It schedules meetings, creates tasks, manages my inbox, and runs research in the background while maintaining the main conversation.
LIFE-SPEC files define what I'm optimizing for in each domain. Claude reads these and makes decisions aligned with my actual goals, not just what I asked for in the moment. "Handle my emails" means different things on a focused work day vs. a prep day, and the specs capture that.
What I learned
Simple and inspectable beats sophisticated. A git-tracked folder of markdown files outperforms complex memory systems because you can read it, edit it, and trust it. When something's wrong, you find it and fix it. No black box.
Boundaries matter more than capabilities. The hardest design problem was deciding what Claude handles autonomously vs. what surfaces for my approval. Get this wrong and you lose trust immediately. The current answer: act freely on reversible things, always ask before messages or commitments.
This started as a productivity project and turned into an AI systems research project. Building a system you actually live in teaches you things about agent coordination, context management, and human-AI boundaries that you can't learn by reading papers.
I'm running this right now to manage my job search: scheduling interviews, tracking companies, writing applications, researching roles. It's replaced dozens of apps with one intelligent layer. The code is on GitHub at spartypkp.