A searchable personal wiki linked to its sources
An incremental capture pipeline and searchable reader that turn scattered notes into a source-linked personal wiki.
Privately deployed · Evolving
The problem
Decisions and useful context get scattered across tools. Importing everything blindly creates a different problem: duplicated notes, uncertain coverage, and polished summaries that are hard to trace back to evidence.
What I built
I built the capture and validation workflow, plus a read-only reader that searches a committed snapshot of the knowledge base.
- Checkpointed source capture and retry-safe ingestion, so interrupted runs can resume without creating duplicate captures for the same retry.
- Validation that accounts for pending notes and checks source references before committing generated wiki changes.
- A FastAPI reader backed by SQLite full-text search, with committed snapshots and separate source-coverage reporting.
The engineering decision
Publishing one coherent snapshot at a time
The reader indexes one committed Git tree. Work still in progress stays out of the reader until it is committed. Rebuilding the index happens atomically, so a refresh does not expose a half-updated collection.
If a refresh fails, the reader can keep serving the last good index and report a degraded state. Capture coverage is tracked separately: a working reader does not imply that every source has been imported.
Interactive model · synthetic data
Change the draft. Keep the reader steady.
Publishing and indexing are separate steps. Explore what happens between them.
Source: sample note A
Interface notes
Keep the interface focused on one useful action.
Source: sample note A
Read-only viewThe reader shows the current committed snapshot.
“Checks” means automated structure and source-reference validation, not human approval or a guarantee of accuracy. Validation is illustrated, not executed here. This model does not write notes or Git commits.
What I checked
- Synthetic regression tests exercise checkpointed ingestion, deduplication, validation, and privacy boundaries.
- Reader tests verify that uncommitted edits stay hidden and failed refreshes preserve the last good index.
- The private reader is deployed; source coverage and capture workflows continue to evolve.
Limits
- Capture coverage is incomplete and varies by source. The system does not promise complete memory or error-free generated summaries.
- Validation is automated; it should not be confused with a human reviewing every generated note.
Tools and foundations
I built the capture, validation, and reader software around the existing LLM-wiki pattern. Hermes provides the agent runtime and scheduling; FastAPI, Git, and SQLite FTS5 provide the application and storage foundations.