OpenKB
OpenKB is an open-source Python CLI by VectifyAI that compiles a folder of raw markdown into an LLM-synthesized wiki. Each source document gets a summary page; cross-cutting themes get auto-generated concept pages; queries can be saved as exploration artifacts; and the resulting graph can be linted for orphans, contradictions, and gaps. It is bring-your-own-LLM — any OpenRouter-compatible model, including free open-weight options.
Architecture & concepts
Directory taxonomy
OpenKB enforces a strict split between source-derived and synthesized content:
| Folder | Purpose |
|---|---|
raw/ |
Original markdown documents (input) |
wiki/sources/ |
Source registry / metadata |
wiki/summaries/ |
One LLM-generated page per source document |
wiki/concepts/ |
Cross-document synthesis pages (auto-discovered themes) |
wiki/explorations/ |
Saved query results, treated as first-class artifacts |
wiki/reports/ |
Lint output, health checks |
wiki/AGENTS.md |
Per-wiki schema/conventions doc |
wiki/index.md |
KB overview |
wiki/log.md |
Operations timeline |
Compile workflow
openkb add <doc.md>— the LLM reads the document, writes a summary page, and updates or creates concept pages where the doc relates to existing themes. Cross-references emerge asWikilinks.openkb list/openkb status— inspect indexed content.openkb query "..."— natural-language Q&A against the synthesized wiki.openkb query "..." --save— persist the answer as anexplorations/page.openkb lint— health check across the wiki, output toreports/.- Adding a new doc later updates only the affected concept pages (incremental, not a full rebuild).
Lint checks
The lint command flags:
- Orphans — pages with no inbound or outbound
Wikilinks. - Contradictions — claims across pages that disagree.
- Gaps — concept pages referenced but not yet written.
- Stale links —
Wikilinkswhose target was renamed or removed.
Programmatic graph analysis
Because OpenKB exposes the wiki as plain markdown, a small Python script can compute:
- Inbound link counts per page (hub identification)
- Cross-reference adjacency (which pages link to which)
- Page-size distribution and link density
Where it fits
OpenKB is best understood as a local research wiki compiler — a lightweight way to turn a markdown corpus into a navigable, synthesized knowledge base. Several of its design choices are instructive on their own:
- Lint as a health check — treating orphans, contradictions, and gaps as first-class signals keeps a growing wiki coherent.
- Explorations as artifacts — a persistent record of synthesis questions already asked avoids re-running them and lets research compound.
- Strict source/summary/concept/exploration split — keeps source-derived and synthesized pages from bleeding together.
- Per-wiki conventions file — a single
AGENTS.mdreduces drift as content is added in batches.
Limitations
- No publishing pipeline — output is local markdown only; there is no path to a CMS or website.
- No schema enforcement — frontmatter is freeform, with no standardized fields.
- Lint heuristics are LLM-judged — quality varies with the strength of the chosen model.
- One wiki per directory — no multi-corpus or hierarchical concept.
- No verification layer — factual claims are not checked against external sources.
Pricing
- Tool itself: Free, open source, MIT license.
- LLM costs: Bring your own OpenRouter (or compatible) API key. Works with free models like
meta-llama/llama-3.3-70b-instruct:freefor zero-cost experimentation.
Expert notes
OpenKB’s highest-value idea is the lint command — even a minimum-viable orphan-and-missing-link check pays off quickly on any actively growing markdown wiki. The explorations/ pattern is a close second: a synthesis-question audit trail compounds in value over time. It is best treated as a design reference and a self-contained local tool rather than a component to embed in a larger publishing stack, since it stops at the local wiki layer.
Direct link: https://github.com/VectifyAI/OpenKB

