keep
An agent-skill: memory that pays attention.
It includes skill instructions for reflective practice, and a powerful semantic memory system with command-line and MCP interfaces. Fully local, or use API keys for model providers, or cloud-hosted for multi-agent use.
uv tool install keep-skill # or: pip install keep-skill
export OPENAI_API_KEY=... # Or GEMINI_API_KEY (both do embeddings + summarization)
# Index content (store auto-initializes on first use)
keep put https://inguz.substack.com/p/keep -t topic=practice
keep put "Rate limit is 100 req/min" -t topic=api
# Index a codebase — recursive, with daemon-driven watch for changes
keep put ./my-project/ -r --watch
# Search by meaning
keep find "what's the rate limit?"
# Track what you're working on
keep now "Debugging auth flow"
# Instructions for reflection
keep prompt reflect
What It Does
Store anything — notes, files, URLs — and keep summarizes, embeds, and tags each note. You search by meaning, by keyword, and by graph traversal. Content goes in as text, PDF, HTML, Office documents, audio, or images; what comes back is a summary with tags and semantic neighbors. Audio and image files auto-extract metadata tags (artist, album, camera, date, etc.).
What makes this more than a vector store: tags become edges. Define a tag like author or git_commit and keep creates bidirectional links — a user-defined graph model where every tag can be a navigable relationship. When you retrieve any note, keep follows these edges and fires standing queries — surfacing open commitments, past learnings, referenced files, commit history. The right things appear at the right time, without manual graph construction.
- Summarize, embed, tag — URLs, files, and text are summarized and indexed on ingest
- Contextual feedback — Open commitments and past learnings surface automatically
- Search — Semantic similarity, BM25 full-text, and ranked graph traversal; scope to a folder or project
- Tag organization — Speech acts, status, project, topic, type — structured and queryable
- Deep search — Follow edges and tags from results to discover related notes across the graph
- Edge tags — Turn tags into navigable relationships with automatic inverse links
- Git changelog — Commits indexed as searchable notes with edges to touched files
- Parts —
analyze decomposes documents into searchable sections, each with its own embedding and tags
- Strings — Every note is a string of versions; reorganize history by meaning with
keep move
- Watches — Daemon-driven directory and file monitoring; re-indexes on change
- Works offline — Local models (MLX, Ollama), or API providers (Voyage, OpenAI, Gemini, Anthropic, Mistral)
Backed by ChromaDB for vectors, SQLite for metadata and versions.
keepnotes.ai — Hosted service. No local setup, no API keys to manage. Same SDK, managed infrastructure.
The Practice
keep is designed as a skill for AI agents — a practice, not just a tool. The skill instructions teach agents to reflect before, during, and after action: check intentions, recognize commitments, capture learnings, notice breakdowns. keep prompt reflect guides a structured reflection (details); keep now tracks current intentions and surfaces what's relevant.
This works because the tool and the skill reinforce each other. The tool stores and retrieves; the skill says when and why. An agent that uses both develops skillful action across sessions — not just recall, but looking before acting, and a deep review of outcomes afterwards.
Why build memory for AI agents? What does "reflective practice" mean here? Read our blog for the back-story →
Integration
The skill instructions and hooks install into your agent's configuration automatically on first use. The CLI alone is enough to start; the hooks make it automatic.
| Tool | Integration |
|---|
| OpenClaw | Context engine plugin — full memory assembly, session archival, reflection triggers |
| Claude Desktop | keep config mcpb (details) |
| Claude Code | Plugin: /plugin install keep@keepnotes-ai |
| VS Code Copilot | MCP: code --add-mcp '{"name":"keep","command":"keep","args":["mcp"]}' |
| Kiro | MCP + practice prompt: kiro-cli mcp add --name keep --scope global -- keep mcp |
| OpenAI Codex | MCP: codex mcp add keep -- keep mcp |
| LangChain | LangGraph BaseStore, retriever, tools, and middleware |
| Any MCP client | Stdio server with 3 tools (keep_flow, keep_prompt, keep_help) |