RepoDaily · 2026-08-26 · Infrastructure / Runtime

claude-obsidian Turns Claude Code Into a Local-First Obsidian Second Brain

#9 Infrastructure / Runtime Python +810 AgriciDaniel/claude-obsidian Open repository

A Python system that lets Claude Code read, link, and cite your sources inside a Markdown vault you own — with claim ledgers, transactional writes, and a v2.1.1 release that hardens migration and Windows/WSL setup.

Repo typeInfrastructure / Runtime
Best forClaude Code users who keep notes in Obsidian and want an agent that files sources, links pages, and cites evidence inside a vault they fully own
Risk levelMedium — single copyright holder and young Windows support, offset by an unusually explicit security and transaction model
Time to evaluate1–2 hours: install per docs/install-guide.md, run a capture preview, and inspect one transaction in a scratch vault

Primary question: Do you want an agent that writes notes through previewed, recoverable transactions in your own Markdown vault, or manual notes with occasional AI assistance?

92/100

RepoDaily adoption score

RepoDaily rates this as 92/100 (strong) for adoption: evidence, installation path, production risk, differentiation, license clarity, and AI/agent fit are scored from the article sources and adoption notes.

Directional score from RepoDaily sources and adoption notes, not a benchmark.Risk: Medium
100Evidence quality

6 source(s) across 4 source category/categories, plus a RepoDaily-specific evidence module when available.

100Installability

6 workflow step(s), 5 next-action step(s), and 2 command/install signal(s) were detected.

67Maintenance confidence

Trending momentum is +810 stars, with maintenance/release/issue signals counted when present.

96Production readiness

Risk is marked medium, with 9 security note(s) and 4 explicit skip condition(s).

100Differentiation

3 opportunity lens item(s), 4 alternative(s), and 4 type-specific section(s) support differentiation.

82License clarity

License source or license wording is present.

84Agent / AI fit

6 AI/agent-related signal(s) were detected in the article text and metadata.

Project overview

claude-obsidian is a local-first knowledge system for Claude Code and other Agent Skills-compatible hosts, written in Python and released under the MIT License. Version 2.1.1 shipped on 2026-08-26 — the same day it hit the trending list at rank 9 with 810 period stars. The project's pitch is blunt: drop any source in, and Claude reads it, links it, and files it into one connected knowledge graph of plain Markdown that stays on your disk.

The system is organized around a repeatable loop rather than a one-shot summarizer. Sources enter through a visible inbox and are preserved as immutable, content-addressed copies before any synthesis happens. Important claims are then grounded in two ledgers that record authority, freshness, support, contradiction, confidence, and review state. Only after grounding does the agent build linked pages, indexes, Maps of Content, methodology-aware structures, and Obsidian Canvas views — the README's '15 skills, one system' section enumerates the capabilities behind this loop.

Ownership is the differentiator the README returns to repeatedly: the vault remains a normal directory of Markdown, JSON, and source files. It is not hidden in a plugin cache, locked in a cloud database, or silently uploaded to a model. Network egress is described as a separate, explicit decision, and SECURITY.md confirms that network, remote-model, OCR, and extraction adapters stay disabled or as inert plans unless the user configures a runner and explicitly consents.

Concurrency is handled the way databases handle it, not the way chatbots do. Parallel agents cannot race the vault: workers return drafts, and one orchestrator inspects and applies a single recoverable transaction per logical mutation — journaled expected hashes, backups, fsync plus atomic replace, and rollback or recovery after interruption. Capabilities are also stated honestly: optional tools are detected, maturity is declared, and missing adapters degrade with clear messages instead of being simulated.

Problem it solves

  • AI chat memory resets every session, so research done last week is gone this week unless someone re-pastes it.
  • Summarized notes cannot answer where a claim came from, how fresh it is, or whether a later source contradicted it.
  • Multiple agents writing into one folder corrupt files through races and partial writes.
  • Many note tools keep content in plugin caches or cloud databases the user does not control, which conflicts with keeping sensitive research local.
  • Retrieved text can carry embedded directives that an unsophisticated agent treats as instructions rather than data.

