Second Brain for Mac and Windows - Your AI memory, everywhere you work

by
The Second Brain desktop app gets you running in five minutes. No terminal. No git. Just download, set a password, and sign into Cloudflare. Then the real magic starts. Persistent memory across every AI tool you use. Recall that just got a lot smarter. Surfaces the right memory, not just the newest one. A knowledge graph that builds itself. Your data in your own Cloudflare account, not ours. Mac and Windows. You asked for the app. You asked for better recall. We shipped both.

Add a comment

Replies

Best

the frame that made me click 'installed' was 'you asked for the app. you asked for better recall. we shipped both.' thats not a launch line, thats a receipt. congrats on the ship rahil. one thing i noticed poking around: the recall-by-meaning + graph combo is actually the missing shape for cross-tool memory. every other 'memory layer' i've tried just replays chronology. this one thinks in relationships. going to run it against a week of conversations and report what breaks.

 Chronology was the easy version to build, and it kept handing back the newest memory instead of the right one. Relationships are what let recall answer the question you did not think to ask. When you run that week, send me the cases where it drags in something irrelevant. Over-linking is the failure mode I want data on most.

A lot of people have been asking how memories are stored and whether they sync across devices. This diagram explains it better than words can.

The desktop app is how you install and access Second Brain. Your memories live in your own Cloudflare account, not the app and not our servers. Switch from Claude to ChatGPT to Cursor, your brain is already there. Uninstall the app, your memories are still there.

The app is the door. Cloudflare is the house.

I think making the setup frictionless is just as important as improving the memory itself. A lot of developer tools lose people before they ever experience the core value because the first 15 minutes are too much work. Getting someone from download to actually using persistent memory in a few minutes is a bigger improvement than it might seem.

 That first 15 minutes is exactly where v2 lost people. The git clone and deploy step was the whole funnel. Now it is download, pick a password, sign into Cloudflare, and your first recall lands before you have decided whether you like it.

Shipping a desktop installer on top of self-hosted Cloudflare memory removes the git barrier without giving up the your-account data model. Semantic recall plus a graph you can inspect is more useful than dumping the newest note into every chat. How do you scope memories per project or client so Cursor does not pull unrelated brand voice into a new codebase?

 Tags are the lever today. Scope a recall to the client tag and Cursor only sees that project. What tags do not scope yet is where conflicts surface, so a draft from one codebase can still raise against another. Per-project partitioning is the fix and it is on the roadmap.

💡 Bright idea

I've been hand-maintaining something like this for months — a memory index plus per-topic files I update after every session — and the hardest part isn't storing new context, it's knowing when something old stops being true. A canonical memory that was accurate for a year but describes a relationship or process that's since changed completely — does anything nudge you to review or archive it, or does it just sit as ground truth until a new note happens to contradict it? That's the part that quietly breaks trust in any memory system once it's been running long enough to accumulate stale "facts."

 Nothing nudges you today, and that is the honest gap. Canonical holds until something contradicts it or you demote it with set_status, so a fact that quietly stopped being true just sits there. Months of hand-maintaining is the part we have not solved. A staleness pass that flags long-untouched canonicals for review is going on the roadmap.

The line about surfacing the right memory, not just the newest one, is the hard part, and it is good to see it treated as its own feature instead of folded into search.

The thing that usually breaks recall in practice is contradiction over time. March says Postgres, July says SQLite, and pure similarity happily hands back both. Curious whether the knowledge graph does any supersede or invalidate work there, or whether ranking is still semantic distance plus recency.

Keeping the data in the user's own Cloudflare account is the right default too. Congrats on the desktop launch.

 Supersede work happens, but you hold the pen. Canonical status protects a memory, and a contradicting write lands as a draft for reconciliation instead of silently overwriting it. Recall favors what survived that challenge, not what arrived last, and set_status is how you flip which one holds. The honest gap: nothing nudges you when a canonical quietly goes stale.

Congrats on the launch. How portable is the memory layer if someone later wants to move off Cloudflare? Can they export the raw memories, graph edges, canonical status, and provenance in a format another system can rebuild without losing the relationships?

Fully portable. One call gives you a single JSON file with everything: the raw memories, their tags (canonical status included), and the whole graph, every edge with its type, weight, and provenance. Edges reference memories by id, so another system rebuilds the relationships exactly, nothing flattened. The only thing left out is the vector embeddings, since those just get re-derived from the text on import. It’s MIT licensed and runs in your own Cloudflare account, so there’s nothing to unlock in the first place.
Does it go with claude code or codex, I mean in terminal, I work on multiple side projects over claude code terminal, with this brain can I simply talk about my expectations, it will pick automatically?
Yes, both. The setup script wires it into Claude Code and Codex over MCP, and it installs instructions that make them recall relevant context and save the important things on their own, so you just talk normally and it keeps up. One honest note for your side projects: today it’s one shared brain, so it doesn’t automatically wall off Project A from Project B. You can tag by project now, and proper per-project scoping is the next big item on the roadmap.

 thanks, will give it a try

How does it handle large conversation context? Will it clear the older conversation context or it preserves it forever?
It isn’t a conversation buffer, so it doesn’t hold whole chats or clear them. It saves discrete memories, facts and decisions, and at recall it pulls only the handful relevant to what you’re doing, so context never balloons. Nothing gets dropped just for being old: low-value entries compress into digests over time, duplicates merge, and you can delete anything yourself. So it neither wipes old context nor keeps everything raw forever, it distills and retrieves by relevance.

congrats on the launch - very impressive and the "starting over" is a real issue. Why do you think the LLMs force a start over - does it have to do with token usage?

 Thanks Pooja. You're a big part of why this desktop app exists, you wanted an easier way to get started with Second Brain and that stuck with me. The git and terminal setup was the real barrier, so this launch is that fix.

On your question: tokens are part of it, but they're the symptom. The real cause is that the model is stateless. Nothing persists between calls. What feels like memory inside a chat is just the whole transcript being re-sent every single turn.

So the window fills, quality drops as it fills, and eventually you get pushed into a new chat with a blank page. Starting over isn't a choice the model makes, it's the default. Continuity is the part someone has to build.

That's the bet with Second Brain: memory lives outside the model and gets recalled by meaning, so a new chat opens with the five things that matter instead of nothing.