Drop anything into it: web pages, your own notes, meeting takeaways, business docs, drafts. AI wires it all into one connected brain built for two readers. Your AI reads the graph and answers with citations. You read the wiki, your own private Wikipedia.
Synapse turns Obsidian + Claude Code into a self-assembling second brain: atomic notes joined by typed edges (supports, contradicts, derived from...), each carrying provenance and a verification status. That's the LLM-wiki pattern evolved with connection-typing and a trust layer. And it isn't just what you read; it's what you think. Your writing and your sources land in the same graph, so you can ask where they agree and where they collide. Optionally, it also distills your Claude Code sessions' defining moments into the same graph, so context compounds instead of evaporating.
flowchart LR
A["Drop anything<br>web clip · note · PDF"] --> B["raw/ inbox"]
B --> C["/ingest"]
C --> D["typed knowledge graph<br>plain Markdown + YAML"]
D --> E["Ask: /connect · /compare · /consensus<br>cited answers from your library"]
D --> F["Browse: /browse<br>your private wiki"]
Two readers, one brain: the AI traverses the graph and answers with citations; you read the same brain as a wiki. Everything below is those two loops in detail.
claude plugin marketplace add jakelherridge/synapse-capture
claude plugin install synapse-capture@synapse-capture
Then type /setup in Claude Code. It builds your vault, writes config, and walks you through everything. Full from-scratch walkthrough (new to Obsidian and Claude): SETUP.md.
- Drop. Anything lands in your vault's
raw/inbox, from either ramp:- From the internet: the Obsidian Web Clipper saves any article, YouTube page, or website there in one click.
- From your desktop: drag in any file Claude can read. Your notes and drafts, meeting takeaways, journal entries, strategy memos, your team's post-mortems, exported chats, PDFs. Your own thinking is first-class input, not an afterthought.
/ingest. Claude reads the inbox, discusses takeaways with you, writes atomic typed nodes wired into what you already know, validates the graph, and archives the source. Watch it grow in Obsidian's graph view.- Ask. The AI half of the payoff. Starter prompts, every answer cited to your own library:
/connect <topic>: connect all of my thoughts on this/compare <topic>: my view vs. my sources (agreements, tensions, my gaps)/consensus <topic>: what everyone in my vault agrees on, with takeaways
/browse. The human half: your Synapse Wiki, the whole vault rendered as a private, Wikipedia-like site. A homepage with search, a what's-new digest, and recent activity. An article page per idea with its typed connections in the margin and a hand-sketched local map. Compiled topic pages ("what I think" vs "what I've read", contradictions surfaced). And a zoomable map of the whole brain. It rebuilds itself deterministically in ~0.1s after every ingest and capture; zero dependencies, it's just files.
![]() |
![]() |
| Typed edges + trust: this pending note contradicts a verified source, and the wiki shows it. | The map: your domains as regions, contradictions as red dashed ink, every dot clickable. |
Every answer cites [[nodes]] with their verification status. Valuable syntheses get filed back as nodes, so the graph compounds.
Off by default. You're in control (capture_mode in ~/.config/synapse-capture/config.yaml):
| Mode | Behavior |
|---|---|
"manual" (default) |
Nothing is auto-recorded. /distill captures the current chat when you ask; /pin "..." grabs one moment. |
"always" |
SessionEnd / PreCompact hooks auto-distill every qualifying session's defining moments: decisions, findings, pivots. |
- Capture (write side): a deterministic pre-filter scrubs secrets and tool noise; a gated Haiku distiller proposes ≤7 structured moments; a deterministic writer validates against a closed schema, dedups against the graph, and never blind-overwrites (a superseding decision becomes a new node with a typed
supersedesedge). - Read-back (read side): at
SessionStart, the plugin injects the project's capture digest (past decisions, with status) so new sessions start already knowing what you settled. - Verification is demand-driven: captures land
not-yet-verified; Claude asks you to confirm, correct, or discard one the first time it materially relies on it. Never-used captures stay pending, which is healthy, not neglect./reviewexists for batch cleanup if you like inbox-zero.
Ingest and capture are fully independent. Use either without the other.
The model half proposes (distiller/ingest analysis); a deterministic stdlib-Python half disposes (validation, secret rejection, dedup, no-overwrite writes, index and site builds). The vault ships in vault-template/: the ontology contract, the index builder/validator, the wiki generator, and a CLAUDE.md operating manual. It's all Markdown + YAML in a folder, yours to keep even if you uninstall the plugin.
bin/doctor.sh runs the full preflight: config, vault, CLI, auth mode, offline pipeline proof, capture consent, and the last 5 capture runs. Every capture attempt (success, skip, or failure, with the reason) appends one line to ~/.cache/synapse-capture/runs.log.
- Secrets are redacted before distillation and rejected at write time (defense in depth).
- Prompt injection: transcripts and clipped pages are data, never instructions; the writer validates every field against a closed schema.
- Trust model: no path auto-promotes an AI-authored node to
verified. Every status change is a human act. - Real transcripts are gitignored; the only committed
.jsonlis a synthetic test fixture.
claudeCLI (works on OAuth out of the box; setANTHROPIC_API_KEYfor the leaner--baredistill mode).python3(stdlib only). Obsidian is optional but recommended: it's the editing view and the live graph, while the wiki is the reading view.
python3 -m unittest discover -s tests
MIT · CHANGELOG · video scripts: the teaser, the from-zero speedrun


