Python and TypeScript SDKs. Every endpoint, every type, every example. Generated from the same OpenAPI spec that drives the API — so the SDK is never behind. Promoted to GA this quarter.
Publish target: PyPI and npm. Zero peer-dependency footprint, strict types, tree-shakeable on the TS side.
pip install remlabs
npm install @remlabs/sdk # private beta -- request access in Discord
Remember, ask, dream, graph — the building blocks of the REM continuity layer. Sign in to auto-inject your API key into the snippets.
from remlabs import REM rem = REM(api_key="sk_live_…") mem = rem.remember( text="Shipped Dream Engine v2 on April 1.", namespace="engineering", tags=["release", "dream-engine"], ) print(mem.id, mem.confidence)
import { REM } from "@remlabs/sdk"; const rem = new REM({ apiKey: "sk_live_…" }); const mem = await rem.remember({ text: "Shipped Dream Engine v2 on April 1.", namespace: "engineering", tags: ["release", "dream-engine"], }); console.log(mem.id, mem.confidence);
answer = rem.ask(
"What did we ship in April?",
namespace="engineering",
)
print(answer.text)
for cite in answer.citations:
print(cite.id, cite.score)
const answer = await rem.ask({ query: "What did we ship in April?", namespace: "engineering", }); console.log(answer.text); for (const cite of answer.citations) { console.log(cite.id, cite.score); }
run = rem.dream(
strategy="contradiction",
namespace="engineering",
)
print(run.status, run.insights_found)
for ins in run.insights:
print(ins.summary)
const run = await rem.dream({ strategy: "contradiction", namespace: "engineering", }); console.log(run.status, run.insightsFound); for (const ins of run.insights) { console.log(ins.summary); }
graph = rem.graph.query(
entity="Dream Engine",
depth=2,
)
for edge in graph.edges:
print(edge.source, edge.relation, edge.target)
const graph = await rem.graph.query({ entity: "Dream Engine", depth: 2, }); for (const edge of graph.edges) { console.log(edge.source, edge.relation, edge.target); }
Generated from the OpenAPI spec every release. If it lands in the API, it lands in both SDKs in the same cut.
| Endpoint | Python | TypeScript |
|---|---|---|
| rem.remember() Write memories with metadata, tags, and source. | ✓ | ✓ |
| rem.recall() Hybrid retrieval with ranking, filters, and confidence scores. | ✓ | ✓ |
| rem.forget() Tombstoned deletion by id, tag, or filter. Reversible for 30 days. | ✓ | ✓ |
| rem.ask() Natural-language Q&A with typed citations and streaming. | ✓ | ✓ |
| rem.dream() Run any of nine Dream Engine strategies over a namespace. | ✓ | ✓ |
| rem.graph.query() Traverse entities and relations with depth and filter controls. | ✓ | ✓ |
| rem.channels.subscribe() Live WebSocket stream for memory events, reactively typed. | ✓ | ✓ |
| rem.webhooks.send() HMAC-signed outbound events, with retry and idempotency keys. | ✓ | ✓ |
| rem.namespaces.create() Multi-tenant scopes with RBAC and per-scope configuration. | ✓ | ✓ |
| rem.federate() A2A-protocol handoff of scoped memory to another REM node. | ✓ | ✓ |