Generated banner for OpenKB: Open LLM Knowledge Base
Generated logo for OpenKB: Open LLM Knowledge Base

OpenKB: Open LLM Knowledge Base

LLM wiki kitOfficial PageIndex project

Created by PageIndex

Published in VectifyAI/OpenKB. Publisher page

4,864 GitHub stars

What it is

OpenKB: Open LLM Knowledge Base
— the description by PageIndex

AutoGineer overview, from the brain’s own files

OpenKB is an open-source system designed to transform raw documents into a structured, interlinked knowledge base. Unlike traditional RAG systems that re-derive knowledge on every query, OpenKB compiles documents into a persistent wiki foundation. It uses PageIndex for vectorless, reasoning-based retrieval, which allows it to handle long documents by processing them into hierarchical tree indexes. The system maintains summaries, concept pages, and entity pages, ensuring that knowledge compounds over time. It supports a wide range of file formats and integrates with various LLM providers via LiteLLM. OpenKB also includes a Skill Factory for distilling portable agent skills, a web-based Knowledge Workbench, and produces Obsidian-compatible markdown files.

How it works

Memory model: LLM wiki

AutoGineer overview, from the brain’s own files

OpenKB functions by ingesting raw documents like PDFs, Word files, or URLs and converting them into a structured wiki of markdown files. For short documents, it generates summaries and concepts directly. For long documents, it uses PageIndex to create a hierarchical tree index that the LLM reads instead of the full text. This wiki foundation is then used by generators to perform queries, conduct multi-turn chats, visualize knowledge graphs, or distill redistributable agent skills. The system keeps the wiki in sync as new documents are added and provides a CLI for managing the knowledge base.

Folders
FolderRoleFiles
.githubagent-config2
assetsattachments1
docsdocs2
examplesexamples31
skillsagent-instructions6
teststests63
.claude-pluginfolder1
frontendfolder120
openkbfolder58

The agent reads

Requirements

Runtimes: Python >=3.10

API keys (by name): LLM_API_KEY, OPENKB_API_TOKEN, PAGEINDEX_API_KEY

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Google Antigravity, Kiro, OpenCode, Amp, Roo Code, Cline, JetBrains Junie, Devin (ex-Windsurf)

Set it up

  1. Clone the repository at the commit AutoGineer scanned:

    git clone https://github.com/VectifyAI/OpenKB.git && cd OpenKB && git checkout ff54396e575ee6feb0113b631a34caa082b441cc
  2. Claude Code reads CLAUDE.md from this folder automatically.

  3. cd OpenKB && claude

  4. AutoGineer scanned these files at commit ff54396.

  5. Not scanned by AutoGineerThe author’s README also describes installing it from a clone of its repository. Read its install section: AutoGineer did not scan that path. https://github.com/VectifyAI/OpenKB/blob/ff54396e575ee6feb0113b631a34caa082b441cc/README.md#install
  6. Not scanned by AutoGineerIts dependencies are installed by pip or uv when you run it and were not scanned by AutoGineer (14 declared). https://pypi.org/project/openkb/
  7. Created by PageIndex. Published in VectifyAI/OpenKB. Licence: Apache License 2.0.

Usage

AutoGineer overview, from the brain’s own files

  • Initialize a new knowledge base with openkb init
  • Add documents or directories to the KB using openkb add
  • Query the knowledge base for grounded answers using openkb query
  • Start an interactive chat session over the wiki with openkb chat
  • Distill a portable agent skill from the wiki using openkb skill new
  • Generate a slide deck from the wiki content using openkb deck new
“openkb query "What are the main findings of the uploaded research papers?"”
The agent provides a grounded, cited answer based on the synthesized summaries and concept pages in the wiki.
“openkb skill new expert-analyst "Reason like a senior data analyst on the current project"”
The system distills a portable agent skill folder that can be loaded by other agents like Claude Code or Codex.

Documentation by PageIndex

<div align="center">

<a href="https://openkb.ai"> <img src="https://docs.pageindex.ai/images/openkb.png" alt="OpenKB (by PageIndex)" /> </a>

<br /> <br />

<p align="center"> <a href="https://trendshift.io/repositories/26145" target="_blank"><img src="https://trendshift.io/api/badge/repositories/26145" alt="VectifyAI%2FOpenKB | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a> </p>

OpenKB: Open LLM Knowledge Base

<p align="center"><i>Scale to long documents • Reasoning-based retrieval • Native multi-modality • No Vector DB</i></p>

</div>

