Adaptive, file-based project knowledge for AI coding agents
Project description
agent-knowledge
Persistent, file-based project memory for AI coding agents.
One command gives any project a knowledge vault that agents read on startup, maintain during work, and carry across sessions -- no database, no server, just markdown files and a CLI.
Works with Claude Code, Cursor, and Codex out of the box.
Install
pip install agent-knowledge-cli
PyPI package name: agent-knowledge-cli. CLI command and all docs: agent-knowledge.
Quick Start
cd your-project
agent-knowledge init
That's it. Open the project in Claude Code or Cursor and the agent has persistent memory automatically -- no manual prompting, no config, no setup.
init does everything in one shot:
- creates an external knowledge vault at
~/agent-os/projects/<slug>/ - symlinks
./agent-knowledgeinto the repo as the local handle - installs project-local integration for both Claude Code and Cursor
- detects Codex and installs its bridge files if present
- bootstraps the memory tree and marks onboarding as
pending - imports repo history into
Evidence/and backfills lightweight history from git
How It Works
Knowledge lives outside the repo at ~/agent-os/projects/<slug>/ so it persists
across branches, tools, and clones. The symlink ./agent-knowledge gives every tool
a stable local handle.
Knowledge layers
| Folder | Role | Canonical? |
|---|---|---|
Memory/ |
Curated, durable facts -- source of truth | Yes |
History/ |
What happened over time -- lightweight diary | Yes (diary) |
Evidence/ |
Imported/extracted material, event stream | No |
Outputs/ |
Generated views, indexes, HTML export | No |
Sessions/ |
Ephemeral session state, prune aggressively | No |
Evidence is never auto-promoted into Memory. Outputs are never treated as truth. Only agents and humans deliberately write to Memory or History.
Project-local integration
The project carries everything it needs. Both Claude Code and Cursor get full integration installed automatically -- hooks, runtime contracts, and slash commands. No global config required.
Obsidian-ready
The knowledge vault at ~/agent-os/projects/<slug>/ is a valid Obsidian vault.
Open it directly for backlinks, graph view, and note navigation.
For a spatial canvas of the knowledge graph:
agent-knowledge export-canvas
# produces: agent-knowledge/Outputs/knowledge-export.canvas
The vault is designed to work well in Obsidian -- good markdown, YAML frontmatter, branch-note convention, internal links. But everything works without it too.
What gets installed
Claude Code (.claude/):
| File | Purpose |
|---|---|
settings.json |
Lifecycle hooks: sync on SessionStart, Stop, PreCompact |
CLAUDE.md |
Runtime contract: knowledge layers, session protocol, onboarding |
commands/memory-update.md |
/memory-update slash command |
commands/system-update.md |
/system-update slash command |
Cursor (.cursor/):
| File | Purpose |
|---|---|
rules/agent-knowledge.mdc |
Always-on rule: loads memory context on every session |
hooks.json |
Lifecycle hooks: sync on start, update on write, sync on stop/compact |
commands/memory-update.md |
/memory-update slash command |
commands/system-update.md |
/system-update slash command |
Codex (.codex/) -- installed when detected:
| File | Purpose |
|---|---|
AGENTS.md |
Agent contract with knowledge layer instructions |
Session lifecycle
Hooks fire automatically -- the agent syncs memory at the start of every session and captures state at the end, with no manual intervention:
| Event | Claude Code | Cursor | What runs |
|---|---|---|---|
| Session start | SessionStart | session-start | agent-knowledge sync |
| File saved | -- | post-write | agent-knowledge update |
| Task complete | Stop | stop | agent-knowledge sync |
| Context compaction | PreCompact | preCompact | agent-knowledge sync |
The runtime contract ensures the agent reads STATUS.md and Memory/MEMORY.md
at the start of every session, with no manual prompting required.
Slash commands
Inside any Claude Code or Cursor session:
/memory-update-- sync, review session work, write stable facts toMemory/, summarize/system-update-- refresh integration files to the latest framework version
These are project-local and work automatically because init installed them.
Integration health
agent-knowledge doctor
Reports whether all integration files (settings, hooks, rules, commands) are
installed and current for both Claude Code and Cursor. If anything is stale or
missing, doctor tells you exactly what to run.
Commands
| Command | What it does |
|---|---|
init |
Set up a project -- one command, no arguments needed |
sync |
Full sync: memory, history, git evidence, index |
doctor |
Validate setup, integration health, version staleness |
ship |
Validate + sync + commit + push |
search <query> |
Search the knowledge index (Memory-first) |
export-html |
Build a polished static site from the vault |
view |
Build site and open in browser |
clean-import <url> |
Import a URL as cleaned, non-canonical evidence |
refresh-system |
Refresh all integration files to the current framework version |
backfill-history |
Rebuild lightweight project history from git |
compact |
Prune stale captures and old session state |
All write commands support --dry-run and --json. Run agent-knowledge --help for the full list.
Static site export
Build a polished standalone site from your knowledge vault -- no Obsidian required:
agent-knowledge export-html # generate
agent-knowledge view # generate and open in browser
The generated site includes an overview page, branch tree navigation, note detail
view, evidence view, interactive graph view, and machine-readable knowledge.json
and graph.json. Opens via file:// with no server needed.
Memory/ notes are always primary. Evidence and Outputs items are clearly marked non-canonical.
Automatic capture
Every sync and update event is automatically recorded in Evidence/captures/
as a small structured YAML file. This gives a lightweight history of what
changed and when -- without a database or background service.
Captures are evidence, not memory. They accumulate quietly and can be pruned
with agent-knowledge compact.
Progressive retrieval
The knowledge index (Outputs/knowledge-index.json and .md) is regenerated
on every sync. Agents can:
- Load the index first (cheap, a few KB)
- Identify relevant branches from the shortlist
- Load only the full note content they actually need
Use agent-knowledge search <query> for a quick shortlist query from the
command line or a hook.
Clean web import
Import a web page as cleaned, non-canonical evidence:
agent-knowledge clean-import https://docs.example.com/api-reference
# produces: agent-knowledge/Evidence/imports/2025-01-15-api-reference.md
Strips navigation, ads, scripts, and boilerplate. Writes clean markdown with YAML frontmatter marking it as non-canonical.
Project history
init automatically backfills a lightweight history layer when run on an existing repo.
You can also run it explicitly:
agent-knowledge backfill-history
Creates History/events.ndjson (append-only event log), History/history.md
(human-readable summary), and History/timeline/ (sparse milestone notes).
History records what happened over time -- releases, integrations, sync events.
It is not a git replacement. Current truth lives in Memory/.
Keeping up to date
pip install -U agent-knowledge-cli
agent-knowledge refresh-system
refresh-system updates all integration files -- Claude settings/commands/contract,
Cursor hooks/rules/commands, AGENTS.md header, Codex config -- and version markers.
It never touches Memory/, Evidence/, Sessions/, or any curated knowledge.
doctor warns when the project integration is behind the installed version.
Custom knowledge home
export AGENT_KNOWLEDGE_HOME=~/my-knowledge
agent-knowledge init
Troubleshooting
agent-knowledge doctor # validate setup and report health
agent-knowledge doctor --json # machine-readable health check
Common issues:
./agent-knowledgemissing: runagent-knowledge init- Onboarding still pending: paste the init prompt into your agent
- Claude not picking up memory: check
.claude/settings.jsonexists -- runagent-knowledge refresh-system - Cursor hooks not firing: check
.cursor/hooks.jsonexists -- runagent-knowledge refresh-system - Stale index: run
agent-knowledge sync - Large notes: run
agent-knowledge compact - Wrong binary: another tool may install a Node.js
agent-knowledgethat shadows ours. Check withwhich -a agent-knowledge. Fix:export PATH="$(python3 -c 'import sysconfig; print(sysconfig.get_path("scripts"))'):$PATH"
Platform support
- macOS and Linux are fully supported.
- Windows is not currently supported (relies on
bashand POSIX shell scripts). - Python 3.9+ required.
Package naming
| What | Value |
|---|---|
| PyPI package | agent-knowledge-cli |
| CLI command | agent-knowledge |
| Python import | agent_knowledge |
Development
git clone <repo-url>
cd agent-knowledge
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
python -m pytest tests/ -q
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_knowledge_cli-0.2.5.tar.gz.
File metadata
- Download URL: agent_knowledge_cli-0.2.5.tar.gz
- Upload date:
- Size: 157.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c735239846a134f921b4ab8b6068b388507b52a221ee81fb55cffc5aad998154
|
|
| MD5 |
d0d4a9b26d594e92a58b53dbc9ca2d6f
|
|
| BLAKE2b-256 |
555b8a0b236f4bcd12d4d32fe6971010db01bca05c15676262d6700da32459a7
|
File details
Details for the file agent_knowledge_cli-0.2.5-py3-none-any.whl.
File metadata
- Download URL: agent_knowledge_cli-0.2.5-py3-none-any.whl
- Upload date:
- Size: 199.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc7beb1158ba2a2af63ce2cc8cc51e3f6cd01e569b490181a2c0defd768c0dbb
|
|
| MD5 |
db89061d0e75421d82e9e5d706735da4
|
|
| BLAKE2b-256 |
767d6329f2649de53e96f37581f4f8127741be3459261d92ba6b649bb42150c7
|