agentmemory registers its core operations as iii functions (mem::remember,
mem::observe, mem::context, mem::smart-search, mem::forget). Any
language with an iii SDK can call them directly over the WebSocket transport
on ws://localhost:49134 — no separate REST client needed.
This example uses the official Python SDK.
pip install iii-sdkStart the agentmemory daemon (defaults to ws://localhost:49134, REST on
:3111):
npx -y @agentmemory/agentmemoryThen from Python:
from iii import register_worker
iii = register_worker("ws://localhost:49134")
iii.connect()
iii.trigger({
"function_id": "mem::remember",
"payload": {
"project": "demo",
"title": "auth-stack",
"content": "Service uses HMAC bearer tokens; refresh every 24h.",
"concepts": ["auth", "hmac", "refresh"],
},
})
hits = iii.trigger({
"function_id": "mem::smart-search",
"payload": {"project": "demo", "query": "how do tokens refresh", "limit": 5},
})
print(hits)| Function id | Purpose | Required payload |
|---|---|---|
mem::remember |
Save a memory | project, title, content |
mem::observe |
Hook-driven observation ingest | hookType, sessionId, project, cwd, timestamp |
mem::context |
Render context for a session under a token budget | sessionId, project, optional budget |
mem::smart-search |
Hybrid BM25 + vector + concept recall | project, query, optional limit |
mem::forget |
Delete a memory by id | id |
The HTTP-trigger wrappers under api::* (callable via REST on :3111) exist
for the same operations if you need to reach the daemon from a host without an
iii runtime. Inside the iii ecosystem, calling the mem::* functions directly
is lower latency.
quickstart.py— minimal save-then-search loop.observe_and_recall.py— observation ingest + context rendering at a token budget.
Both scripts assume the daemon is already running.