Obsidian backend
Why Obsidian
- Local-first — notes are markdown files in a directory you control.
- Sync via whatever you already use: iCloud, Syncthing, Obsidian Sync, Dropbox, manual git.
- Renders nicely in the Obsidian app you (or your team) already have open.
- No server to run; no API to expose.
Configure the MCP
export BRAIN_BACKEND=obsidianexport BRAIN_OBSIDIAN_VAULT="/path/to/your/vault"That’s it — the vault must exist; the MCP will create folders inside it as needed.
Layout in the vault
your-vault/└── Claude Memory/ ├── 00 — How to use this brain.md ├── Standards/ │ ├── Git Workflow.md │ ├── Secrets Handling.md │ └── ... ├── Decisions/ │ ├── 2026-04-26 — Pluggable backend adapters.md │ └── ... ├── Lessons Learned/ │ └── 2026-03-12 — Idempotent migrations broke under retry.md ├── Apps/ │ └── my-app/ │ └── ... ├── Reviews/ └── Drafts/- The
idof a note is its relative path from the vault root, with.mdstripped. - Tags become inline
#taglines at the top of the body. - Search is substring + filename matching, ranked by recency. For semantic search across notes, layer srag on top — it can index the vault dir as just another repo.
Limitations vs Trilium
- No native attribute/property system — tags are inline
#tagtext. - Search is grep-based, not Trilium’s structured query language.
brain_updatearchives the prior content as a child note ([archived YYYY-MM-DD] Title.md).
These limitations are intentional: keeping the adapter file-system-only avoids any dependency on Obsidian itself running.