Quickstart

From zero to a searchable memory in a few minutes.

1. Get an API key#

Sign up at rememberos.ai and grab a free key (the free tier is free — no charge). Your key starts with mv_; keep it secret. Set it as an environment variable:

export LONGMEM_API_KEY=mv_...

2. Install a client#

# PyPI publish pending — install from source:
pip install "git+https://github.com/11data/longmem#subdirectory=sdk/python"
# npm publish pending — install from source:
npm install "github:11data/longmem#workspace=sdk/js"
# no install needed — curl works directly against the API

3. Store a memory#

from longmem import Longmem

mem = Longmem()                      # reads LONGMEM_API_KEY
mem.add("Alex prefers dark mode", collection="prefs")
import { Longmem } from "longmem";

const mem = new Longmem();           // reads LONGMEM_API_KEY
await mem.add("Alex prefers dark mode", { collection: "prefs" });
curl -s https://rememberos.ai/v1/memory/collections/prefs/memories \
  -H "Authorization: Bearer $LONGMEM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Alex prefers dark mode"}'

4. Search it#

hits = mem.search("what theme does Alex like?")
for h in hits:
    print(h["score"], h["text"])
const hits = await mem.search("what theme does Alex like?");
for (const h of hits) console.log(h.score, h.text);
curl -s https://rememberos.ai/v1/memory/search \
  -H "Authorization: Bearer $LONGMEM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "what theme does Alex like?"}'

Search is hybrid by default — vector similarity and full-text, fused. No keyword overlap is required: "what theme does Alex like?" finds "Alex prefers dark mode".

5. Let memory evolve (graph memory)#

mem.remember("Alex moved from Google to Stripe last month", collection="people")
await mem.remember("Alex moved from Google to Stripe last month", { collection: "people" });
curl -s "https://rememberos.ai/v1/memory/collections/people/remember" \
  -H "Authorization: Bearer $LONGMEM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content": "Alex moved from Google to Stripe last month"}'

remember extracts atomic typed facts and links them to what you already know — a fact that contradicts an older one supersedes it, so search returns the current truth. By default it runs async (HTTP 202 + a job id); pass ?sync=true to get the extracted facts back inline.

Plain add never calls an LLM — it embeds and stores. Use remember when you want extraction and fact evolution; it costs LLM calls.

Where next#