v8.1.1
The v8 line worked. Getting it wired up was harder than it needed to be.
This is a patch release from dogfooding the MCP layer in a real consuming repo for the first time. Everything in v8.0.0 and v8.1.0 was verified in a purpose-built sandbox, and a sandbox cannot tell you what the first ten minutes feel like from the outside. Two things surfaced immediately: setup asked for more than it needed, and a session could fail to open a note it had just found.
Quick Start
Requirements: Obsidian, Node 22+ LTS, and one of: Claude Code · Codex CLI · Gemini CLI
Install via ShardMind (recommended — wizard, optional modules, managed upgrades):
npm install -g shardmind
mkdir my-vault && cd my-vault
shardmind install github:breferrari/obsidian-mindOr clone directly:
git clone https://github.com/breferrari/obsidian-mind.git
cd obsidian-mind
npm install -g @tobilu/qmd && qmd index && qmd embed # optional: semantic searchOpen the folder as an Obsidian vault, then run claude, codex, or gemini in the directory and type /om-standup (or om-standup in Codex).
Or download the vault zip below and extract it into your Obsidian vaults folder.
Already using obsidian-mind? Just tell your agent: Update this vault to the latest obsidian-mind from https://github.com/breferrari/obsidian-mind
🔌 Enabling the MCP server is one command now
The v8.1.0 notes told you to add a .mcp.json to every repo that should reach your vault. That works, and it is more work than the feature needs — the file holds an absolute path to your vault, so committing it breaks every collaborator and every other machine of yours, and not committing it means re-adding it on each clone.
Register it once instead, in your own config:
claude mcp add --scope user om node "/absolute/path/to/your-vault/.claude/scripts/om-mcp.mjs"That covers every directory on the machine, with nothing added to any repository. No environment variable either: the launcher resolves the vault from its own location.
The per-repo .mcp.json form is still documented, for when you want a specific repo to carry the wiring so a teammate gets it on clone.
Warning
Use an absolute path, and don't copy the relative one. This vault's own .mcp.json registers qmd with a relative path, which is correct there because a session in the vault is already in the right directory. Reused for om in another project, the same shape silently resolves against that project instead, and the server never starts.
Step 2 is unchanged and still the one that matters: the short section in the consuming repo's own CLAUDE.md. It is now written out in full in the README rather than described, because "add a short section pointing at the vault" turned out to leave the most important part to guesswork. See below.
What's new in v8.1.1 — 2026-07-30
Fixed
- A session in another repo could fail to open a note it had just found.
searchreports paths the way qmd stores them: prefixed with the collection name, and with spaces replaced by dashes in folder names as well as filenames. Hand one of those straight back as a resource URI and it returned a bare not-found with nothing to diagnose from. Because this template names point-in-time notes with a date prefix and spaces (2026-01-02 Some Title.md), that is a large share of the notes in a real vault. The resolver now repairs both forms, and where a slug could mean two different notes it refuses rather than guessing — quietly serving a note from a folder you didn't name is worse than a not-found. Every repair re-runs the full exposure, traversal, never-expose and containment checks, so nothing is loosened; only the spelling is repaired. (#166)
Changed
- The repo-side snippet is now written out, and its most obvious form was wrong. The old text said "add a short section to that project's
CLAUDE.md" and left the contents to you. The natural thing to write is "callrecallfirst, it returns this project's decisions" — and that returns nothing on a project's first session, because the memory store is empty by construction:rememberrefuses when called from inside the vault, since a memory written there would be scoped to the vault and reach nobody. So memories only ever arrive from outside, and a first session askingrecallgets silence that looks exactly like an empty vault.searchleads now,healthis named so an empty result can be diagnosed rather than believed, and the snippet says plainly that an emptyrecallis not evidence the record is missing. - The write side names both tools and the test between them.
rememberis for a lesson that would help someone on a different project;record_workis for what happened here. Given only "record it withremember", a session files work logs into the memory store. The snippet also namesconfidence,verification,scopeandprojects, which are what make a memory trustworthy and correctly reachable, and which get skipped when nothing asks for them. (#167) - Setup is one user-scope command rather than a config file per repo, with the per-repo form kept as the documented alternative and the relative-path trap called out. (#168)
Upgrading
No action required. No config changes, no migration. The resolver fix takes effect at your next session start in any repo with the server registered.
Two things you may want to do, both optional:
- If you added a
.mcp.jsonper repo, you can replace all of them with the singleclaude mcp add --scope usercommand above. - If you wrote your own repo-side
CLAUDE.mdsection and it leads withrecall, reorder it to lead withsearch. Nothing breaks either way; a first session just gets a more useful answer.
shardmind update # if you installed via ShardMindOr tell your agent: Update this vault to the latest obsidian-mind from https://github.com/breferrari/obsidian-mind
Full history: CHANGELOG.md · Previous release: v8.1.0