Building a Self-Improving Knowledge System with Claude Code and Obsidian

✍️ OpenClawRadar📅 Published: April 13, 2026🔗 Source
Building a Self-Improving Knowledge System with Claude Code and Obsidian
Ad

Architecture Overview

A developer created a self-improving knowledge system that runs 25 automated tools hourly to solve Claude Code's session amnesia problem. The system connects Claude Code to an Obsidian vault (~350 notes) with local semantic search, knowledge graphs, and automated processing.

Technical Stack

  • Obsidian vault as the knowledge store
  • Claude Code (Opus) as the AI that reads/writes the vault
  • Ollama + bge-m3 (1024-dim embeddings, RTX 3080) for local semantic search
  • SQLite (better-sqlite3) for search index, graph DB, codebase index
  • Express server for a React dashboard
  • 2 MCP servers giving Claude native vault + graph access
  • Windows Task Scheduler running everything hourly
Ad

Tool Layers and Functions

Layer 1: Data Collection

  • vault-live-sync.mjs: Watches Claude Code JSONL sessions in real-time, converts to Obsidian notes
  • vault-sync.mjs: Hourly sync of Supabase stats, AutoPost status, git activity, project context
  • vault-voice.mjs: Voice-to-vault with Whisper transcription + Sonnet summary of audio files
  • vault-clip.mjs: Web clipping from RSS feeds + Brave Search topic monitoring + AI summary
  • vault-git-stats.mjs: Git metrics including commit streaks, file hotspots, hourly distribution

Layer 2: Processing & Intelligence

  • vault-digest.mjs: Daily digest aggregating all sessions into one readable page
  • vault-reflect.mjs: Uses Sonnet to extract key decisions from sessions, auto-promotes to MEMORY.md
  • vault-autotag.mjs: AI auto-tagging with Sonnet suggesting tags + wikilink connections
  • vault-schema.mjs: Frontmatter validator with 10 note types, compliance reporting, auto-fix mode
  • vault-handoff.mjs: Generates machine-readable handoff.json (survives compaction better than markdown)
  • vault-session-start.mjs: Assembles optimal context package for new Claude sessions

Layer 3: Search & Retrieval

  • vault-search.mjs: FTS5 + chunked semantic search (512-char chunks, bge-m3 1024-dim). Flags include --semantic, --hybrid, --scope, --since, --between, --recent. Includes retrieval logging + heat map.
  • vault-codebase.mjs: Indexes 2,011 source files: exports, routes, imports, JSDoc
  • vault-graph.mjs: Knowledge graph with 375 nodes, 275 edges, betweenness centrality, community detection, link suggestions
  • vault-graph-mcp.mjs: Graph as MCP server with 6 tools (search, neighbors, paths, common, bridges, communities) Claude can use natively

Layer 4: Self-Improvement

  • vault-patterns.mjs: Weekly patterns including momentum score (1-10), project attention %, velocity trends, token burn ($), stuck detection, frustration/energy tracking, burnout risk
  • vault-spaced.mjs: Spaced repetition (FSRS) with 348 notes tracked, priority-based review scheduling
  • vault-prune.mjs: Hot/warm/cold decay scoring, auto-archives stale notes, flags never-retrieved notes
  • vault-contradict.mjs: Contradiction detection with rule-based (stale references, metric drift, date conflicts) + AI-powered (Sonnet compares related docs)
  • vault-research.mjs: Autonomous research with Brave Search + Sonnet, scheduled topic monitoring

Layer 5: Visualization & Monitoring

  • vault-canvas.mjs: Auto-generates Obsidian Canvas files from knowledge graph (5 modes: full map, per-project, hub-centered, communities, daily)
  • vault-heartbeat.mjs: Proactive agent that gathers state from all services, uses Sonnet to reason about what needs attention

The system was built by a solo dev agency owner who runs 4 interconnected projects, manages 64K business leads, and conducts hundreds of Claude Code sessions per week. The tools are all Node.js ES modules with zero external dependencies beyond what's already in the repo.

📖 Read the full source: r/ClaudeAI

Ad

👀 See Also

Lumyr: Dashboard Generation via Claude with Python and Streamlit Automation
Tools

Lumyr: Dashboard Generation via Claude with Python and Streamlit Automation

Lumyr is a tool that generates live, shareable dashboards from plain English descriptions using Claude for dashboard generation and automating the Python and Streamlit layer. Users don't need to write Python, open Streamlit, deploy, set up hosting, or manage infrastructure.

OpenClawRadar
Scrapling integrated as OpenClaw's scraping backbone
Tools

Scrapling integrated as OpenClaw's scraping backbone

Scrapling, an open-source library that learns page structure and adapts to changes, has been integrated into OpenClaw as its core scraping engine. It's 774x faster than BeautifulSoup with Lxml and supports multiple selector types with async sessions.

OpenClawRadar
AI Roundtable: Tool for Comparing 200+ AI Models on Structured Questions
Tools

AI Roundtable: Tool for Comparing 200+ AI Models on Structured Questions

AI Roundtable is a free tool that lets users pose questions with defined answer options, select up to 50 models from a pool of 200+, and get structured responses under identical conditions. It also includes a debate feature where models can see each other's reasoning and a reviewer model that summarizes transcripts.

OpenClawRadar
Sense: Go SDK for LLM-powered test assertions and structured text extraction
Tools

Sense: Go SDK for LLM-powered test assertions and structured text extraction

Sense is a Go SDK that uses Claude for two main functions: evaluating non-deterministic output in tests with plain English assertions, and extracting typed structs from unstructured text through reflection and forced tool_use.

OpenClawRadar