A Python REST + WebSocket + MCP cache server for AI agents, backed by SQLite
Project description
agentcache
A Python REST + WebSocket + MCP cache server for AI agents, backed by SQLite.
agentcache gives coding agents (Claude Code, Cursor, Cline, Kiro, Antigravity, …) a persistent, searchable memory of what happened in a project — observations, sessions, long-term memories, and a folder-scoped knowledge graph — with hybrid BM25 + vector search, WebSocket live updates, and a Model Context Protocol (MCP) stdio bridge.
- Server: Flask +
flask-sock(REST + WebSocket) on a single port - Storage: SQLite in WAL mode (zero external services)
- Search: BM25 + optional local embeddings (
sentence-transformers) or Hugging Face inference - MCP: stdio bridge so any MCP-compatible client can
observe/remember/searchnatively - CLI:
agentcache serve|worker|migrate|export|context|connect
Status: Beta (Development Status :: 4 - Beta). API is stable enough for daily use; internals may still shift before 1.0.
Install
pip install agentcache-core
The package installs as agentcache-core on PyPI but imports and runs as agentcache (import agentcache, agentcache serve). The plain agentcache name on PyPI belongs to an unrelated project.
With optional local embeddings (adds sentence-transformers, ~1 GB of model weights on first use):
pip install "agentcache-core[local-embeddings]"
Requires Python 3.10+.
Quickstart
Start the server:
agentcache serve --port 3111
Record an observation (any HTTP client works):
curl -X POST http://localhost:3111/agentcache/observe \
-H "Content-Type: application/json" \
-d '{
"folderPath": "/abs/path/to/project",
"agentId": "coder-1",
"text": "Refactored auth into a decorator; see routes/auth.py",
"type": "refactor"
}'
Search across a folder:
curl "http://localhost:3111/agentcache/folder/observations?folderPath=/abs/path/to/project&q=auth"
Health check:
curl http://localhost:3111/agentcache/health
Generate a live context file for your IDE:
cd /abs/path/to/project
agentcache context --watch # writes .agentcache_context.md and re-writes on change
Programmatic use
from agentcache import create_app, StateKV, remember
app = create_app() # Flask app, ready for WSGI or app.run()
kv = StateKV() # direct KV access to the SQLite store
remember(kv, {"title": "auth decorator", "content": "…", "agentId": "coder-1"})
Top-level exports: create_app, StateKV, KV, ObservationStore, ObservationEvents, SearchService, remember, folder_graph_build, health_check, run_connect.
Wire it into your agent
agentcache connect claude-code # or: cursor, cline, kiro, antigravity, codex, hermes, vscode
agentcache connect --all # detect and wire every supported client
This registers the MCP stdio bridge (agentcache.mcp_stdio) and, with --with-hooks, installs workspace hook blocks that call /agentcache/observe on file events. Re-running is safe — the CLI detects stale entries (wrong interpreter path, missing env keys, etc.) and repairs them, or prints a --force hint when the entry is already up to date.
See docs/mcp-setup.md for per-client config paths, manual wiring, and troubleshooting.
Auth
Set AGENTCACHE_SECRET to require a shared secret on write routes:
export AGENTCACHE_SECRET=your-long-random-string
agentcache serve
Clients send it via Authorization: Bearer <secret> or ?secret=<secret>. Unset = open (fine for localhost; do not expose an unauthenticated instance).
Deployment
Dockerfile and docker-compose.yml are included. For multi-worker WSGI (Gunicorn + workers), run the server without background threads and use a dedicated worker process:
agentcache serve --no-workers # web tier
agentcache worker --tasks=index,forget # sidecar
Details and the ongoing hardening plan live in docs/publishing_roadmap.md.
Compatibility notes
- Routes are dual-mounted at both
/agentcache/*and/agentmemory/*for backward compatibility with the previous package name. agentcache.legacyis a thin re-export shim retained for callers that imported from the pre-split module layout. It will be removed in 1.0 — migrate imports toagentcache.core.*when convenient. Seedocs/adr/for the split rationale.
Development
git clone https://github.com/Yashwant00CR7/agentcache
cd agentcache
pip install -e ".[dev,local-embeddings]"
pytest # test suite
ruff check . # lint
ruff format . # format
python -m build # build sdist + wheel into dist/
twine check dist/* # validate metadata before upload
Links
- Source: https://github.com/Yashwant00CR7/agentcache
- Issues: https://github.com/Yashwant00CR7/agentcache/issues
- License: MIT — see LICENSE
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 agentcache_core-0.9.11.tar.gz.
File metadata
- Download URL: agentcache_core-0.9.11.tar.gz
- Upload date:
- Size: 150.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b219524dbe7838e3aed7ee2985326a173c8fdf8cf46c995b3f548c2c2e09e47
|
|
| MD5 |
0ebc921b42ca37b2e95d80de58110d35
|
|
| BLAKE2b-256 |
313aaf19a0cdcd5dd180b7e44ed91a8acc0b51567bcbf2f216d4c75ca443abf6
|
Provenance
The following attestation bundles were made for agentcache_core-0.9.11.tar.gz:
Publisher:
automation.yml on Yashwant00CR7/agentcache
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentcache_core-0.9.11.tar.gz -
Subject digest:
8b219524dbe7838e3aed7ee2985326a173c8fdf8cf46c995b3f548c2c2e09e47 - Sigstore transparency entry: 2256370093
- Sigstore integration time:
-
Permalink:
Yashwant00CR7/agentcache@d22f1ddac4c50e371b243b5622897c19e6b6746c -
Branch / Tag:
refs/tags/v0.9.11 - Owner: https://github.com/Yashwant00CR7
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
automation.yml@d22f1ddac4c50e371b243b5622897c19e6b6746c -
Trigger Event:
push
-
Statement type:
File details
Details for the file agentcache_core-0.9.11-py3-none-any.whl.
File metadata
- Download URL: agentcache_core-0.9.11-py3-none-any.whl
- Upload date:
- Size: 156.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6df39a921adb8973778a697742c89f8f97c8f17487cf9b64b227735afe92a90
|
|
| MD5 |
8e2a60c51dfabdd2ce451d570f584efb
|
|
| BLAKE2b-256 |
178100ab3e0a950a20f4e8ca85b22152ca11aa20b9a721d2f13e1b858b1cf605
|
Provenance
The following attestation bundles were made for agentcache_core-0.9.11-py3-none-any.whl:
Publisher:
automation.yml on Yashwant00CR7/agentcache
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentcache_core-0.9.11-py3-none-any.whl -
Subject digest:
c6df39a921adb8973778a697742c89f8f97c8f17487cf9b64b227735afe92a90 - Sigstore transparency entry: 2256370101
- Sigstore integration time:
-
Permalink:
Yashwant00CR7/agentcache@d22f1ddac4c50e371b243b5622897c19e6b6746c -
Branch / Tag:
refs/tags/v0.9.11 - Owner: https://github.com/Yashwant00CR7
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
automation.yml@d22f1ddac4c50e371b243b5622897c19e6b6746c -
Trigger Event:
push
-
Statement type: