{"slug": "obsidian-claude-code-the-shared-memory-stack-i-actually-use", "title": "Obsidian + Claude Code: The Shared Memory Stack I Actually Use", "summary": "A developer has described a personal memory system that links an Obsidian Markdown vault with Claude Code, using per-project CLAUDE.md operating manuals and a roughly 20-line sync script instead of a vector database or hosted AI wrapper. Claude Code reads decision and pattern files on startup and appends session changelogs back into the vault, so prior reasoning and code changes persist across sessions. The developer reports the setup is inspectable, offline-capable, and compounds as the CLAUDE.md files improve over time.", "body_md": "My notes used to be where ideas went to die.\n\nObsidian was my beautiful, over-organized graveyard. Claude Code was my brilliant intern who forgot everything after every shift.\n\nThen I wired them together and stopped taking notes entirely. My stack started taking them for me.\n\nThis is not another \"second brain\" aesthetic post. This is the duct-taped, actually-working memory system that runs my dev life.\n\nHere is what was happening before:\n\n**Obsidian** knew everything I had *thought*. Old meeting notes, half-baked ideas, that snippet from 2022 I swear I would need later. Local, fast, mine. But dumb. It couldn't do anything.\n\n**Claude Code** could do everything I *wanted*. Write code, refactor, ship features, run tests. But it had the memory of a goldfish on espresso. Every new session was \"Hi, who are you and what is this codebase?\"\n\nI was the human API between them. Copying context from Obsidian into Claude. Copying what Claude did back into Obsidian. I was a very expensive clipboard.\n\nSo I stopped being the clipboard.\n\nThree pieces. No vector database, no fancy SaaS, no $20/month AI wrapper that will die in 6 months.\n\n**1. Obsidian Vault as the Source of Truth**\n\nMy vault lives at `~/vault`. It's just Markdown. No database, no lock-in. Structure:\n\n``` php\n/00-inbox/           -> auto-fetched stuff lands here\n/01-projects/        -> active builds, each with a CLAUDE.md\n/02-memory/          -> the Memory Tree - people, decisions, bugs\n/03-docs/            -> docs Claude actually reads\n```\n\n**2. Claude Code with CLAUDE.md**\n\nEvery project has a `CLAUDE.md` that Claude reads on startup. It's not a prompt. It's the operating manual.\n\nMine looks like this:\n\n```\n# Project: numbpilled-api\n- Stack: Bun + Hono + Postgres\n- Never run rm -rf, always use trash-cli\n- Before coding, read /02-memory/decisions.md\n- After coding, append what you did to /00-inbox/changelog.md\n```\n\n**3. The Glue: A 20-line script that syncs them**\n\nClaude Code writes to Markdown. Obsidian reads Markdown. That's it. That's the integration.\n\nI have a hook that runs after every Claude session:\n\n`echo \"- $(date): $CLAUDE_TASK - files: $FILES_CHANGED - lesson: $LEARNED\" >> ~/vault/00-inbox/changelog.md`\n\nNo TokenJuice. No embeddings. Just files.\n\n**Morning:**\n\nI open Obsidian. In `00-inbox` there is already a summary from last night. Claude finished the auth refactor at 11pm, wrote what it changed, what broke, what it learned. I didn't ask it to. It just does because `CLAUDE.md` told it to.\n\n**During work:**\n\nI don't prompt Claude with \"here is the context.\" I prompt it with \"read `/02-memory/decisions.md` and fix the billing bug like we did last time.\"\n\nIt knows. Because it wrote that file last week.\n\n**Example workflow that feels like cheating:**\n\nI say: `/clear` then \"implement rate limiting, same pattern as the other routes\"\n\nClaude does this, without me pasting anything:\n\n`02-memory/patterns/rate-limiting.md` - which it created`03-docs/rate-limiting.md - added to /api/numbpilled, limit 100/min`\nMy Obsidian graph now has a new node. I did not make it.\n\n**The magic moment:**\n\nLast Tuesday I searched Obsidian for \"why did we choose Hono over Express?\" The answer was there. Not written by me. Written by Claude three weeks ago after I asked it to compare frameworks. It had appended its reasoning to `02-memory/decisions.md`.\n\nMy AI remembered why I made a decision better than I did.\n\nMost tools try to be smart. This stack tries to be *inspectable*.\n\n**It's just files.** If Claude hallucinates, I open the Markdown and delete the line. No black-box vector DB to re-index.\n\n**It compounds.** Every session makes the next one smarter. My `CLAUDE.md` files are getting better without me editing them. Claude improves its own manual.\n\n**It works offline.** My vault is local. My memory is local. When the API is down, I still have my brain.\n\n**It kills context switching.** I live in Obsidian. Claude lives in the terminal. They meet in the middle as Markdown. I never copy-paste between them anymore.\n\nI used to spend 6 hours a week on \"knowledge management.\" Now I spend zero. The system manages itself.\n\n**Day 1 - Make Claude write your memory:**\n\nCreate `~/vault/02-memory/decisions.md` and add this to your `CLAUDE.md`:\n\n`After every significant task, append 2-3 bullets to ~/vault/02-memory/decisions.md: what you did, why, what to avoid next time.`\n\nThat's it. After a week, you'll have a decision log you never wrote.\n\n**Day 2 - Make Obsidian your prompt library:**\n\nCreate `~/vault/03-docs/prompts/` and save your best prompts as Markdown files. Then tell Claude: \"Your prompt patterns live in ~/vault/03-docs/prompts/, use them.\"\n\nNo more prompt graveyard in your notes app.\n\n**Day 3 - Close the loop:**\n\nAdd a hook in Claude Code settings to auto-append session summaries to your inbox folder. Now your vault updates while you sleep.\n\nYou don't need 118 integrations. You need 3 files that talk to each other.\n\nWe don't need smarter models. We need dumber storage.\n\nChatGPT has memory like a clingy ex - it remembers everything you wish it would forget and forgets what actually matters. Claude Code had no memory at all.\n\nObsidian fixed that. Not because it's smart, but because it's *dumb in the right way*. It's just text files on your SSD. You can read them. You can edit them. You can delete them.\n\nThe future of personal AI isn't a better chatbot. It's a vault that writes itself.\n\nI stopped building a second brain. I started growing one. And it finally knows more about my codebase than I do.\n\n**Steal my exact stack?**\n\nI packaged the whole thing - the vault template with Memory Tree structure, all my CLAUDE.md files, the auto-sync hooks, and the 7 prompt patterns that actually write good docs - into a cloneable kit.\n\nGet **Obsidian + Claude Code: The Shared Memory Stack** here: [https://numbpilled.gumroad.com/l/obsidian-claude](https://numbpilled.gumroad.com/l/obsidian-claude)\n\nP.S. It also includes the script that makes Claude write its own changelog, so you never have to write \"what I did today\" again.", "url": "https://wpnews.pro/news/obsidian-claude-code-the-shared-memory-stack-i-actually-use", "canonical_source": "https://dev.to/numbpill3d/obsidian-claude-code-the-shared-memory-stack-i-actually-use-8m", "published_at": "2026-10-08 00:40:27+00:00", "updated_at": "2026-10-08 00:47:03.350436+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "large-language-models"], "entities": ["Obsidian", "Claude Code", "Anthropic", "Hono", "Bun", "Postgres"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/obsidian-claude-code-the-shared-memory-stack-i-actually-use", "markdown": "https://wpnews.pro/news/obsidian-claude-code-the-shared-memory-stack-i-actually-use.md", "text": "https://wpnews.pro/news/obsidian-claude-code-the-shared-memory-stack-i-actually-use.txt", "jsonld": "https://wpnews.pro/news/obsidian-claude-code-the-shared-memory-stack-i-actually-use.jsonld"}}