Yes β if your memory is plain files instead of an account inside an app.
That's the whole answer. If it's files, you can copy them, back them up, delete them, and feed the same directory to ChatGPT, Claude, Cursor, and a local model. If it only opens inside one product, it isn't yours. You just have a revocable access grant.
If you run three or more assistants, your memory currently looks like this: None of them talk to each other. Every new window starts with the same chore: re-introducing yourself.
The annoying part isn't the typing. It's that models don't ask when they've forgotten β they guess. And when they guess wrong, nothing tells you. You just notice one day that the suggestions have drifted.
This isn't a "cloud bad" argument. These are properties of the design, not bugs in any particular product.
1. It's siloed. Each assistant knows only its own slice. Context you gave one is invisible to the others unless you repeat it.
2. It's fragile. Account changes, policy changes, product sunsets β months of accumulated context, gone. You had no backup, because you never received a file.
3. It's rented. This is the one people skip past. You think you have "my memory." What you actually have is read access to rows in someone's database. Stop paying and the access stops.
Ask one question:
Can I copy the whole directory to another disk and have it still work?
Yes β it's yours. No β it's rented.
Three concrete checks:
All three yes, and you own it.
It's moving memory out of an app and back onto files.
The minimal viable shape is unglamorous β three pieces:
That's it. What it buys you: ChatGPT, Claude, Cursor, and Gemini CLI all read the same files. Which client ships a breaking change, gets acquired, or shuts down stops being your problem.
Memory stops being "a feature of a product" and becomes "a directory you own." Nothing about that is novel β it's how your notes and your code already work.
When I set mine up, I added one rule: the AI may propose what to remember, but it may not write directly.
The reason was small. It had recorded "doesn't drink" as "doesn't like drinking." Barely a difference on paper β except every restaurant recommendation afterwards quietly avoided anywhere with a wine list, including a place I like. And I had no idea it had misremembered. I only knew the suggestions had gotten worse.
Automatic memory's real failure mode isn't forgetting. It's confidently remembering the wrong thing, silently.
So the flow became three steps:
Slower than full auto. But the resulting memory has been checked by me, rather than being "what a model inferred I am."
If you're building your own, this is worth copying whether or not you use anyone's product: separate the write path from the read path. Reads can be automatic. Writes probably shouldn't be. I'm not going to pretend there's only one option. Here's the current field, with the cost of each spelled out:
| Option | Good fit for | The catch |
|---|---|---|
| basic-memory | Plain Markdown, opens directly in Obsidian | AGPL. Install needs --prerelease or it silently resolves an old version |
| mcp-memory-service | Several agents at once, REST + remote MCP, browser clients | Browser access means tunneling a local port to public HTTPS β which reopens the door you were trying to close |
| @modelcontextprotocol/server-memory | Five minutes of hands-on testing | A JSON knowledge graph. No semantic retrieval |
| Mem0 (self-hosted) | The most complete extraction and conflict handling | Defaults to LLM-based extraction β your content goes back to a model vendor. Directly at odds with the goal |
| Agentic Brain | Coding-tool users; ships real benchmarks (LongMemEval-S 94.2%) | Coding-agent shaped. Not a general second brain |
| SuperLocalMemory | Local-first with an explicit "I don't know" recall contract | Media indexing needs ~16 GB RAM; skips Intel Macs |
| Hive (hello-fengchao.com) | Want a UI, and writes must be human-approved | macOS and iOS only right now. No Windows |
One hard constraint that rarely gets stated clearly:
Local stdio MCP only works with desktop and CLI clients. Browser clients cannot connect to it.
So if you live entirely inside chatgpt.com and claude.ai in a browser tab, none of the above helps you today.
Making a browser client work requires exposing your machine behind public HTTPS (a tunnel, a reverse proxy, OAuth in front). At which point "data never leaves my machine" is no longer true β it's just a memory sitting on a different server.
So check this before you install anything: do you have at least one MCP-capable desktop client? Claude Desktop, Cursor, VS Code, Codex, Gemini CLI β any one counts.
If you don't, this whole path is closed to you for now. Wait, or paste context manually. Don't build the full stack on day one. Start here:
Take the background you keep re-typing and write it into a single .md file you own.
That's the whole first step. Two things happen: you realize how much you've been re-explaining, and you realize re-pasting the same file is tedious β at which point automation becomes obvious rather than aspirational.
Files first, tooling second. Reverse that order and you end up with ten memory apps installed and none of them in use β which is the most common outcome in this category, and the reason so many of these projects have one star.
Can I export my ChatGPT memory?
Most platforms let you view memories one by one. Bulk export generally isn't offered, and what you'd get back are model-written summaries, not your original conversations. That's what "rented" looks like in practice: viewable, not portable.
Won't plain Markdown files be slow to search?
Under a few thousand entries, SQLite plus full-text indexing is more than enough. Retrieval speed isn't the bottleneck β whether you'll maintain it is. Which is exactly why readability and editability beat raw performance.
How does the model know which files to read?
MCP. You expose a "recall" tool; it calls that tool when it needs context. You can also scope it β some directories readable, others never visible to a given client. The protocol doesn't define any of this, so check what each implementation actually enforces.
Is this only for developers?
Configuring MCP currently is. But "keep your AI background in a file you own" isn't. The real threshold isn't technical skill β it's whether you have two or more assistants that need the same context. With one, built-in memory is fine and this isn't worth the effort.
I use Hive (hello-fengchao.com) β macOS app, MCP bridge package on PyPI as memory-hive-mcp, six tools, human-approved writes.
One design choice I think more projects should copy: it publishes an llms.txt at the site root, so an agent that lands on the site can read what the tools are, how to install them, and which version is required. That file is written for machines, not for a landing-page conversion.
It isn't the only option. Anything in the table above gets you to "the memory is mine" β the differences are how much UI you want and whether writes require a human.
The choice matters less than the direction: start treating your memory as a directory, not an account.
If the "re-explain myself to every assistant" problem is yours, the Hive integration docs are at hello-fengchao.com. Or pick a different row from the table. Either way β move the files first.