<details open> <summary><h2>📢 Recent Updates</h2></summary>

  • Google Open Knowledge Format (OKF): Wiki pages follow the Google OKF specification for knowledge sharing.

  • Entity Pages: People, orgs, places, and products as dedicated wiki pages, auto-extracted and kept in sync.

</details>


📑 What is OpenKB

OpenKB (Open Knowledge Base) is an open-source system (in CLI) that compiles raw documents into a structured, interlinked wiki-style knowledge base using LLMs, powered by PageIndex's vectorless, reasoning-based retrieval for long documents.

The idea is based on a concept described by Andrej Karpathy: LLMs generate summaries, concept pages, and cross-references, all maintained automatically. Knowledge compounds over time instead of being re-derived on every query.

Why not traditional RAG?

Traditional RAG rediscovers knowledge from scratch on every query. Nothing accumulates. OpenKB compiles knowledge once into a persistent wiki, then keeps it current. Cross-references already exist, contradictions are flagged, and synthesis reflects everything consumed.

OpenKB has two layers: a wiki foundation that compiles and maintains your knowledge, and generators (query / chat / Skill Factory) that turn it into useful output. See Usage for the full command list.

Features
  • Broad format support: PDF, Word, Markdown, PowerPoint, HTML, Excel, CSV, text, URLs, and more.

  • Scales to long documents: Long and complex documents are handled via PageIndex tree indexing, enabling accurate, vectorless, context-aware retrieval.

  • Native multi-modality: Retrieves and understands figures, tables, and images, not just text.

  • Compiled wiki: The LLM compiles your documents into summaries, concept pages, entity pages, and cross-links, all kept in sync.

  • Query & chat: One-off questions or multi-turn conversations over your wiki, with persisted sessions to resume.

  • Skill Factory: Distills redistributable agent skills from your wiki.

  • OKF-ready: Wiki pages follow the Google OKF specification for knowledge sharing.

  • Obsidian-compatible: The wiki is plain .md files with cross-links. Opens in Obsidian for graph view.

  • Knowledge Workbench (Web UI): A bundled web UI served at / to browse the KB, upload and compile documents, and stream queries and chats — all in the browser.

🚀 Getting Started

Install
pip install openkb

<details> <summary><b><i>Other install options:</i></b></summary>

  • Latest from GitHub:

    pip install git+https://github.com/VectifyAI/OpenKB.git
  • Install from source (editable, for development):

    git clone https://github.com/VectifyAI/OpenKB.git
    cd OpenKB
    pip install -e .

</details>

Quick Start
# 1. Create a directory for your knowledge base
mkdir my-kb && cd my-kb

# 2. Initialize the knowledge base
openkb init

# 3. Add documents
openkb add paper.pdf
openkb add ~/papers/                            # Add a whole directory
openkb add https://arxiv.org/pdf/2509.11420     # Or fetch from a URL

# 4. Ask a question
openkb query "What are the main findings?"

# 5. Or chat interactively
openkb chat

# (Optional) Turn the wiki into other outputs
openkb skill new my-expert "Reason like an expert on <your-topic>"   # a portable agent skill
openkb visualize                                                     # an interactive knowledge graph
openkb deck new my-deck "An intro deck on <your-topic>"              # slides — a single-file HTML deck
Set up your LLM

OpenKB supports multiple LLM providers (OpenAI, Claude, Gemini, etc.) via LiteLLM (pinned to a safe version).

Set your model during openkb init or in .openkb/config.yaml using the provider/model LiteLLM format (e.g. anthropic/claude-sonnet-4-6). OpenAI models can omit the prefix (e.g. gpt-5.4).

Create a .env file with your LLM API key:

LLM_API_KEY=your_llm_api_key

