Skip to main content

CLI-first personal knowledge base for AI agents — structured, navigable, zero extra cost

Project description

kvault

Tell your AI agent to build you a knowledge base. That's it.

pip install knowledgevault

kvault gives your coding agent persistent, structured memory. It runs as a CLI tool that any agent can call via shell — Claude Code, OpenAI Codex, Cursor, or any tool that can execute commands. No extra API keys. No extra cost.

Your agent creates entities (people, projects, notes), navigates the hierarchy via parent summaries, and keeps everything in sync — all through simple CLI commands.

Who is this for?

Developers using Claude Code, OpenAI Codex, Cursor, VS Code + Copilot, or any AI coding tool who want their agent to remember things between sessions — contacts, projects, meeting notes, research — in a structured, navigable format.

What makes it different?

kvault Anthropic memory server Notion AI / Mem.ai obsidian-claude-pkm
Structure Hierarchical entities with navigable tree Flat JSON Rich docs, flat search Obsidian vault
Agent-native CLI commands, works in any subprocess 4 MCP tools, basic Chat sidebar Template, not runtime
Cost $0 (uses existing subscription) $0 $12-20/mo extra $0
Navigation Parent summaries at every level None AI-generated Manual
Search Agent uses its own search tools (grep, find, etc.) Built-in Built-in Manual

Quickstart (30 seconds)

1. Install

pip install knowledgevault

2. Initialize a knowledge base

kvault init ./my_kb --name "Your Name"

3. Tell your agent

"Use kvault CLI commands to manage my knowledge base at ./my_kb"

Your agent reads the generated AGENTS.md for workflow instructions and starts working.

Tool-specific tips:

Tool Setup
Claude Code Works automatically — reads AGENTS.md as project instructions
OpenAI Codex CLI Tell it: "Read AGENTS.md for the kvault workflow, then use shell commands to manage ./my_kb"
Gemini CLI Symlink AGENTS.mdGEMINI.md, or paste the workflow rules into your system prompt
Cursor / Copilot Add AGENTS.md contents to your .cursorrules or workspace instructions

Try it: import your ChatGPT history

The best way to see kvault in action is to point it at data you already have. ChatGPT lets you export your entire conversation history — years of questions, people mentioned, projects discussed, decisions made — and your agent can turn it into a structured, navigable knowledge base in minutes.

1. Export your ChatGPT data

Go to ChatGPT → Settings → Data controls → Export data. You'll get an email with a zip file containing conversations.json.

2. Unzip it into your KB

unzip chatgpt-export.zip -d my_kb/sources/chatgpt

3. Tell your agent to process it

Read through my ChatGPT export in sources/chatgpt/conversations.json.
Extract the people, projects, and ideas I've discussed most frequently.
Create entities for each one in the knowledge base.

Your agent will use kvault CLI commands to create structured entries with frontmatter and propagate summaries.

The 2-call write workflow

# Call 1: Write entity (stdin = frontmatter + markdown body)
kvault write people/contacts/acme --create --reasoning "New customer" --json <<'EOF'
---
source: meeting_2026-02-25
aliases: [ACME Corp]
---
# ACME Corp
Key customer acquired at trade show...
EOF
# → {"success": true, "ancestors": [{path, current_content, has_meta}, ...]}

# Call 2: Agent reads ancestors, composes updated summaries
kvault update-summaries --json <<'EOF'
[
  {"path": "people/contacts", "content": "# Contacts\n...updated..."},
  {"path": "people", "content": "# People\n...updated..."}
]
EOF
# → {"success": true, "updated": ["people/contacts", "people"], "count": 2}

What an entity looks like

Each entity is a directory with a single _summary.md file containing YAML frontmatter:

---
created: 2026-02-06
updated: 2026-02-06
source: manual
aliases: [Sarah Chen, sarah@anthropic.com]
email: sarah@anthropic.com
---
# Sarah Chen

Research scientist at Anthropic working on causal discovery.

Required frontmatter: source, aliases (kvault sets created/updated automatically)

What a knowledge base looks like

my_kb/
├── _summary.md                          # Root: executive overview
├── AGENTS.md                            # Agent workflow instructions
├── people/
│   ├── _summary.md                      # "12 contacts across 3 categories"
│   ├── family/
│   │   └── _summary.md
│   ├── friends/
│   │   ├── _summary.md
│   │   └── alex_rivera/
│   │       └── _summary.md
│   └── contacts/
│       ├── _summary.md
│       └── sarah_chen/
│           └── _summary.md
├── projects/
│   ├── _summary.md
│   └── cje_paper/
│       └── _summary.md
├── journal/
│   └── 2026-02/
│       └── log.md
└── .kvault/
    └── logs.db                          # Observability

CLI commands

Category Commands
Entity kvault read, kvault write, kvault list, kvault delete, kvault move
Summary kvault read-summary, kvault write-summary, kvault update-summaries, kvault ancestors
Journal kvault journal
Status kvault status, kvault tree
Validation kvault validate, kvault check
Init kvault init

All commands support --json for machine-readable output. --kb-root overrides auto-detection.

Optional root pinning (multi-tenant hardening)

For shared runtimes, pin allowed roots:

export KVAULT_ALLOWED_ROOTS="/Users/mossbot/personal_kb"

Python API

from pathlib import Path
from kvault.core import operations as ops

kg_root = Path("my_kb")

# Read/write entities
entity = ops.read_entity(kg_root, "people/contacts/sarah_chen")
result = ops.write_entity(kg_root, "people/contacts/new_person", "# Content", create=True)

# Scan and search
from kvault import scan_entities, EntityResearcher
entities = scan_entities(kg_root)
researcher = EntityResearcher(kg_root)
action, target, confidence = researcher.suggest_action("Sarah Chen")

Integrity check

Run kvault check to catch stale summaries:

kvault check --kb-root /absolute/path/to/my_kb

If your tool supports pre-prompt hooks, you can automate this. For example, in Claude Code's .claude/settings.json:

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "type": "command",
        "command": "kvault check --kb-root /absolute/path/to/my_kb"
      }
    ]
  }
}

Development

pip install -e ".[dev]"
pytest
ruff check . && black . && mypy .

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

knowledgevault-0.7.1.tar.gz (49.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

knowledgevault-0.7.1-py3-none-any.whl (42.7 kB view details)

Uploaded Python 3

File details

Details for the file knowledgevault-0.7.1.tar.gz.

File metadata

  • Download URL: knowledgevault-0.7.1.tar.gz
  • Upload date:
  • Size: 49.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for knowledgevault-0.7.1.tar.gz
Algorithm Hash digest
SHA256 4c9e7455fa6f12671bdb8d771ececb0cffbb2cfede5e6afeaaa49b395e582eeb
MD5 73bdb78a76cfcb989d3aaa802ea87bc6
BLAKE2b-256 8adb7ca257dfbf2bbae3890c8db9c7226b13729719602aed5e2948b8cb677fe8

See more details on using hashes here.

Provenance

The following attestation bundles were made for knowledgevault-0.7.1.tar.gz:

Publisher: publish.yml on cimo-labs/kvault

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file knowledgevault-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: knowledgevault-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 42.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for knowledgevault-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2e91b3e8dc5c4c65d9629cf060f66cfac810e206378c0d9785b5858c81747c9f
MD5 687939ceafeb286e470cb3ac340f43bb
BLAKE2b-256 a55c02c8e2451cc9637a9774bb98a3480154c7e8ead56dd5409f9a94b7d264f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for knowledgevault-0.7.1-py3-none-any.whl:

Publisher: publish.yml on cimo-labs/kvault

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page