PKM stack — Foam + foam-mcp for agents, Obsidian GUI for humans
PKM stack
Locked
- Foam (foambubble/foam v0.40.4, MIT) — VS Code extension +
foam-cli+foam-mcpv0.40.2.- Agent surface:
foam-mcpwired into CC + OpenCode + Kilo permcp-config-single-source-of-truth. - Exposes
listNotes,listTags,searchWorkspace,noteCreate,noteMove,links,backlinks,frontmatterto agents. - Human surface: VS Code sidebar (graph, backlinks, orphans, tags panels).
- Agent surface:
- Obsidian (v1.12+, free personal) — human-only GUI viewer over the SAME vault (
C:/D/oriz/knowledge/).- Screenpipe export target (Screenpipe pipe writes
.mdinto vault). - Nicer graph, mobile app, canvas plugin. No
mcp-obsidianwired — agents talk to knowledge/ viafoam-mcponly. Keeps MCP count minimal.
- Screenpipe export target (Screenpipe pipe writes
- Skip Khoj, AnythingLLM, Smart Connections, Reor. See
skip-semantic-rag-rely-on-okf-lookup-2026-07-03.
Storage
C:/D/oriz/knowledge/ = plain markdown, [[wikilinks]], YAML frontmatter. Both Foam and Obsidian point at the same folder. No conflict — both read/write plain .md. .obsidian/ config lives under obsidian/ sibling folder per current setup, gitignored where machine-specific.
Why Foam wins
Score 92/100 vs Obsidian 74, all others <60. Adversarially verified 15 tools 2026-07-03:
- MIT license, zero card, zero cloud.
- Plain
.md= git-nativedocs(knowledge): <slug>commits +git log --followper file survive. [[wikilinks]]+ YAML frontmatter native.- First-party MCP server (
foam mcpsubcommand v0.40.2). foam-cli(npm i -g foam-cli) — matches caveman/CLI-native preference.- BYO sync = git already handles it.
Why Obsidian joins (human viewer only)
- Screenpipe pipe writes markdown digests into Obsidian vaults; matches "document everything" ask.
- Prettier GUI + mobile app + canvas + community plugin ecosystem (2690+).
- Free forever for personal use, no card (only $50/user/yr for commercial — N/A here).
- Zero storage conflict with Foam (both are
.mdeditors on the same folder).
Scope hard-locked: no mcp-obsidian, no Local REST API plugin, no Smart Connections plugin. Obsidian is a viewer. Agents use foam-mcp. Prevents MCP bloat + agent-fleet-parity confusion.
Why every other tool rejected
| Rejection | Reason |
|---|---|
| Khoj / AnythingLLM / Reor | RAG-over-notes shape, not note-store. Postgres+pgvector / LanceDB state can't be git-committed. See related skip-rag decision. |
| Dendron | Abandoned (last commit 2025-01-30). Violates no-fork-divergence. |
| Reor | Archived 2026-03-07. Domain hijacked (issue #533). |
| Logseq | Outliner-forced bullet nesting hostile to prose OKF. No YAML frontmatter. DB-version migration threatens plain-md guarantee. |
| Trilium / Joplin / AppFlowy / memos / Notesnook / Anytype | SQLite/encrypted DB storage, not .md files. Kills git log --follow, per-file commits, knowledge-deletion-not-supersession. |
| SilverBullet | Server owns space dir → git pull while running = index drift. Multi-writer unsupported. |
| Zettlr | Plain md but no MCP, no CLI, no agent surface. Adds nothing over Foam. |
| TiddlyWiki | Single-HTML default blob is git-hostile. .tid custom format not .md. |
Full 15-tool matrix: verified in workflow run wcwfswst7 (2026-07-03).
MCP count budget
foam-mcp= +1 (Foam-side)- No
mcp-obsidian(rejected — MCP minimalism) - No Khoj/AnythingLLM MCP (rejected — deferred)
- Total added: 1 MCP. Aligned with "minimal MCP" taste.
Screenpipe → knowledge/journal/ pipe
Screenpipe already writes memory to screenpipe-memories.md. Per auto-journal-cc-sessionend-plus-screenpipe-2026-07-03, configure a pipe that also writes daily digests to knowledge/journal/YYYY-MM-DD.md.
Rollback trigger
- Foam MCP broken by upstream refactor → pin
foam-cliversion, file upstream issue perterse-issues-less-hallucination. - Foam abandoned (last commit >12mo) → revisit with Obsidian +
mcp-obsidianas primary agent surface. - Semantic search gap becomes load-bearing → add AnythingLLM sidecar per
skip-semantic-rag-rely-on-okf-lookup-2026-07-03.
Related
- [[skip-semantic-rag-rely-on-okf-lookup-2026-07-03]]
- [[auto-journal-cc-sessionend-plus-screenpipe-2026-07-03]]
- [[journal-in-knowledge-daily-2026-07-03]]
- [[mcp-config-single-source-of-truth]]
- [[knowledge-everything-caveman]]