Skip to content
Go back

How I Built a Personal OS for My AI Assistant

Most people use AI like a search engine. They ask a question, get an answer, close the tab. The next session starts from zero.

That always bothered me. I wanted an assistant that actually knew me. One that didn’t need to ask the same questions every time.

So I built COWORK OS.

What it is

COWORK OS is a folder in Obsidian. It’s my personal command center. Every domain of my life that I want AI help with lives inside it — email, finances, and more.

The AI reads from it at the start of every session. That’s the whole idea.

The toolchain

The whole system lives in an Obsidian vault synced via iCloud. No paid sync subscription — iCloud handles it natively across Mac, iPhone, and iPad.

On desktop I use Claude Code with COWORK OS set as the default working directory. Opening a session means the AI already has the right file root. On mobile I use Claude Dispatch, which lets me load the same context and update MEMORY.md or log session notes remotely — same workspace, different device.

The folder structure

COWORK OS/
├── CLAUDE.md               ← root rules + routing table
├── MEMORY.md               ← persistent facts (150-line cap)
├── ARCHIVE.md              ← compressed old memories, reference-only

├── 00_Resources/           ← shared reference files, loaded on demand
│   ├── voice-principles.md ← how the AI writes in my voice
│   ├── Memory System.md    ← memory rules and size enforcement
│   └── Workstation Template.md

├── Email HQ/
│   ├── CLAUDE.md           ← email tone + format rules
│   ├── MEMORY.md           ← email-specific context (200-line cap)
│   └── Email HQ Resources/

└── [Personal Finances]/    ← next workstation

The core structure

Two files run everything: CLAUDE.md and MEMORY.md.

CLAUDE.md holds the rules. How I want the AI to communicate. What tone to use. When to ask clarifying questions. Where to route different types of requests.

MEMORY.md holds the facts. My active projects. Contact details. Decisions I’ve made. Things I’ve told the AI to remember.

The distinction matters. Rules go in one place. Facts go in another. Nothing lives in both.

A third layer sits below both: 00_Resources/. These are reference files that don’t load every session — they’re pulled in only when the routing rules say to. voice-principles.md is a good example. It teaches the AI how I write — my sentence style, words I avoid, phrases I actually use. It doesn’t need to load when I’m doing finances. It only loads when the AI is writing something on my behalf.

Memory also has hard size limits. Root MEMORY.md has a 150-line cap. When entries get stale, they’re compressed and moved to ARCHIVE.md — which is never read at session start. This keeps the context window lean. Bloated memory files are one of the fastest ways to degrade AI performance silently.

Here’s what the root CLAUDE.md actually looks like:

## Preferences
- Write in a professional but conversational tone.
  If it sounds like a corporate memo, rewrite it.
- Keep responses concise, under 300 words unless I ask for more.
- Use bullet points for lists, prose for explanations.
- Give me one strong recommendation. Don't give me 3 options
  unless I specifically ask for alternatives.
- Default to async communication. Suggest email, recorded walkthroughs,
  or shared documents before proposing a call or meeting.

## Rules
- Always ask clarifying questions before starting a complex task.
- When drafting emails, match the formality level of the original message.
- If you're not sure about something, say so. Don't guess.
- Before producing any written content on my behalf,
  read voice-principles.md in the 00_Resources folder.

## Routing Map
| Workstation        | Route here when I...                                        |
| :----------------- | :---------------------------------------------------------- |
| Email HQ           | ...need to draft, reply to, or review any email.            |
| [Personal Finances]| [...am working on budgets, spending, savings, investments]  |

The routing table is how the AI knows which workstation to open without me having to say it explicitly. I just describe what I’m doing — it figures out the folder.

Workstations

Each domain gets its own folder. I call them workstations.

Right now I have Email HQ. It handles everything involving written correspondence — outreach replies, scheduling, vendor emails, professional follow-ups. The workstation has its own CLAUDE.md with domain-specific rules that layer on top of root without repeating them.

Here’s a slice of it:

## Workflow
1. Check root CLAUDE.md for my voice principles before drafting anything.
2. Identify recipient type: professional contact, business provider, or known contact.
   This determines formality level.
3. Check whether a thread already exists with this recipient.
   If yes, reply in that thread — do not start a new one.

## Editorial Rules
- Default greeting: "Hi [FirstName]," — always first name, comma after.
  Never "Hello," "Dear," or no greeting.
- Default sign-off: "Thanks" on its own line, no name.
- Always prose, never bullets — even when sharing multiple pieces
  of information.
- Proactively include relevant logistics. If you've taken an action
  the other person needs to know about, say so without waiting to be asked.

When I start a session, the AI checks the routing table in the root CLAUDE.md, finds the right workstation, and loads the right context.

Why it actually works

The key design principle is MECE: mutually exclusive, collectively exhaustive. Every rule lives in exactly one place. Every fact lives in exactly one place. Nothing is duplicated.

That sounds like a minor detail. It’s not. When context is scattered across files, the AI has to guess where the truth lives. When it’s organized, it always knows.

What it does in practice

Every session I open Email HQ, the AI already knows my preferred greeting, sign-off conventions, and how to calibrate tone by recipient type. I paste in an email, say what I need, and it drafts something that sounds like me.

I don’t re-explain my preferences. I just ask what I need.

That’s the whole point. The AI isn’t smarter. It’s just better informed.

What I’d do differently

I built this iteratively. The first version was too loose. Rules were mixed with facts. Workstations had no clear boundaries.

The MECE principle fixed that. Once I committed to one rule, one place, the whole system got easier to maintain.

If I were starting over, I’d define the governance rules first. Then build the workstations.

Skills

The system also has .skill files — custom automations that run on demand. I have one that audits the workspace at the end of a session: checks if MEMORY.md is near its size ceiling, flags stale entries, and proposes compressions. Another grades behavioral interview answers against a rubric. They’re not always loaded. They’re called when needed.

This is the part most people skip when thinking about AI context. Context isn’t just what you tell the AI at the start. It’s also what you automate so you don’t have to remember to do it manually.

What’s next

I’m still building. Personal Finances is the next workstation. After that, probably a health and fitness tracker.

The goal isn’t to automate everything. It’s to give the AI enough context to be genuinely useful. The rest is just work.


Built with Obsidian + Claude / Cowork.


Share this post on:

Next Post
CSS Specificity — collections and image explanations