Subscription-based providers that authenticate via OAuth device flow (e.g. chatgpt/*, github_copilot/*) need no API key; OpenKB skips the missing-key warning for them.

Knowledge Workbench (Web UI)

OpenKB ships a bundled web UI, served by the REST API at /. Install the API extra and start the server — no configuration needed:

pip install "openkb[web]"
openkb-web                       # serves the API + Workbench at http://127.0.0.1:7566/

Open http://127.0.0.1:7566/ for the Workbench. Auth is off by default (local-first); set OPENKB_API_TOKEN to require a bearer token before exposing the server. See the full Web UI guide.

Working on the UI itself? Run the Vite dev server with cd frontend && npm install && npm run dev (it proxies /api to a running openkb-web), or npm run build to regenerate the bundled openkb/web/.

🧩 How OpenKB Works

Architecture

<div align="center"> <img src="assets/openkb-architecture.webp" alt="OpenKB Architecture: from raw documents (markitdown / PageIndex) through LLM wiki compilation to the wiki/ foundation, powering query/chat, the Skill Factory, and future generators" width="900" /> </div>

Short vs Long Document Handling
Short documentsLong documents (PDF ≥ 20 pages)
Convertmarkitdown → MarkdownPageIndex → tree index + summaries
ImagesExtracted inline (pymupdf)Extracted by PageIndex
LLM readsFull textDocument trees
Resultsummary + conceptssummary + concepts

Short documents are read in full by the LLM. Long PDFs are processed by PageIndex into a hierarchical tree index. The LLM reads the tree instead of the full text, enabling accurate and scalable retrieval for long documents.

Knowledge Compilation

When you add a document, the LLM:

  1. Generates a summary page

  2. Reads existing concept and entity pages

  3. Creates or updates concepts with cross-document synthesis

  4. Creates or updates entity pages (people, orgs, places, products)

  5. Updates the index and log

A single source might touch 10--15 wiki pages. Knowledge accumulates: each document enriches the existing wiki rather than sitting in isolation.

⚙️ Usage

OpenKB commands fall into two layers: the wiki foundation (compile + manage your knowledge) and generators (turn that wiki into useful output). Each links to a concrete walkthrough — a real artifact OpenKB generated from one sample paper (browse them all in examples/).

Layer 1: 🧱 Wiki Foundation — compile and maintain

CommandDescription
openkb initInitialize a new knowledge base (interactive)
<code>openkb add <file_or_dir_or_URL></code>Add files, directories, or URLs and compile to wiki (URL content type is auto-detected)
openkb listList indexed documents and concepts
openkb statusShow knowledge base stats
openkb watchWatch raw/ and auto-compile new files
openkb lintRun structural and knowledge health checks

<details> <summary><i>More wiki commands:</i></summary> <br>

CommandDescription
<code>openkb remove <doc></code>Remove a document and clean up its wiki pages, images, registry, and PageIndex state (--dry-run to preview, --keep-raw / --keep-empty to retain artifacts)
<code>openkb recompile [<doc>] [--all]</code>Re-run the compile pipeline on already-indexed docs without re-indexing. Regenerates summaries and rewrites concept pages; manual edits are overwritten (--dry-run to preview, --refresh-schema to also update wiki/AGENTS.md)
<code>openkb feedback ["msg"]</code>File feedback by opening a prefilled GitHub issue (--type bug/feature/question to tag it)

</details>

→ Example: the everyday loop walked through end to end — examples/commands/.

Layer 2: 💡 Generators — turn the wiki into output

A "generator" reads from the compiled wiki and produces something usable: an answer, a conversation, a skill folder. The wiki is the substrate; generators are the surfaces.

CommandOutputExample
<code>openkb query "question"</code>A grounded answer with citations (--save to persist to wiki/explorations/)query & save
<code>openkb chat</code>Interactive multi-turn session over the wiki (--resume, --list, --delete to manage sessions)chat
<code>openkb visualize</code>A self-contained interactive knowledge graph at output/visualize/graph.html — 3D, mind-map, and radial viewsvisualize
<code>openkb skill new <skill-name> "<intent>"</code>Distill a redistributable agent skill from your wiki (see Skill Factory below)skills
<code>openkb deck new <name> "<intent>"</code>Generate a single-file HTML slide deck (--skill picks a theme, --critique runs a quality pass)slides
(i) 💬 Query & Chat — ask the wiki

openkb query "..." answers a single question with a grounded, cited answer from your wiki. openkb chat is interactive, an ongoing multi-turn session over the same wiki (--resume, --list, --delete to manage sessions). → Walked through with real saved output in examples/commands/ (query) and examples/chat/ (chat).

Inside a chat, type / to access slash commands (Tab to complete).

<details> <summary><i>More slash commands:</i></summary> <br>

  • /help: list available commands

  • /status: show knowledge base status

  • /list: list all documents

  • /add <path>: add a document or directory without leaving the chat

  • /skill new <skill-name> "<intent>": compile a skill from this chat (see below)

  • /deck new <name> "<intent>": generate an HTML slide deck from the wiki

  • /critique <path>: run the HTML critic over an existing deck

  • /save [name]: export the transcript to wiki/explorations/

  • /clear: start a fresh session (the current one stays on disk)

  • /lint: run knowledge base lint

  • /exit: exit (Ctrl-D also works)

</details>

<a id="skill-factory"></a>

(ii) 🛠 Skill Factory — drop in a book; out comes a digital expert.

openkb skill new distills a portable agent skill from your wiki that Claude Code, Codex, and Gemini can install and load natively. Drop in a book's worth of papers; out comes a specialist other agents can call on. → A real generated skill, plus install / share / eval / rollback, is walked through in examples/skills/.

<details> <summary><i>More skill commands:</i></summary> <br>

CommandOutput
<code>openkb skill validate [name]</code>Validate compiled skills (auto-runs after skill new)
<code>openkb skill eval <name></code>Check the skill triggers on the right prompts
<code>openkb skill history <name></code> / <code>openkb skill rollback <name></code>Version history + rollback for skills

</details>

🔧 Configuration

Settings

OpenKB settings are initialized by openkb init and stored in .openkb/config.yaml:

model: gpt-5.4                   # LLM model (any LiteLLM-supported provider)
language: en                     # Wiki output language
pageindex_threshold: 20          # PDF pages threshold for PageIndex

The full settings reference — entity_types, OAuth providers (chatgpt/*, github_copilot/*), and LiteLLM tuning (timeouts for slow local runtimes like Ollama / LM Studio, drop_params, GitHub Copilot headers, install notes) — is in examples/configuration/.

PageIndex Setup

Long-document retrieval is a known challenge for LLMs. PageIndex solves this with vectorless, reasoning-based retrieval, by building a hierarchical tree index that lets LLMs reason over the index for context-aware retrieval.

PageIndex runs locally by default using the open-source version, with no external dependencies required.

Cloud Support (Optional):

For large or complex PDFs, PageIndex Cloud can be used to access additional capabilities, including:

  • OCR support for scanned PDFs (via hosted VLM models)

  • Faster structure generation

  • Scalable indexing for large documents

Set PAGEINDEX_API_KEY in your .env to enable cloud features:

PAGEINDEX_API_KEY=your_pageindex_api_key

→ Example: local vs. cloud indexing, and importing a cloud-indexed doc — examples/pageindex-cloud/.

AGENTS.md

The wiki/AGENTS.md file defines wiki structure and conventions. It's the LLM's instruction manual for maintaining the wiki. Customize it to change how your wiki is organized.

The LLM reads AGENTS.md from disk at runtime, so your edits take effect immediately.

🔌 Integrations

Using with Obsidian

The wiki is a directory of Markdown files with [[wikilinks]]. Obsidian renders it natively.

  1. Open wiki/ as an Obsidian vault

  2. Browse summaries, concepts, and explorations

  3. Use graph view to see knowledge connections

  4. Use Obsidian Web Clipper to add web articles to raw/

Using with Claude Code / Codex / Gemini CLI

OpenKB ships a SKILL.md so any agent can read your compiled wiki. No extra runtime, no MCP setup, just install the skill once.

<details> <summary><i>Claude Code:</i></summary> <br>

/plugin marketplace add VectifyAI/OpenKB
/plugin install openkb@vectify

</details>

<details> <summary><i>OpenAI Codex CLI:</i></summary> <br>

(no marketplace command yet; manual symlink)

git clone https://github.com/VectifyAI/OpenKB.git ~/openkb-src
mkdir -p ~/.agents/skills
ln -s ~/openkb-src/skills/openkb ~/.agents/skills/openkb

</details>

<details> <summary><i>Gemini CLI:</i></summary> <br>

gemini skills install https://github.com/VectifyAI/OpenKB.git --path skills/openkb --consent

</details>

The skill is read-only. It won't run openkb add, remove, or lint --fix without you asking. See skills/openkb/SKILL.md for the full instruction set.

REST API

OpenKB ships a FastAPI service for HTTP clients. Install with pip install -e ".[web]", then start with python -m openkb.api. The interactive API reference is at /docs (importable into Postman).

See the full REST API reference for endpoints, auth, and SSE streaming.

🧭 Learn More

Compared to Karpathy's Approach
Karpathy's workflowOpenKB
Short documentsLLM reads directlymarkitdown → LLM reads
Long documentsContext limits, context rotPageIndex tree index
Input sourcesWeb clipper → .mdPDF, Word, PPT, Excel, HTML, text, CSV, .md, URLs
Wiki compilationLLM agentLLM agent (same)
Entity extractionManualAutomatic (people, orgs, places, products)
Q&AQuery over wikiWiki + PageIndex retrieval
OutputWiki onlyWiki + Skill Factory + agent CLI integration
The Stack
  • PageIndex — Vectorless, reasoning-based document indexing and retrieval

  • markitdown — Universal file-to-markdown conversion

  • OpenAI Agents SDK — Agent framework (supports non-OpenAI models via LiteLLM)

  • LiteLLM — Multi-provider LLM gateway

  • Click — CLI framework

  • watchdog — Filesystem monitoring

Roadmap
  • [ ] Extend long document handling to non-PDF formats

  • [ ] Scale to large document collections with nested folder support

  • [ ] Hierarchical concept (topic) indexing for massive knowledge bases

  • [ ] Database-backed storage engine

  • [x] Web UI for browsing and managing wikis (Knowledge Workbench, served at /)

Contributing

Contributions are welcome! Submit a pull request or open an issue for bugs and feature requests. For larger changes, consider opening an issue first to discuss the approach.

License

Apache 2.0. See LICENSE.

🌐 Open-Source Ecosystem

Other open-source projects from the PageIndex ecosystem:

  • PageIndex: Vectorless, reasoning-based RAG framework for long documents

  • ChatIndex: Tree indexing and retrieval for long conversational histories and memory

  • ConDB: A KV-cache native context database for tree-based retrieval at scale

  • PageIndex MCP: MCP server for PageIndex

Support Us

If you find OpenKB useful, please give us a star 🌟 — and check out PageIndex too!

<div>

Image: Twitter&ensp; Image: LinkedIn&ensp; Image: Contact Us

</div>

ATTRIBUTION.md

Attribution

This folder is a copy of the Agent Brain "OpenKB", distributed by AutoGineer (https://autogineer.com/agent-brains).

The brain's own files are unmodified copies. AutoGineer is not affiliated with or endorsed by the author or the publisher.

Files added by AutoGineer

  • ATTRIBUTION.md: this file, written by AutoGineer

294 files · 288 not served here

Advantages

  • Knowledge compounds over time as the LLM synthesizes new documents into existing concept and entity pages. evidence: README.md
  • Handles long and complex documents accurately using hierarchical tree indexing instead of traditional vector search. evidence: README.md

Limitations

  • Manual edits to compiled wiki pages are overwritten when the recompile command is run. evidence: README.md
  • Requires specific dependency pinning to maintain stability and security against supply-chain risks. evidence: pyproject.toml

Security

Risk level: Low risk

This brain runs

Agent instructions that run or fetch something (17)

  • AGENTS.md: This repo is developed **agent-first**: humans steer, agents execute.
  • AGENTS.md: Install: `pip install -e ".[dev]"` (or `uv sync --extra dev` — plain `uv sync` skips the dev tools)
  • AGENTS.md: Run CLI: `openkb <command>` (entry point: `openkb.cli:cli`)
  • AGENTS.md: `state.py` — run/session state tracking.
  • skills/openkb-deck-editorial/SKILL.md: Vary `data-type` — at least 4 distinct types, no run of 3+ consecutive same type.
  • skills/openkb-deck-editorial/SKILL.md: Is there no run of 3+ consecutive slides with the same `data-type`?
  • skills/openkb-deck-editorial/SKILL.md: If any answer is no, revise and re-run this self-check.
  • skills/openkb-deck-neon/SKILL.md: if labels run long or there are many, use a VERTICAL stack of full-width rows, never a cramped horizontal graph.
  • skills/openkb-deck-neon/SKILL.md: Vary types — ≥4 distinct, no run of 3+ consecutive same type.
  • skills/openkb-deck-neon/SKILL.md: At least 4 distinct `data-type` values, no run of 3+ same?
  • skills/openkb-deck-neon/SKILL.md: If any answer is no, revise and re-run this self-check.
  • skills/openkb-html-critic/SKILL.md: If the deck uses `data-type` attributes, no run of 3+ consecutive same-type slides (visual monotony failure).
  • skills/openkb/SKILL.md: Run `openkb status` to discover the KB root and a summary in one call:
  • skills/openkb/SKILL.md: If `openkb status` says "No knowledge base found", tell the user to `cd` into their KB or run `openkb init` to create one — don't proceed.
  • skills/openkb/SKILL.md: If `jq` isn't available in your environment, fall back to a Python one-liner: `python3 -c "import json,sys;
  • skills/openkb/SKILL.md: If a user request would benefit from one of these, propose the exact command with what it does, and let the user run it.
  • skills/openkb/SKILL.md: Run it when you're ready."
  • Low risk: network-instructions (AGENTS.md:13)
  • Low risk: network-instructions (pyproject.toml:80)

Attribution and licence

Created by
PageIndex
Declared authors
  • Kylin (declared in pyproject.toml)
Publisher
PageIndex (Official PageIndex project)
Source
VectifyAI/OpenKB · commit ff54396
Licence
Apache License 2.0 (files served here)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by PageIndex.

Install from source

288 of its files are not served here, so there is no ZIP. VectifyAI/OpenKB at ff54396