ai-memory — Python SDK
Typed Python client for the ai-memory
HTTP API. Wraps the daemon's /api/v1/ surface with sync and async clients,
Pydantic v2 models that mirror the Rust structs, and HMAC-SHA256 webhook
verification.
Status: 0.6.0-alpha.0 — scaffolding, unpublished. API may change before
GA.
Install
# Not yet published; install from a local checkout:
pip install -e ./sdk/python
Requires Python 3.10+.
Quickstart
from ai_memory import AiMemoryClient, Tier
with AiMemoryClient(base_url="http://localhost:9077") as client:
created = client.store(
title="BIND9 build notes",
content="Use --with-openssl=/opt/openssl, disable DoH for the lab.",
tier=Tier.LONG,
tags=["dns", "bind9"],
)
print(created["id"])
hits = client.recall(context="how do I build BIND9?")
for memory in hits.memories:
print(memory.title, memory.confidence)
Async
import asyncio
from ai_memory import AsyncAiMemoryClient
async def main() -> None:
async with AsyncAiMemoryClient(base_url="http://localhost:9077") as client:
resp = await client.recall(context="hello")
for memory in resp.memories:
print(memory.title)
asyncio.run(main())
Authentication
API key
AiMemoryClient(base_url="https://memory.example.com", api_key="sk-...")
The key is sent as the X-API-Key header on every request. The server
exempts /api/v1/health from auth.
mTLS
AiMemoryClient(
base_url="https://memory.example.com",
verify="/etc/ssl/certs/server-ca.pem",
cert=("/etc/ssl/client/client.pem", "/etc/ssl/client/client.key"),
)
Agent identity (NHI)
Set agent_id to stamp the X-Agent-Id header on every request. The
server writes metadata.agent_id accordingly (see CLAUDE.md §Agent
Identity).
AiMemoryClient(base_url="http://localhost:9077", agent_id="ai:claude-opus-4.7@host")
All methods
| Method | Endpoint | Notes |
|---|---|---|
health() |
GET /api/v1/health |
Exempt from auth. |
metrics() |
GET /api/v1/metrics |
Prometheus text format. |
store(...) |
POST /api/v1/memories |
Upsert on (title, namespace). |
bulk_store([...]) |
POST /api/v1/memories/bulk |
Up to 1000 per call. |
get(id) |
GET /api/v1/memories/{id} |
Returns Memory. |
update(id, UpdateMemory) |
PUT /api/v1/memories/{id} |
Partial update. |
delete(id) |
DELETE /api/v1/memories/{id} |
|
promote(id) |
POST /api/v1/memories/{id}/promote |
Tier -> long. |
list(...) |
GET /api/v1/memories |
Filters: namespace, tier, tags, agent_id. |
search(q, ...) |
GET /api/v1/search |
FTS AND search. |
recall(context, ...) |
POST /api/v1/recall |
Hybrid semantic + FTS. |
forget(...) |
POST /api/v1/forget |
Bulk delete by pattern. |
link(a, b, relation) |
POST /api/v1/links |
related_to, supersedes, contradicts, derived_from. |
get_links(id) |
GET /api/v1/links/{id} |
|
stats() |
GET /api/v1/stats |
|
namespaces() |
GET /api/v1/namespaces |
|
gc() |
POST /api/v1/gc |
|
export() / import_() |
GET / `POST /api/v1/export |
import` |
subscribe(req) / unsubscribe(id) / subscriptions() |
/api/v1/subscriptions |
Webhook mgmt. |
notify(req) / inbox(...) |
/api/v1/notify, /api/v1/inbox |
Agent-to-agent messaging. |
grant(id, agent) / revoke(id, agent) |
`/api/v1/memories/{id}/grant | revoke` |
cluster(req) |
POST /api/v1/cluster |
Peer management. |
agents() / register_agent(...) |
/api/v1/agents |
NHI registry. |
Webhook verification
from ai_memory import verify_webhook_signature
def handle(request) -> None:
sig = request.headers["X-AI-Memory-Signature"]
if not verify_webhook_signature(request.body, sig, secret="..."):
raise PermissionError("bad signature")
...
body must be the raw bytes as received — do not re-encode a parsed JSON
payload; whitespace differences will break the HMAC.
Errors
All SDK errors derive from AiMemoryError:
| Exception | HTTP |
|---|---|
ValidationError |
400 |
AuthError |
401 |
ForbiddenError |
403 |
NotFoundError |
404 |
ConflictError |
409 |
RateLimitError |
429 |
ServerError |
5xx |
TransportError |
network failure |
License
Apache-2.0, see LICENSE.
Release files for ai-memory-mcp 0.10.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ai_memory_mcp-0.10.0.tar.gz | 21.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ai_memory_mcp-0.10.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.9 kB
Release files / ai_memory_mcp-0.10.0.tar.gz
| Download URL | ai_memory_mcp-0.10.0.tar.gz |
|---|---|
| Size | 21.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5614f95c20271537681de18175c940c925cbc514bd2a6a7d592c1761b741ac05
|
|
BLAKE2b-256 checksum How to use checksums |
2867cbdb8e812f370450f0e66c235b6b733301ace88b7df752e96d9c8b84e190
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 12, 2026.
Transparency logRelease files / ai_memory_mcp-0.10.0-py3-none-any.whl
| Download URL | ai_memory_mcp-0.10.0-py3-none-any.whl |
|---|---|
| Size | 21.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8766cc6d94836d767e76b7820737385e52089bd9b71b25a3710e7b5f05e7b94d
|
|
BLAKE2b-256 checksum How to use checksums |
5117edaa9f259075c255e7ef7e285532ebb80ad649f29361adabb07af40efb75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 12, 2026.
Transparency log