> ## 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.

# Open Memory Protocol: one API for any AI memory

> OMP is a vendor-neutral Python SDK and open protocol that lets your AI app talk to any memory backend through a single, stable interface.

Open Memory Protocol (OMP) gives your AI application one consistent API for storing, searching, and retrieving memory — regardless of which backend powers it. Write your code once against `Memory.add()`, `Memory.search()`, and `Memory.context()`, then swap between Postgres, Mem0, Supermemory, or Letta with a single line change.

<CardGroup cols={2}>
  <Card title="Quick Start" icon="rocket" href="/quickstart">
    Run your first memory operation in under 5 minutes using the Postgres backend.
  </Card>

  <Card title="Installation" icon="download" href="/installation">
    Install the `openmem` package with the extras for your chosen provider.
  </Card>

  <Card title="Core Concepts" icon="book" href="/concepts/memory-model">
    Understand memories, scopes, providers, and context blocks.
  </Card>

  <Card title="API Reference" icon="code" href="/api/overview">
    Full HTTP endpoint reference with request and response schemas.
  </Card>
</CardGroup>

## How it works

OMP sits between your application and any memory backend. You call the same Python methods (or HTTP routes) regardless of which provider you choose. The SDK automatically detects whether a provider speaks OMP natively and selects the right adapter for you.

<Steps>
  <Step title="Install the SDK">
    ```bash theme={null}
    pip install openmem
    ```
  </Step>

  <Step title="Connect to a provider">
    ```python theme={null}
    from openmem import Memory

    mem = Memory(provider="postgres", url="postgresql://localhost/omp")
    ```
  </Step>

  <Step title="Add and search memories">
    ```python theme={null}
    mem.add(content="user prefers pnpm over npm", user_id="u1", scope="coding/preferences")

    results = mem.search("package manager", user_id="u1")
    print(results[0].memory.content)
    ```
  </Step>

  <Step title="Inject context into LLM prompts">
    ```python theme={null}
    ctx = mem.context("set up a new node project", user_id="u1", token_budget=500)
    # ctx.text is ready to prepend to your system prompt
    ```
  </Step>
</Steps>

## Supported providers

| Provider              | Status      |
| --------------------- | ----------- |
| Postgres + pgvector   | Ready       |
| Mem0                  | Available   |
| Supermemory           | Available   |
| Letta                 | Available   |
| Any native OMP server | Passthrough |

<CardGroup cols={2}>
  <Card title="Switch providers" icon="arrows-rotate" href="/guides/switch-providers">
    Learn how to change backends with zero application code changes.
  </Card>

  <Card title="Async usage" icon="bolt" href="/guides/async-usage">
    Use AsyncMemory for non-blocking memory operations in async apps.
  </Card>

  <Card title="LLM integration" icon="brain" href="/guides/llm-integration">
    Inject ranked, citation-tagged memory into any LLM prompt.
  </Card>

  <Card title="HTTP server" icon="server" href="/guides/http-server">
    Run `omp-server` to expose OMP over HTTP for any language or framework.
  </Card>
</CardGroup>
