Open Memory Protocol (OMP) is an open standard and Python SDK that gives your AI application one stable API for every memory backend. This page explains the problem OMP solves, how its adapter model works, and where to go next.Documentation Index
Fetch the complete documentation index at: https://docs.openmem.blog/llms.txt
Use this file to discover all available pages before exploring further.
What is OMP?
Every popular memory provider — Mem0, Supermemory, Letta, Postgres — ships its own SDK, its own schema, and its own concept of users and scopes. Adopting one provider locks your application to it. Switching later means rewriting every memory call. OMP solves this with a single, versioned interface:mem.add(), mem.search(), mem.context(), and a handful of other verbs. You write against those verbs once. The SDK translates them to whatever backend you point it at through a system of adapters — no application code changes required when you switch.
The analogy from the spec: OMP is to AI memory what the S3 API is to object storage.
Key benefits
Swap providers freely
Change the
provider= argument and your application code stays identical. The SDK handles the translation.Async-native
AsyncMemory mirrors the sync API with full async/await support. Postgres and passthrough backends use native async clients; other providers use a thread pool.Prompt-ready context
mem.context() returns a ranked, citation-tagged block sized to your token budget — ready to prepend directly to an LLM system prompt.Self-hostable server
omp-server exposes the full OMP verb set over HTTP so any language or framework can use it, with no proprietary infrastructure required.Provider support
| Provider | Mode | Status |
|---|---|---|
| Postgres + pgvector | Native (reference) | Ready |
| Mem0 | Translation adapter | Available |
| Supermemory | Translation adapter | Available |
| Letta | Translation adapter | Available |
| Any native OMP server | Passthrough via base_url | Available |
How the architecture works
When you callmem.add(), the request flows through three layers:
- Your application calls a standard OMP verb on the
Memoryfacade. - The OMP SDK validates the payload, enforces the schema, and selects an adapter.
- The adapter translates the OMP call to the chosen backend’s API and normalizes the response back to OMP types.
GET /capabilities on startup. If the response includes omp_version, it uses a passthrough adapter — a thin HTTP client — instead of a translation adapter. Your application code is identical in either case.
What’s next
Quickstart
Run your first memory operation against a local Postgres instance in under five minutes.
Installation
Install the SDK with the right extras for your provider and configure credentials.