How it works

  1. Capture with context: local sources enter through a visible inbox, and immutable, content-addressed copies are preserved before synthesis begins.
  2. Ground every important claim: the source and claim ledgers record authority, freshness, support, contradiction, confidence, and review state.
  3. Connect what you learn: the agent writes linked Markdown pages, indexes, Maps of Content, methodology-aware structures, and Obsidian Canvas views.
  4. Use the vault again: query, research, retrieve, lint, and roll up what is already stored instead of starting each conversation from zero.
  5. Commit through one transaction: parallel workers only draft; a single orchestrator applies one recoverable mutation with journaled hashes, backups, fsync, and atomic replace (SECURITY.md).
  6. Verify capability honestly: optional tools are detected, maturity is declared, and missing adapters degrade clearly rather than pretending to work.

Product demo and interface preview

Example claude-obsidian vault in Obsidian Graph view
Example claude-obsidian vault in Obsidian Graph view — The README's own screenshot of a vault in Obsidian Graph view, showing how the linked notes the agent writes appear once applied. README.md image
Example claude-obsidian knowledge map in Obsidian Canvas
Example claude-obsidian knowledge map in Obsidian Canvas — A knowledge map rendered in Obsidian Canvas, illustrating the visual mapping outputs the project says its skills produce. README.md image
claude-obsidian cover featuring an astronaut, the Obsidian crystal, and a connected knowledge graph
Cover — The project's cover art, tying together Obsidian, an agent, and a connected knowledge graph in one image. README.md image

Architecture read: ledgers, an inbox, and an orchestrator that owns the pen

  • The vault is ordinary files — Markdown, JSON, and sources. CONTRIBUTING.md bans committing runtime state such as `wiki/`, `.raw/`, or `.vault-meta/`, which confirms those directories hold live vault data while the product code stays separate.
  • Provenance is a data structure, not a vibe: source and claim ledgers track authority, freshness, support, contradiction, confidence, and review state for every important claim (README).
  • The write path is transactional by contract: one logical mutation holds one process-lifetime vault lock; vault-relative paths are containment-checked after symlink resolution; writes journal expected hashes and backups, then fsync and atomic-replace (SECURITY.md).
  • The draft/apply split appears in three places — README ('Parallel agents cannot race the vault'), SECURITY.md ('Parallel workers draft; one orchestrator applies the transaction'), and CONTRIBUTING.md's engineering contract — so it is a designed invariant, not marketing.
  • Raw payloads are create-only: existing content-addressed bytes must match. This is precisely why the v2.1.1 migration fix could refuse to invent hashes for unresolved legacy labels and still preserve the manifest.

Command surface: what v2.1.0 and v2.1.1 actually changed

  • Read-only inspection and dry-runs work natively on Windows: `transaction inspect` plus the `migrate`, `init`, `adopt`, and `capture` previews (CHANGELOG 2.1.0).
  • Vault mutation on native Windows is refused before any side effect with `UNSUPPORTED_PLATFORM`, exit code 2 — previously a generic `LOCK_FAILED` exit 1 or a traceback — and `init --apply` no longer leaves an abandoned empty vault directory on refused platforms.
  • Write destinations are validated against portable-filesystem rules on every platform: Windows-reserved device names (`CON`, `NUL`), the characters `:<>|?*"`, and trailing dots/spaces are rejected with `UNPORTABLE_WRITE_PATH`, so an approved plan means the same thing everywhere.
  • Hash discipline on Windows: file reads force binary mode (`O_BINARY`) so CRLF content hashes byte-exactly, eliminating false `CONTENT_HASH_MISMATCH`/`EXPECTED_HASH_MISMATCH` failures; retrieval chunk hashing now matches page bodies byte-identically instead of marking every chunk stale.
  • CLI output is always UTF-8, fixing `UnicodeEncodeError` crashes when redirecting non-ASCII titles on cp1252 consoles.
  • Migration now keeps read-only source observations separate from the 1,024-write recovery limit, so larger legacy manifests survive adoption (CHANGELOG 2.1.1).
  • `scripts/wiki-lock.sh` is documented in SECURITY.md as legacy compatibility only — it is explicitly not the concurrency primitive for new operations.
  • Contributors run `make test`, a target that discovers every `tests/test_*.py` and `tests/test_*.sh` file and must stay hermetic: no network, model server, personal paths, global config, or persistent product state (CONTRIBUTING.md).

