Skip to main content

Reflective memory - remember and search documents by meaning

Project description

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
  • Partsanalyze 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)

After install, just tell your agent: Please read all the keep_help documentation, and then use keep_prompt(name="reflect") to save some notes about what you learn.


Installation

Python 3.11–3.13 required. Use uv (recommended) or pip:

uv tool install keep-skill

Hosted (simplest — no local setup needed):

export KEEPNOTES_API_KEY=...   # Sign up at https://keepnotes.ai

Self-hosted with API providers:

export OPENAI_API_KEY=...      # Simplest (handles both embeddings + summarization)
# Or: GEMINI_API_KEY=...       # Also does both
# Or: VOYAGE_API_KEY=... and ANTHROPIC_API_KEY=...  # Separate services

Local (offline, no API keys): If Ollama is running, keep auto-detects it. Or on macOS Apple Silicon: uv tool install 'keep-skill[local]'

LangChain/LangGraph integration: pip install keep-skill[langchain] or pip install langchain-keep

See docs/QUICKSTART.md for all provider options.


Quick Start

# Index URLs, files, and notes (store auto-initializes on first use)
keep put https://example.com/api-docs -t topic=api
keep put "Token refresh needs clock sync" -t topic=auth

# Index a codebase — recursive, with auto-watch for changes
keep put ./my-project/ -r --watch
# git: 2 repo(s) queued for changelog ingest

# Search
keep find "authentication flow" --limit 5
keep find "auth" --deep                # Follow edges to discover related notes
keep find "auth" --scope 'file:///Users/me/project/*'  # Scoped to a folder

# Retrieve
keep get file:///path/to/doc.md
keep get ID --history                  # All versions
keep get ID --parts                    # Analyzed sections

# Tags
keep list --tag project=myapp          # Find by tag
keep list 'git://github.com/org/repo@*'  # All git tags/releases

# Current intentions
keep now                               # Show what you're working on
keep now "Fixing login bug"            # Update intentions

Python API

from keep import Keeper

kp = Keeper()

# Index
kp.put(uri="file:///path/to/doc.md", tags={"project": "myapp"})
kp.put("Rate limit is 100 req/min", tags={"topic": "api"})

# Search
results = kp.find("rate limit", limit=5)
for r in results:
    print(f"[{r.score:.2f}] {r.summary}")

# Version history
prev = kp.get_version("doc:1", offset=1)
versions = kp.list_versions("doc:1")

See docs/QUICKSTART.md for configuration and more examples.


Documentation

Full docs at docs.keepnotes.ai — or browse locally:


License

MIT


Contributing

Published on PyPI as keep-skill.

Issues and PRs welcome:

  • Provider implementations
  • Performance improvements
  • Documentation clarity

See CONTRIBUTING.md for guidelines.

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

keep_skill-0.129.3.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

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

keep_skill-0.129.3-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file keep_skill-0.129.3.tar.gz.

File metadata

  • Download URL: keep_skill-0.129.3.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for keep_skill-0.129.3.tar.gz
Algorithm Hash digest
SHA256 1a6d7b79ceed3402fb57c4fa7aa97d92de1fe059d572b7ad9d97dc95d97a7ebc
MD5 e9130aa806b85f60947e5b0ff18a8593
BLAKE2b-256 d97bdbecf9614bfa67e8b339091f44b712b1434e9f1732eb3393c22e6f5521bd

See more details on using hashes here.

File details

Details for the file keep_skill-0.129.3-py3-none-any.whl.

File metadata

  • Download URL: keep_skill-0.129.3-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for keep_skill-0.129.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7cddc93ff9814e4331d9f15e01301954baf2e65dec168eadc8e8cff763ba7ed6
MD5 26beaa8f15bb640823cdd96e734fc56b
BLAKE2b-256 928c1b6aab49039857b94ae296d4cb06eb9a56ea6fff2a8b233b8302409025c4

See more details on using hashes here.

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