The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Kbdb listing page.
A file-based knowledge base with ranked keyword and semantic (hybrid) search -- learn your documents, then recall the relevant knowledge. No external server. Runs as a CLI and MCP server.
📖 Documentation · MCP Setup · CLI Reference
GitLab | NPM | JSR | License: AGPL-3.0
Runs on Node.js 20+ or Deno 2.6+. No database server, no cloud account -- just files on disk.
kbdb gives AI agents a persistent, searchable second brain. Point it at your Markdown docs and it indexes them into a file-based knowledge base -- then agents (and you) recall the most relevant knowledge by ranked keyword and semantic search, not exact-key lookup. It is a living store: agents learn new facts, update them, and recall them across sessions.
No external server to install, no cloud account -- just files on disk. It runs anywhere Node.js or Deno runs, and works as an MCP server, so agents like Claude can plug it in as a memory tool.
How search works: kbdb uses keyword search by default -- synonyms are expanded, terms are ranked by relevance, and headings carry 2× weight in scoring. When an exact query finds nothing, kbdb automatically loosens the match so you still get the best available results.
Want smarter results? Use --algo hybrid to blend
keyword matching with similarity search -- finding
results even when different words describe the same
concept. The default TF-IDF embedding provider
works offline with zero setup. Swap it for a
third-party provider (local ONNX model or remote
API) in worker.toml when you need richer
embeddings.
Knowledge stays fresh: Re-learn a file and kbdb
replaces the old version automatically.
Near-duplicate detection warns you when you are
learning something you already have -- by embedding
similarity, so it catches the same fact reworded, not
just the same bytes. kbdb contradictions reports
sections that cover the same ground so you can read
them together. Integrity checks verify checksums,
orphans and references. Confidence scores help agents
tell strong matches from weak ones.
One of these (pick whichever you already have):
deno install. Older Deno fails with a
misleading Module not found naming a .wasm
file that is present.)That's it. No database server. No extra tools.
Using Node.js:
CLI build hosted on NPM.
Using Deno:
CLI build hosted on JSR.
See the CLI Installation Guide for prerequisites and verification steps.
1. Create a knowledge base
This creates a .kbdb folder that holds all your
data.
2. Feed it your docs
Point it at a folder of Markdown files. kbdb reads
them, breaks them into sections, and builds a
search index. Add --tags design,v2 to tag
sections for scoping, --replace to update
existing sections from the same source, or
--level 2 to set the hierarchical depth
(1 = broadest, 6 = narrowest). When learning a
directory, level is auto-detected from folder
depth.
3. Search
Results are ranked by relevance with snippets
showing where your terms matched. Output defaults
to --format rec (recfile: one field: value per
line) for easy grepping. Other formats: json
(machine-readable), text (numbered list), and
mcp (JSON-RPC 2.0 envelope). Use --offset to
page through large result sets.
To try hybrid search (keyword + AI similarity):
Tip:
--dbis optional for the CLI. kbdb walks up from your working directory to the nearest.kbdbfolder, so commands just work anywhere inside a project. Point at a specific base with--db <dir>(the parent of.kbdb), or setKBDB_DB_DIR. Only themcpserver requires an explicit--db-- it never searches the working directory.
Search across bases: enrich results with
read-only knowledge from other databases using
--other-db <dir> (repeatable), or add --cascade
to also pull from .kbdb folders in parent
directories:
Every result carries a source_db field -- the
database root it came from -- which you can paste
straight back into --db or --other-db.
Scripting: Add
--format jsonto get structured JSON output for parsing. Use--non-interactiveor setKBDB_NON_INTERACTIVE=1to suppress prompts in CI pipelines.
4. Recall context
Start with a search result's kbid and expand context progressively: depth 0 gives the section content, depth 1 adds parent documents and back-references, depth 2 adds siblings and forward references, depth 3 includes full text of referenced sections.
Build, search, and maintain your knowledge store.
kbdb history walks the chain from either
end, and an old kb-id still resolves--max-tokens budget allowskbdb eval scores Recall@k, MRR and
nDCG@k against your own dataset, and exits
non-zero when a change makes ranking worsekbdb neighbourhood says what
relates to a section and how: eight typed edges,
seven of them recorded facts and one inferredkbdb consolidate proposes groups
of sections that could become one. It proposes only;
you write the merge and apply it yourselfSee the Knowledge Base Guide for the full walkthrough, including export and backup.
Integrate kbdb with AI agents and custom tools.
MCP quick-start (Claude CLI):
See the MCP Installation Guide for Claude Code, VS Code, and Claude Desktop config files, plus troubleshooting.
sampling capability, and Claude Code does not
advertise it, so auto-capture is inert there.
Every other feature in this list is unaffected --
see Host Support--allow-all..) in export/importWhat the server tells an agent. The initialize
response carries an instructions string -- the one
channel every compliant MCP host receives without any
setup. kbdb spends it on capture policy: search before
answering, treat an unanswered verdict as a gap to
investigate rather than guess at, store decisions and
corrections that cost real effort to find, and do not
store what the code already says. The same sentences
are quoted in the learn, revise and search tool
descriptions rather than paraphrased, so there is one
source for all of them.
See the Agent Tooling Guide for MCP setup, skills, agents, and the library API, and Capture Policy for the six clauses in full and why they are written once.
Use kbdb programmatically in your Node.js or Deno project:
Pass contextPath (the .kbdb directory itself)
or dbPath (the parent directory -- kbdb discovers
.kbdb inside it).
See the Library API Reference for the full API.
Two Dockerfiles, and they are not interchangeable.
Dockerfile at the repository root builds the MCP
server -- that is the one MCP directories build, and
the one to use if you want kbdb in a container. See
Install MCP Server
for the host configuration and why it needs a named
volume rather than a bind mount.
Dockerfile.tooling builds the development
toolchain (Node.js and Deno), which every make
target uses through docker-compose.yaml:
Run make benchmark to measure search and rebuild
latency at scale -- results are written to
docs/benchmark/benchmark.md
automatically.
See the Makefile for all available build targets.
npm test and npm run lintinitializeStorage, indexing and ranking come from
@dikolab/vdb,
kbdb's sibling project by the same author. Its
documentation covers the retrieval side in depth:
kbdb is free, AGPL-licensed software. If it earns a place in your workflow, you can support ongoing development via PayPal.
This project is dual-licensed:
AGPL-3.0-only)Versions <= 0.5.0 remain under the ISC license.
See LICENSING.md for details and contact information.