OpenKB
Compile raw documents into a persistent, interlinked LLM wiki instead of re-deriving knowledge on every query.
- Source repo
- VectifyAI/OpenKB
- Stars
- ★ 4.9k
- Last updated
- 3mo ago
- License
- Apache-2.0
- Primary language
- Python
- FA score
- 69/100 · Some gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformCodex · Claude Code · OpenAI API · Claude APIChatGPT (Partial support)
- Cost
- Free software; you pay for model usage
- Setup effort
- Low · running in minutes
- You'll need
- Typical use
- A researcher ingesting a dozen papers one at a time with openkb add, letting the LLM maintain concept and entity pages so questions do not require re-reading source PDFs.
- Not a fit if
- Teams wanting human review or to keep manual edits: recompile overwrites them
- Users needing non-PDF long documents or very large collections: still on the roadmap
- Source review
- 69/100 · Some gaps
What does this agent do, and when should you use it?
OpenKB is a CLI, open-source system from VectifyAI that compiles raw documents into a structured, interlinked wiki-style knowledge base using LLMs, with retrieval powered by PageIndex's vectorless, reasoning-based tree index for long documents. It splits into a wiki foundation layer (openkb init/add/list/status/watch/lint/remove/recompile) that compiles and maintains knowledge, and a generator layer (query, chat, visualize, skill new, deck new) that turns the wiki into outputs. Short documents go through markitdown into Markdown and are read in full; PDFs of 20 pages or more are turned by PageIndex into a hierarchical tree index that the LLM reasons over, with figures, tables and images handled natively. The result is a plain-.md wiki/ directory that opens directly in Obsidian, plus a bundled FastAPI service and Knowledge Workbench web UI for browsing, uploading, and streaming queries.
openkb init writes .openkb/config.yaml and scaffolds the wiki; openkb add accepts files, directories, or URLs, converting short inputs via markitdown and long PDFs via PageIndex tree indexing, then the LLM generates a summary page, reads existing concept and entity pages, performs cross-document synthesis, creates or updates concepts and entities (people, orgs, places, products), and updates the index and log. openkb query returns a grounded, cited answer and can --save into wiki/explorations/; openkb chat runs multi-turn sessions with --resume/--list/--delete management and slash commands such as /add, /skill, /deck, /lint, /save. openkb skill new distills a redistributable agent skill (with validate, eval, history, rollback) installable by Claude Code, Codex, and Gemini CLI. openkb visualize emits a self-contained 3D/mind-map/radial knowledge graph HTML; openkb deck new produces a single-file HTML slide deck with an optional --critique quality pass. Models are reached through LiteLLM using provider/model strings in config.yaml, with keys in .env as LLM_API_KEY.
- A researcher ingesting a dozen papers one at a time with openkb add, letting the LLM maintain concept and entity pages so questions do not require re-reading source PDFs.
- An analyst tracking a field long-term who leaves openkb watch running on raw/ so newly dropped PDFs compile automatically.
- Someone with an existing Obsidian vault who opens the generated wiki/ directly to browse concept links and the graph view.
- An engineer distributing team knowledge as an installable read-only skill for Claude Code, Codex, or Gemini CLI via openkb skill new.
- Teams with scanned or very large PDFs who set PAGEINDEX_API_KEY to enable PageIndex Cloud OCR and faster structure generation.
- Developers who need to query the knowledge base from their own app, installing openkb[web] and starting openkb-web to use the FastAPI service and its /docs reference.
How do you install or deploy this agent?
Requires Python and pip. Base install: pip install openkb. Alternatives: pip install git+https://github.com/VectifyAI/OpenKB.git for the latest GitHub code, or git clone followed by pip install -e . for an editable development install. The web UI and REST API need an extra: pip install "openkb[web]". Put your model credential in a .env file as LLM_API_KEY=your_llm_api_key; OAuth device-flow subscription providers such as chatgpt/* and github_copilot/* need no API key. To enable PageIndex Cloud (OCR for scanned PDFs, faster structure generation), add PAGEINDEX_API_KEY to the same .env.
How do you use this agent?
Create a working directory (mkdir my-kb && cd my-kb) and run openkb init, choosing a model such as anthropic/claude-sonnet-4-6 or gpt-5.4. Ingest content with openkb add paper.pdf, openkb add ~/papers/, or openkb add https://arxiv.org/pdf/2509.11420. Ask a single question with openkb query "What are the main findings?" or start an interactive session with openkb chat (type / inside chat for slash commands). For outputs, run openkb skill new my-expert "Reason like an expert on <your-topic>", openkb visualize, or openkb deck new my-deck "An intro deck on <your-topic>". For the browser experience: pip install "openkb[web]" then openkb-web, and open http://127.0.0.1:7566/ for the Knowledge Workbench; auth is off by default, so set OPENKB_API_TOKEN before exposing it. Frontend work uses cd frontend && npm install && npm run dev.
What are this agent's strengths and limitations?
- Knowledge lands as plain .md files with [[wikilinks]] under wiki/, so Obsidian opens it as a vault and there is no proprietary storage format to escape.
- Long-document retrieval uses PageIndex tree indexing rather than a vector DB; the LLM reasons over the index, and scanned PDFs can optionally be handled by PageIndex Cloud OCR.
- Model access is abstracted through LiteLLM, with OpenAI, Claude, Gemini, and OAuth subscription providers such as chatgpt/* and github_copilot/* documented, so switching is mostly a config.yaml provider/model edit.
- Generators sit on top of a stable wiki layer: the same compiled knowledge feeds cited answers, multi-turn chat, an interactive graph, distributable agent skills, and HTML slide decks.
- Every core step depends on LLM calls, so ingestion, querying, and skill distillation consume model budget with no published cost estimate or offline fallback.
- Long-PDF accuracy is tied to PageIndex, so query citation quality tracks index quality, and scanned documents need the cloud option for OCR in practice.
- LLM compilation rewrites concept pages, and recompile overwrites manual edits; the README warns about this with --dry-run but there is no built-in versioning or human review gate.
- wiki/AGENTS.md is the LLM's instruction manual for maintaining the wiki, so changing structural conventions requires understanding that file.
- The roadmap still lists non-PDF long documents, nested folders, hierarchical concept indexing, and a database-backed storage engine as unfinished, which limits very large collections today.
How does this agent compare with similar options?
Karpathy's documented workflow: short documents are read by the LLM directly, long documents hit context limits and context rot, input arrives via a web clipper into .md, and entity extraction is manual. OpenKB normalizes short inputs through markitdown, handles long ones with PageIndex tree indexing, accepts PDF, Word, PPT, Excel, HTML, text, CSV, Markdown, and URLs, auto-extracts entities (people, orgs, places, products), and adds Skill Factory plus agent CLI integration on top of the wiki.
Traditional RAG: the README argues traditional RAG rediscovers knowledge from scratch on every query and accumulates nothing, whereas OpenKB compiles knowledge once into a persistent wiki where cross-references already exist and contradictions are flagged.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| OpenKB This agent | 69 · Some gaps | CLIFree + model costs | ★ 4.9k | 3mo ago | Python | Codex · Claude Code · OpenAI API · Claude API |
| DeepTutor: Lifelong Personalized Tutoring | 68 · Some gaps | CLIFree + model costs | ★ 57k | 1d ago | Python | Codex · Claude Code · OpenAI API · Claude API |
| SwarmVault | 75 · Good | CLIFree + model costs | ★ 733 | 4mo ago | TypeScript | Codex · Claude Code |
| LLM Wiki | 74 · Some gaps | Agent plugin / skillFree + model costs | ★ 1.5k | 14d ago | Python | Codex · Claude Code |
How does FollowAgents rate this agent?
Why each dimension lost points
The skill explicitly treats wiki content as untrusted data, restricts read paths, and says not to execute write commands without user request; tool tests also show path-escape denial. The CLI reads keys from environment variables, and the README says API auth is off by default and recommends a token before exposure. Write boundaries are described, but compilation, deletion, and web uploads can have substantial effects; the supplied excerpts do not establish confirmation behavior for every operation, so full marks are not justified.
Dependency versions are constrained, and CI configuration covers linting, type checking, tests, and frontend builds. The packet also describes locking, staged publication, and rollback mechanisms. Configuration descriptions are not fully consistent across the README, fixtures, and code excerpt, and only limited error-message examples are shown, so these criteria lose points.
The README covers concrete document ingestion, long-document retrieval, Q&A, chat, skill, and deck scenarios, with format, provider, and local/cloud PageIndex choices. Skills state their intended use and exclusions and target multiple agent CLIs. Environment constraints and capability boundaries are distributed across guides rather than collected in a complete compatibility matrix.
The README is organized around installation, quick start, architecture, commands, configuration, and integrations, with example directories and a configuration reference. Apache-2.0 is stated and included; VCS tags supply versions, and CI and publishing steps are documented. The roadmap identifies unfinished areas, but the sample does not include a full changelog or a clear maintenance-responsibility commitment; repository or author metadata alone does not establish responsibility.
The product compiles documents into a linked, maintainable Markdown knowledge base and offers usable outputs including cited queries, chat, graphs, skills, and decks. Its intended value is clear. LLM use can incur API costs and generated content needs judgment; the packet gives no representative cost or quality benchmarks, so cost-benefit evidence is partial.
README command and architecture claims receive partial support from the CLI, dependency metadata, skills, and test examples; tests contain readable behavioral assertions, but this static review does not claim to have run them. Some capabilities are corroborated across source types while others appear only as README claims. The text generally distinguishes features from roadmap items, but incomplete coverage warrants conservative scores.
- API authentication is off by default; configure OPENKB_API_TOKEN before exposing the service.
- Before processing sensitive documents, review the selected LLM provider's data handling. The packet shows documents are compiled or queried through an LLM but does not detail retention policies.
- The README says recompile overwrites manual edits and remove cleans related pages; use dry-run and back up important material first.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
Release notes excerpt
Hotfix to avoid openai InputTokensDetails breaking change. What's Changed fix(deps): pin openai==2.44.0 to avoid InputTokensDetails breaking change by @KylinMountain in https://github.com/VectifyAI/OpenKB/pull/191 Full Changelog: https://github.com/VectifyAI/OpenKB/compare/v0.4.4...v0.4.5View on GitHub ↗ -
Release notes excerpt
What's Changed * fix(converter): move keep_data_uris to convert call and fix lint by @RussellLuo in https://github.com/VectifyAI/OpenKB/pull/165 * feat(mutation): route serial add mutations through coordinator by @gwokhou in https://github.com/VectifyAI/OpenKB/pull/156 * fix(agent): make parallel_tool_calls configurable to fix Amazon Bedrock query/chat (#175) by @KylinMountain in https://github.com/VectifyAI/OpenKB/pull/177 * feat: upgrade pageindex sdk and compile concurrency configurable by @KylinMountain in https://github.com/VectifyAI/OpenKB/pull/174 …View on GitHub ↗ -
Release notes excerpt
What's Changed * fix(lint): don't hide same-stem orphans behind qualified links by @jichaowang02-lang in https://github.com/VectifyAI/OpenKB/pull/147 * fix(compiler): strip cache_control for non-Anthropic providers by @Aldominguez12 in https://github.com/VectifyAI/OpenKB/pull/154 * feat: add serial crash-safe mutation recovery by @gwokhou in https://github.com/VectifyAI/OpenKB/pull/142 * perf(mutation): don't snapshot the whole blob store on every add by @KylinMountain in https://github.com/VectifyAI/OpenKB/pull/155 …View on GitHub ↗
FAQ
Does it need a vector database?
Which models can it use and what credentials are required?
I edited wiki pages by hand — will recompiling overwrite them?
What if long PDFs are handled poorly?
Are the generated skills and web UI safe to share?
Thanks — we use this to improve the page.