keep-skill

raw JSON →
0.143.3 verified Fri May 01 auth: no python

Reflective memory library for storing and searching documents by meaning using vector embeddings and tag-based metadata. Current version 0.143.3, requires Python >=3.11, <3.14. Active development with frequent releases (multiple per month).

pip install keep-skill
error ModuleNotFoundError: No module named 'keep'
cause Keep package not installed or installed under a different name (keep-skill).
fix
Run 'pip install keep-skill' and use 'from keep import Keep'.
error ConnectionError: Could not connect to daemon at http://localhost:8000
cause The keep daemon is not running.
fix
Start the daemon with 'keep daemon' in a terminal before running client code.
error AttributeError: module 'keep' has no attribute 'Keep'
cause Using 'import keep' instead of 'from keep import Keep'.
fix
Use 'from keep import Keep' or 'import keep; client = keep.Keep()' (but the former is preferred).
breaking In v0.140.0 the 'type' tag was repurposed for entity-type classification. Old 'type' values (learning, breakdown, etc.) are migrated to new 'kind' tag automatically. If your code relies on reading the 'type' tag, update to use 'kind' instead.
fix Replace accesses to tags['type'] with tags.get('kind', tags.get('type')).
gotcha The daemon must be running separately (e.g., 'keep daemon') before using the client. The client does not start the daemon automatically.
fix Start the daemon in a separate terminal: keep daemon
gotcha SQLite SELECTs used to be blocked by write locks until v0.143.2. If you see performance issues on concurrent reads with writes, upgrade to >=0.143.2.
fix Upgrade to version 0.143.2 or later: pip install --upgrade keep-skill
deprecated The 'requests' HTTP library was replaced by 'httpx' in v0.142.0. Custom HTTP configs using requests internals will break.
fix Use httpx settings or rely on the default Keep client configuration.

Create a Keep client, add a document with tags, and search by semantic similarity.

import os
from keep import Keep, Document

client = Keep(daemon_url=os.environ.get('KEEP_DAEMON_URL', 'http://localhost:8000'))

doc = Document(content="Recursive summarization improves LLM reasoning.", tags={"topic": "prompt-engineering"})
uid = client.add(doc)
print(f"Added document {uid}")

# Search by meaning
results = client.search("LLM reasoning techniques")
for r in results:
    print(r.content, r.score)