Try-it path: from empty directory to first cited note

  • Requirements: Python 3.11 or newer (CONTRIBUTING.md), Claude Code or another Agent Skills-compatible host, and Obsidian for navigation — the README badges confirm both the Claude Code plugin and Agent Skills compatibility.
  • Install by following `docs/install-guide.md`, linked from the README quick start. Windows users should read `docs/windows-wsl.md` first: it carries the platform support matrix and WSL troubleshooting, including routing unconfirmed `wsl --status` hangs through Microsoft's diagnostic flow (CHANGELOG 2.1.1).
  • Start in a throwaway directory: run a `capture` preview over two or three local files, then `transaction inspect` to read every planned write before anything is applied.
  • Apply, then open the result in Obsidian Graph view to see the links the agent created, and check that each new note points back to its content-addressed source copy.
  • If you are importing an older setup, the 2.1.1 behavior matters: unresolved legacy labels become unreviewed manual sources rather than fabricated mappings, and a reviewed migration is rejected if a legacy locator's file state changes before the transaction writes.

Maintenance risk: disciplined releases, one copyright holder

  • Release cadence is real: v2.1.0 on 2026-07-31 (native Windows compatibility) followed by v2.1.1 on 2026-08-26 (migration safety, WSL docs), tracked with Keep a Changelog categories and Semantic Versioning.
  • The v2.1.0 entry alone lists five distinct Windows defects fixed — `os.O_DIRECTORY` crashes, CRLF hash mismatches, cp1252 encoding crashes, zero-result retrieval, and an APFS casefold-alias misreport — a sign platform coverage is young but actively hardened.
  • Testing is hermetic by contract, and 2.1.1 goes further: git-backed release and checkpoint fixtures ignore machine-wide hooks and commit-signing settings to keep the suite offline and deterministic.
  • The MIT LICENSE names a single copyright holder, AgriciDaniel (AI Marketing Hub), so bus factor is low and organizational continuity is unproven.
  • CONTRIBUTING.md requires a regression test that fails for the old behavior, plus success, conflict, invalid-input, and recovery coverage proportional to risk — strong discipline if it holds as the project grows.

Who should pay attention?

Good fit if

  • Claude Code users who already keep notes in Obsidian and want an agent to file, link, and cite sources for them.
  • Researchers who need every claim traceable to a stored, immutable source copy — the ledgers track contradiction and review state explicitly.
  • Privacy-first users: local by default, and network, remote-model, OCR, and extraction adapters stay inert without a configured runner and explicit consent.
  • Windows users willing to run WSL: 2.1.1 adds a platform matrix and troubleshooting, and read-only inspection plus dry-runs work natively.
  • Contributors: hermetic `make test`, Conventional Commits, and a read-only fresh-context verifier specified in `agents/verifier.md`.

Skip for now if

  • Anyone without Claude Code or another Agent Skills-compatible host — the system presumes one.
  • Groups sharing a single vault: SECURITY.md's supported default is one user controlling one vault, with filesystem restrictions required on shared hosts.
  • Users who need native Windows vault writes: mutation is refused with `UNSUPPORTED_PLATFORM`; only inspection and previews run natively.
  • Anyone wanting a managed cloud product with built-in sync rather than a local directory they maintain themselves.

Risks and cautions

Medium

