Skip to main content
Anona Memory is a hosted service. There is no infrastructure to run, no schema to design, and no vector database to operate. The fastest way in is the memory proxy: point an OpenAI-compatible client at Anona instead of the model provider. Every request recalls what matters from the space and every reply is stored back, so the conversation carries across sessions, processes and machines, with no record or retrieve calls in your code.
That is the whole integration. You never supply an LLM key. Anona runs the model and meters the turn in Anona credits.
Already using the Responses API or the Anthropic SDK? Both work the same way: /v1/responses and /v1/messages speak those shapes with the identical memory wrapper. Streaming is supported on all three.

Get set up

1

Create an account and a key

Sign up at the Anona Memory dashboard with your organization name, email, and a password of 8 or more characters.Verify your email before your first sign-in. Signing up does not create a key: go to API keys → New key, pick an environment, and copy it. The full key is shown once, at the moment you create it, and never again.
2

Create a memory space

Every memory lives inside a space: one per app, per tenant, or per end user, whichever boundary you want memories isolated along. Create one from Spaces → New space in the dashboard, or over the API:
The name you chose is the space_id. Nothing is generated for you. Pass it as X-Anona-Space-Id (or space_id in the body) on every proxied call.
3

Tune what gets injected (optional)

Each knob has a header form, so a stock client sets them once in default_headers and never touches the request body.
Set X-Anona-Space-Id even for a quick test. Leave it out and the turn is recalled from and stored into a space literally named default, created on the first proxied call, so a space you never created shows up in your space list and counts against your plan’s space limit.
Serving many end users from one space? Add X-Anona-User-Id and each user gets their own memory, with no space per user and no leakage between them:
See Scoping.The same knobs can be stored on the space itself (PUT /v1/spaces/{space_id}/chat-settings, or the Chat defaults tab in the dashboard), so they apply to every call without touching your code. A request that sets a field still wins over the stored default.See Chat for the full endpoint reference.

Or call memory directly

The proxy is memory with the wiring done for you. When you want the memory layer on its own (ingesting documents, storing facts your model never said, searching without generating), use the memory API directly.
The record call above is synchronous, and synchronous writes are slow: the text is analyzed by a language model and its facts extracted before the call returns. Measured against production, that is 12-17 seconds, against 1-3 seconds for the same write queued.It is written that way here only so the retrieve on the next line finds the memory. In real code, pass "async": true (background=True in the Python SDK, background: true in TypeScript) and poll the returned job: same work, same cost, a tenth of the wait. See Memories.

Where to go next

Chat

Streaming, tunables, and the full proxy reference.

Core concepts

Spaces, memory types, and tenant isolation.

Retrieve API

Filters, latency modes, and relevance scoring.

Framework adapters

Already on LangChain, CrewAI, LlamaIndex, ADK, Agent Framework or Strands? Wire memory in without calling record and retrieve yourself.

Examples

A complete runnable script for every adapter.

MCP

Connect Claude Code and other MCP clients.