Portable memory for every AI client

One memory across every AI.

Transparent, scoped, and yours — Memora follows you from ChatGPT to Claude to your coding agents.

Plugs into any MCP client

Claude
Cursor
Copilot
Gemini
Zed
JetBrains
Neovim
Obsidian
Claude
Cursor
Copilot
Gemini
Zed
JetBrains
Neovim
Obsidian

Tell one AI.
They all remember.

Say it once.

Mention it in any conversation: a Claude chat, a Cursor session, a coding agent. No forms, no manual notes.

I deploy with Docker Compose on a Hetzner VPS, and I prefer short answers with runnable commands.

Memora distills it.

The fact is extracted, classified as episodic or semantic, scoped to the project it came from, and embedded for recall.

Prefers short answers with runnable commands. Deploys with Docker Compose on a Hetzner VPS.

semanticglobal

Every AI remembers.

Any MCP client recalls the same memory. Edit it, export it, or delete it whenever you want.

Claude

“You deploy with Docker Compose on a Hetzner VPS, so here is the compose file first.”

Cursor

“You deploy with Docker Compose on a Hetzner VPS, so here is the compose file first.”

Copilot

“You deploy with Docker Compose on a Hetzner VPS, so here is the compose file first.”

Memory you can actually trust.

Not a black box. Every memory is scoped, inspectable, and stored where you decide.

Scoped to the project

Scope a conversation once and its memories stay in that lane. Nothing from project-x surfaces while you work on project-y.

project-x

Runs Postgres 16 in production
API errors return RFC 7807 JSON

project-y

Ships as a Chrome extension
Uses pnpm workspaces

Yours to inspect

Every memory is visible in the browser. Edit it, export the whole store as JSON, or delete it for good.

Prefers concise API examples with runnable commands.

Local-first, your keys

Data lives on your machine. Bring your own keys, or run fully offline in degraded mode.

~/.memora/ on your machine

GEMINI_API_KEYoptional
OPENAI_API_KEYoptional
GROQ_API_KEYoptional

No keys set: local embeddings, keyword recall, zero cloud calls.

Three kinds of memory

Retrieval blends all three with recency, so answers reflect both what you said and how you work.

EpisodicWhat happened, and when
SemanticFacts and preferences
ProceduralHow you like to work

Installed in under a minute.

One local server. Point your clients at it and they share the same memory from the next message on.

Run the server

Memora stores everything in ~/.memora/ by default. Add your own keys for hosted models, or skip them and stay fully local.

$ uvx memora-mcp

Client configuration

claude_desktop_config.json / .mcp.json

{
  "mcpServers": {
    "memora": {
      "command": "uvx",
      "args": ["memora-mcp"],
      "env": {
        "GEMINI_API_KEY": "<optional>"
      }
    }
  }
}

Free to remember.

Start on the free plan. Upgrade only when your memory outgrows it.

Free

$0forever
  • 10,000 memories stored
  • 1,000 retrievals a month
  • Every MCP client
  • Edit, export, and delete controls
  • Local-first degraded mode

Pro

For heavy recall
$9per month
  • Everything in Free
  • Unlimited memories
  • Unlimited retrievals

The MCP server is open to run locally on both plans, with your own keys or none at all.

Questions,
answered.

Where is my data stored?

In ~/.memora/ on your machine by default. Set MEMORA_DATA_DIR to move it. Nothing leaves your device unless you configure a hosted model.

What happens without API keys?

Memora drops into degraded mode: deterministic local embeddings and keyword recall, with zero cloud calls. Add a key later and it picks up hosted models.

Which clients can use it?

Anything that speaks MCP: Claude Desktop, Claude Code, Cursor, and coding agents. They all read and write the same store.

What exactly is a scope?

A label a conversation carries, usually a project name. Retrieval only surfaces memories from the active scope, so projects never bleed into each other.

Can I see what it remembers?

Yes. The memory browser lists every fact with its type and scope. Edit anything, delete it for good, or export the whole store as JSON.

Can two clients run at once?

The embedded store is single-writer. Give each client its own data directory, or run a shared Qdrant server and point QDRANT_URL at it.

Stop re-introducing yourself to every AI.