Python SDK

pip install oramemory

Requires Python 3.9+.

Initialization

from oramemory import Memory

# Reads ORAMEMORY_API_KEY from env
m = Memory()

# Or pass explicitly
m = Memory(api_key="om_live_...", agent_id="myai")

# Self-hosted / staging
m = Memory(api_key="...", base_url="https://memory.mycompany.internal/api")

Environment variables

Var Purpose
ORAMEMORY_API_KEY Default API key
ORAMEMORY_BASE_URL Override API base URL

Methods

m.add(content, *, agent_id=, user_id=, session_id=,
      tags=[], category=, importance=0.5, layer="l3",
      metadata={}, expire_at=, inferred=False)

m.read(query, *, agent_id=, user_id=, scope="agent",
       top_k=5, threshold=0.0, category=, layer=)

m.list(*, agent_id=, user_id=, layer=, page=1, page_size=50)
m.get(id_memory)
m.update(id_memory, *, content=, tags=, importance=, ...)
m.delete(id_memory)
m.history(id_memory)

m.usage()
m.status()

Helpers

support = m.for_agent("support")    # shallow copy with agent_id default
alice   = m.for_user("alice")       # shallow copy with user_id default

support.add("User prefers curt responses")
# Same as:
m.add("User prefers curt responses", agent_id="support")

Error handling

All exceptions inherit OraMemoryError:

from oramemory import Memory, AuthError, RateLimitError, NotFoundError

try:
    hits = m.read("…", agent_id="myai")
except AuthError:
    ...       # 401 — invalid/missing/revoked key
except RateLimitError as ex:
    ...       # 429 — too many writes; reads are never rate-limited
except NotFoundError:
    ...       # 404

Other subclasses: PlanError (403), ValidationError (400), StorageCapError (507).

Framework patterns

Flask middleware

from flask import Flask, g, request
from oramemory import Memory

app = Memory(api_key="om_live_...")   # app-wide

@app.before_request
def _mem():
    g.memory = app.for_user(request.headers.get("X-User-Id", "anon"))

FastAPI dependency

from fastapi import FastAPI, Depends
from oramemory import Memory

_m = Memory(api_key="om_live_...")

def memory_for(x_user_id: str) -> Memory:
    return _m.for_user(x_user_id)

app = FastAPI()

@app.post("/remember")
def remember(text: str, mem: Memory = Depends(memory_for)):
    return mem.add(text, agent_id="assistant")