From Scattered Notes to Living System: Obsidian, Claude, and a Personal OS
How I built a local REST API over an Obsidian vault, connected it to a React dashboard, and added an MCP layer for AI-driven read-write access. Treating personal knowledge management as infrastructure.
Also on Medium.
How a local knowledge base, a custom dashboard, and an AI layer turned years of accumulated knowledge into a daily operating system.
There’s a note in my vault, a short one, a few bullet points about a difficult week at work, what helped, what didn’t. I didn’t think much of it when I wrote it. But last month, building the learning section of my dashboard, I found myself pulling from a dozen notes like that one: patterns I’d documented without intending to, decisions I’d reasoned through in writing and then half-forgotten, a map of what conditions I work well in and which ones I don’t.
But the vault isn’t just about me. Alongside the personal logs are years of accumulated research, papers on cognitive science, health protocols, engineering architecture patterns, language learning methodology, location data for potential cities to live in. Notes that started as external information and, through use and annotation, became working knowledge. The vault is a model of me and a library I’ve built to serve that model.
My Obsidian vault has been doing this for years. The question I’ve spent the last several months answering is: how do you actually use that?
Two Methods, One Foundation
The vault runs on two methodologies in combination, each solving a different problem.
PARA, Tiago Forte’s organizational framework, gives the top-level structure: Projects (active, with a finish line), Areas (ongoing responsibilities), Resources (reference material), and Archives (everything inactive). In Obsidian, this maps to a folder hierarchy that mirrors the actual shape of my life. Areas contains folders for Work, Career, Learning, Home, Future, Health, and Hobby, each one a domain I actively maintain rather than just a topic I’ve saved things about.
GTD, David Allen’s Getting Things Done, handles execution. Every capture goes into an inbox first, no decisions at capture time. The vault’s inbox connects bidirectionally to Apple Reminders via a custom integration using AppleScript (macOS-only, and requires Accessibility permissions to be granted once, a real constraint if you’re not in Apple’s ecosystem), which means GTD lists (Inbox, Next Actions, Routines, Waiting For, Someday) are the same data whether I’m in the dashboard or on my phone. Completing a task in the dashboard marks it done in Reminders. Adding something to Reminders at 11pm shows up in the dashboard the next morning. The capture friction is near zero; the processing happens when I have cognitive bandwidth for it.
These two frameworks complement each other at different scales. PARA answers “where does this live?” GTD answers “what do I do next?” Together they create a system where nothing gets lost and nothing gets ignored, which, for a brain that works better when everything is explicit and navigable rather than implicit and ambient, turns out to matter quite a lot.
The Vault as Accumulated Knowledge
After years of consistent use, my vault contains things I didn’t plan for it to contain.
There are weekly notes, each one tracking focus areas, what got done, what carried over, energy patterns across the week. There are daily notes with capacity logs, a simple 1-5 scale I started keeping to understand my own fluctuations, that now span enough time to show real patterns. There are learning plans tracking progress through structured curricula: certifications, language courses, domain research, each updated as knowledge actually moves from “saved” to “understood.” There are long-term project files with week-by-week structure, ritual logs, and reflection sections, a living record of what I’m building and why.
Andrej Karpathy wrote about a similar idea in 2026, using an LLM to maintain a personal knowledge base as navigable markdown rather than a vector database, structured well enough that an agent can reason about it rather than just search through it. His version focuses on external research data. Mine combines both: personal logs that track patterns in my own life alongside curated knowledge that informs how I navigate it. You don’t need vector search and RAG pipelines at this scale. You need good structure, maintained index files, and a model that can navigate markdown.
The REST API Bridge
The shift from “notes app I use daily” to “operating system for my life” required one architectural change: a REST API over the vault.
The server is built on Hono.js, a lightweight Node.js framework, and it does something conceptually simple but practically powerful, it reads markdown files and exposes them as structured JSON. Weekly notes become objects with fields for focus items, done/not-done states, tracker rows, and review sections. Daily notes become objects with capacity readings, task completions, and standup entries. The graph endpoint recursively scans every file, extracts wikilinks, and builds a node-edge structure for D3.js rendering.
On top of that API sits a React single-page application that I open every morning. The Main tab shows what I need to orient: current energy level, the next three items from my GTD Next Actions list, today’s remaining calendar events (pulled via Apple Calendar through osascript), daily minimum progress as a single bar, and this week’s priorities ranked across all life areas. The design goal was thirty seconds to orientation. Checking a box in the dashboard toggles the checkbox in the markdown file. Adding a standup note appends a line to today’s daily note. The dashboard writes back to the source of truth, not to a separate database that will eventually drift.
The other tabs extend this pattern across every active domain. Home tracks a structured personal project running this year, week-by-week files with ritual tracking, a weekly review form that writes directly back into the week file, and a five-component framework for tracking long-term progress. Work handles daily logging and standup notes. Career has seven sub-tabs: roadmap, certifications, skills matrix, timeline, profile edits, study log, and overview, all backed by markdown files I actually maintain, all interactive. Learning tracks a self-designed English course across fifty lessons in four phases. Health surfaces recovery phases, energy patterns, and some protocols. Future holds a long-term project map treated as an engineering document rather than a vision board. The graph renders the entire vault as an interactive force-directed diagram, every note a node, every wikilink an edge, research connected to personal context connected to active decisions.
The server also exposes a matching MCP (Model Context Protocol) stdio server. That’s where things get interesting.
The AI Layer
Most AI integrations with note-taking apps are read-only: you ask a question, the AI retrieves relevant notes, you get an answer. That’s useful. But the Claude Code MCP server exposes over thirty tools covering both reads and writes. Claude can toggle checklist items in weekly and daily notes, append entries to note sections, create new notes anywhere in the vault, log decisions with reasoning, update work context, search the vault by content, manage GTD lists in Apple Reminders, and create calendar events, all from natural language, all writing back to the markdown files that are the source of truth.
This means Claude isn’t just answering questions about the vault, it’s operating within the system. A concrete example: I asked it to find all weeks where my energy average was below 3 and a work deadline appeared in the same period. It cross-referenced eight weekly files, correlated capacity logs with calendar entries, and returned a pattern I hadn’t consciously noticed, my lowest-energy weeks consistently followed a specific type of high-stakes social interaction, not workload spikes. That’s not something I would have surfaced by browsing notes myself.
Ask it to review career roadmap progress and it checks which tasks are done across the current week’s file, surfaces what needs attention, and connects that to the broader timeline. The vault’s accumulated knowledge, both personal logs and external research, becomes context the agent reasons from rather than just retrieves.
The full deployment of this MCP layer directly into the dashboard UI is still in progress, the infrastructure is built and tested, the final wiring into the frontend is the remaining step. But even running alongside the dashboard in a Claude conversation, it represents a different kind of AI interaction: not a chatbot that knows about your notes, but an agent that acts inside your system.
What’s Next
The system has a clear roadmap, and all of the highest-priority integrations use data that’s already being collected.
The most valuable next step is automated weekly synthesis. A scheduled process will collect the week’s daily notes, GTD completion data, calendar load, and capacity readings, all available via existing API endpoints, and send a structured prompt to Claude asking it to find patterns, flag blockers, surface themes, and draft a week review. I’ll edit the output rather than write from scratch. This is purely an orchestration layer on top of infrastructure that already exists.
Apple Health is the second priority. An iOS app called Health Auto Export can push health metrics, sleep data, HRV, resting heart rate, activity, to any REST endpoint via HTTP POST, running automatically in the background. Once connected, the Hono.js server will receive and store this data; the dashboard will surface correlations between physiological data and the capacity ratings I’ve been logging manually. Pairing subjective logs with objective health data makes the capacity tracking diagnostic rather than anecdotal.
After that: mood scoring via Claude Code applied to existing journal entries, GitHub activity correlation connecting coding patterns to energy and health data, and automated processing of research clippings, routing new articles to the correct project area, generating summaries, and surfacing connections to existing knowledge. The Quantified Self community has been building pieces of this for a decade. What’s different now is that the language model layer can synthesize across all these streams. The interesting question isn’t “what was my sleep average this week”, it’s “what conditions were actually present on my most productive days.”
A Model of You
The vault, at sufficient density and over sufficient time, becomes something the AI can reason about more reliably than you can in the moment. You don’t remember how you felt three Tuesdays ago, or what you decided about a career question six months back, or which week your energy was consistently low and what was happening that week. You don’t remember the exact paper you read that shifted your thinking on a particular topic, or when you first wrote down the conditions that matter most to you. The vault does.
What I’m building is an interface between that accumulated knowledge and the present moment. The dashboard answers “what do I do today” by reading from years of context it doesn’t need to be told. The MCP server lets an AI agent act within the system rather than alongside it. The integrations being added aren’t new features, they’re new data streams flowing into an architecture that already knows what to do with them.
The vault has been watching me for years. What’s changed is that I’ve finally built something that watches back.
Stack: Hono.js, React, D3.js, Apple Reminders (osascript), Apple Calendar (osascript), Claude Code, Obsidian (iCloud sync)
Methodologies: GTD (David Allen), PARA (Tiago Forte)