openmemory

Changelog

What changed in the openmemory API and MCP server, and what you may need to do about it.

Each version is the API's version. GET https://api.openmemory.sh/ returns the one that's live.
  1. v0.2.0Latest
    Check your codeNewImprovedFixed

    Forget everywhere, safer updates

    forget can now reach every kind of data, updating a record keeps what you leave out, and the OpenAPI document works with client generators.

    Check your code

    Two changes affect existing callers:
    • Updating a record by key keeps what you leave out. POST /v1/collections/{c}/records with an existing key used to reset every field you didn't send, so sending only status wiped data, cleared due_at, and set origin to agent. If you relied on that, send the field explicitly: "due_at": null, "data": {}, or "status": "".
    • forget with a query matches whole words in facts. Forgetting "Sam" used to delete facts containing "same" too. If you relied on prefixes, name the whole word.
    GET /v1/context also returns more than it did: open_records now covers every collection without being asked, up to 20. Use open_limit=0 to go back to leaving them out.

    Forget

    • New scopes: actions, kv, and events. The default is still ["memories"], so to forget something everywhere, list all six.
    • The result now has not_searched, the scopes it didn't look in, and truncated, which is true when there's more to do. Check both before saying something is gone.
    • Actions are redacted, not deleted, so a denied action can't be proposed and run again. Any that could still run become superseded. executing_actions lists those already running.
    • Phrase matching now ignores case and accents in any script, and it covers journal source_refs and fact tags and source_ref.

    New

    • POST /v1/space/key replaces a space's key. The old key stops working at once, and everything in the space stays, including a stored OpenAI key. REST only.
    • PATCH /v1/actions/{id} merges into an action's meta, in any status. Also the action_update MCP tool and the action.update batch op. The MCP server now has 34 tools.
    • search.indexing on recall counts the matching facts that may not be findable by meaning yet.
    • open_records_total and open_limit on GET /v1/context.
    • error.details.op_index and op on a failed batch, including failed preconditions.

    Fixed

    • A q with no letters or digits, such as ?!, now finds nothing. It used to list every fact.
    • OpenAPI: created is a plain boolean on both responses, weekly is nullable in a form client generators keep, the name pattern no longer has a stray /i, and the batch limit says 50, the real limit. If you generate a client from the document, regenerate it.

    Unchanged on purpose

    Proposing an action with a used idempotency_key and the same payload returns the existing action, even if it was denied. A retry mustn't be able to reopen something the owner refused, so use a new key to ask again.
  2. v0.1.0
    New

    First release

    A memory API and MCP server for agents. One request creates a space, with no signup.

    At launch

    • Spaces with anonymous keys: POST /v1/spaces returns a key with no signup.
    • Facts with full-text recall.
    • A journal, records with compare-and-set, an approval ledger with idempotent proposals, KV, and capped events.
    • GET /v1/context loads what matters at the start of a task, and POST /v1/batch applies writes atomically.
    • forget with content-free tombstones and journal redaction.
    • Dreaming: nightly housekeeping, a model stage on your agent's own model or on Workers AI, safety rules for what you stated, and a 7-day undo.
    • A REST API with an OpenAPI 3.0 document, and a stateless MCP server.
    • Docs and agent guides, with every page also served as Markdown, plus llms.txt, llms-full.txt, and an agent skill.

    Added before 0.2.0

    • Meaning search: recall matches by meaning as well as by words, within a daily budget.
    • Your own OpenAI key for embeddings, with PUT /v1/space/embeddings. It's stored encrypted and is write-only and REST-only.
    • Recall lifts facts about the person a question names, and matches other word forms.
    • extract_job and extract_submit let an agent go through a conversation with its own model. The server runs no model and keeps no copy of the conversation.
    • A retrieval benchmark on LongMemEval.
    • MCP lists four tools by default: get_context, remember, recall, and forget. Add ?tools=all to list the rest. Every tool can still be called by name.
    • recall with no question, or GET /v1/memories, reaches every fact. It returns total and next_cursor, and doesn't count as a recall.
    • MCP gained 16 tools, for 33 in all. Creating or deleting a space and managing an OpenAI key stay REST-only.
    • The API reference lets you try calls from the browser. CORS allows only openmemory.sh and localhost, and your key goes only to the API. api.openmemory.sh/docs now redirects to the reference.
    Learn more