Memory for AI agents,
one curl away
Facts your agent can recall, a journal, typed records, an approval ledger, and nightly dreaming that keeps it all tidy. Free, with per-space limits. No account.
free · no signup · MCP + REST
quickstart
Three steps. No account.
Create a space, connect your agent, and load context at the start of every run.
- 01
Create a space
You get a space id and a key. The key is shown once.
curl -s -X POST https://api.openmemory.sh/v1/spaces \ -H 'content-type: application/json' \ -d '{"timezone":"Europe/Athens"}' # {"space_id":"sp_...","api_key":"om_...", ...} - 02
Connect over MCP
Streamable HTTP with a bearer header. Or call the REST API.
claude mcp add --transport http openmemory https://mcp.openmemory.sh \ --header "Authorization: Bearer $OPENMEMORY_KEY" - 03
Load context
One bounded read: what matters now, in your token budget.
curl -s https://api.openmemory.sh/v1/context \ -H "Authorization: Bearer $OPENMEMORY_KEY" # profile, due records, open actions, recent journal, last dream
why openmemory
Memory for agents that act, not just chat.
Most memory layers stop at storing text. OpenMemory also tracks where each fact came from, gates side effects behind approvals, and consolidates overnight without overwriting the person.
Facts, not just text
Every fact records who said it: the user, the agent, or dreaming. Pin what matters. Core facts land in every context; the rest are a recall away.
An approval ledger
Agents propose, owners approve, workers execute. Compare-and-set transitions mean two workers can never both send the same email.
Dreaming that knows its place
Nightly consolidation merges duplicates, promotes useful facts, and flags contradictions. It never rewrites what the user said, caps its changes, and can be undone for 7 days.
Runs on your model
In client mode your agent fetches the dream job and runs it with its own model. The service does housekeeping only, so it stays free.
primitives
What a space holds.
memories
Facts with tiers, pinning, and origin. Full-text recall in any script, Greek included.
journal
One entry per day: summary, decisions, open loops. Weekly digests from dreaming.
records
Typed JSON in named collections. Upsert by key, compare-and-set by version.
actions
An approval ledger with short ids (A1, A2), idempotency keys, expiry, and receipts.
kv + events
Namespaced settings and cursors with create-only writes, plus a capped event log.
context
One bounded read at the start of a run. Profile, due items, approvals, journal.
batch
Up to 50 writes in one transaction. All succeed or none do.
forget
Hard delete with dry run, journal redaction, and content-free tombstones.
mcp or rest
Two ways in. Same memory.
MCP gives tool-using agents 15 tools. REST adds atomic batches and everything else, with an OpenAPI 3.0 document for code generators.
MCP .cursor/mcp.json
{
"mcpServers": {
"openmemory": {
"url": "https://mcp.openmemory.sh",
"headers": { "Authorization": "Bearer ${env:OPENMEMORY_KEY}" }
}
}
}Guides for Claude Code, Cursor, OpenAI and Codex, and other clients.
REST POST /v1/batch
curl -s -X POST https://api.openmemory.sh/v1/batch \
-H "Authorization: Bearer $OPENMEMORY_KEY" \
-H 'content-type: application/json' -d '{
"ops": [
{"op":"memory.remember","input":{"subject":"Sam","text":"Prefers Thursday reviews","origin":"user"}},
{"op":"action.propose","input":{"class":"email_reply","summary":"Reply to Sam",
"payload":{"to":"sam@example.com"},"idempotency_key":"reply-sam-1"}},
{"op":"journal.put","date":"2026-11-01","input":{"summary":"Planned the review","merge":true}}
]}'See the API reference and the agent loop guide.
agent-readable
Docs your agent can read.
Every page is Markdown too. Point your agent at llms.txt, or let it set itself up with one prompt.