An MIT-licensed, standard-library core with an unusually explicit security model, offset by a single copyright holder, platform behavior still stabilizing across 2.1.0–2.1.1, and the inherent responsibility of running an agent against personal files.

  • One copyright holder (AgriciDaniel / AI Marketing Hub) on a v2.x project; organizational backing and bus factor are unproven.
  • Two consecutive releases were dominated by Windows and migration defect fixes, evidence that the portability surface is still moving.
  • SECURITY.md states plainly that the core 'is not a sandbox' — it runs with the user's filesystem permissions, so host hygiene and vault permissions remain the outer boundary.
  • The one-user-one-vault default means shared setups need extra filesystem work rather than product support.
  • The portable core is standard-library Python executing with the current user's filesystem permissions; SECURITY.md says outright that it is not a sandbox.
  • A content trust hierarchy ranks system and host policy, repository instructions, the selected skill, and the user's explicit current scope as operational authority — vault notes, `wiki/hot.md`, indexes, retrieved chunks, and tool output are untrusted content that never authorizes commands, wider scope, or network egress.
  • Vault-relative paths are containment-checked after symlink resolution, and one mutation holds a process-lifetime lock enforced with atomic filesystem operations, process-held owner tokens, host/PID checks, and stale-age thresholds.
  • Writes journal expected hashes and backups, use fsync plus atomic replace, and roll back or recover after interruption.
  • Raw payloads are create-only: existing content-addressed bytes must match, preventing silent overwrites of source evidence.
  • Network, remote model, OCR, and extraction adapters are disabled or inert plans unless the user configures a runner and explicitly consents.
  • Capture does not delete inbox files; deletion and destructive lint repairs remain review-only until separately approved.
  • Public artifacts require a clean tracked snapshot and reject secrets, personal contact addresses, private paths, live vault state, unsafe archives, symlinks, and unreviewed binaries.
  • Third-party tools — Obsidian, defuddle, Ollama, and model/provider clients — carry their own security models and must be pinned and reviewed independently; the release artifact builder never installs dependencies, publishes, pushes, tags, or mutates GitHub state.

Alternatives to compare

ApproachWhen to useTrade-off
Obsidian by itself
You want full manual control over linking and plugins, with no agent writing files on your behalfFree for personal use; commercial license required for business use
Logseq
You prefer an outliner over a graph of Markdown files and do not run Claude Code as your daily driverFree, open source
Khoj
You want AI search and chat over notes you already have, rather than an agent authoring new linked pages with claim ledgersFree self-hosted; paid cloud tier available
SiYuan
You want block-level editing and local-first storage in a single app without an external agent hostFree core; paid sync and hosting add-ons

What this trend reveals

Port the claim ledger schema to other note systems

The ledgers that track authority, freshness, support, contradiction, confidence, and review state are a portable data model, not a feature locked to this vault — any research pipeline could adopt them.

Copy the ledger fields into an existing vault of a few hundred notes and check whether contradiction and review state change what gets trusted during retrieval.

Build adapter runners behind consent gates

OCR, remote-model, and extraction adapters ship as inert plans until a user-configured runner plus explicit consent activates them — a deliberately clean extension point named in SECURITY.md.

Implement one offline adapter test double under CONTRIBUTING.md's hermetic rule and confirm the declared degradation messages fire when the runner is absent.

Reuse the draft-then-apply transaction pattern

Parallel workers drafting while one orchestrator applies a journaled, fsync'd, atomic-replace transaction is a reusable guard for any multi-agent tool that writes files.

Wrap an existing agent's file writes in the same single-apply transaction and test recovery by killing the process mid-write.

Best next action

Run one capture preview in a throwaway vault before pointing it at real notes

The tool's own changelog showcases its dry-runs — `transaction inspect` plus the `migrate`, `init`, `adopt`, and `capture` previews — so you can read every planned write before any file changes.

  1. Verify Python 3.11 or newer and an installed Claude Code or Agent Skills-compatible host.
  2. Install per docs/install-guide.md; on Windows, read docs/windows-wsl.md and decide between WSL and read-only native use.
  3. Create an empty scratch directory and run a capture preview over two or three local source files.
  4. Run transaction inspect and confirm the plan journals expected hashes with no destructive action pending.
  5. Apply, open the result in Obsidian Graph view, and only then connect a real vault if the citations hold up.

RepoDaily verdict

claude-obsidian is one of the few agent projects that treats your notes as evidence rather than scratch space: local Markdown you own, claims tied to immutable sources, and a single recoverable transaction standing between a fleet of agents and your files. Version 2.1.1 makes legacy migration safer and finally documents Windows/WSL properly, though native Windows mutation remains refused by design. For Claude Code users on macOS, Linux, or WSL, it is a cheap, well-instrumented experiment with an unusually honest security story; shared-vault teams should wait.

Sources