Files
Rohit Ghumare f365d38c75 docs(python): iii-sdk example replaces standalone REST client (#364)
Closes #342.

agentmemory functions register as mem::remember, mem::observe,
mem::context, mem::smart-search, mem::forget via sdk.registerFunction.
iii-sdk already ships in Python, Rust, and Node — any of them can call
those functions directly over the iii WebSocket transport. A standalone
Python REST client would duplicate the transport layer and fragment the
cross-language story.

This patch adds:
- examples/python/quickstart.py — minimal save + smart-search loop.
- examples/python/observe_and_recall.py — observation ingest + context
  rendering at a token budget.
- examples/python/README.md — function map + install + usage.
- README "Programmatic access (Python / Rust / Node)" section pointing
  at the example and the three SDK install commands.

REST on :3111 is unchanged for hosts without an iii runtime.
2026-05-13 21:08:31 +01:00
..

Python usage via iii-sdk

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.

Install

pip install iii-sdk

Quickstart

Start the agentmemory daemon (defaults to ws://localhost:49134, REST on :3111):

npx -y @agentmemory/agentmemory

Then 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)

Functions exposed

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.

Files

  • 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.