Local-first memory for AI coding agents

Open a new session.
Your agent already knows.

Unforgetter gives Claude Code, Codex and any agent that speaks MCP a memory that outlives the session: a folder of plain markdown on your Mac that keeps itself up to date. No account, no upload, no subscription.

Install in one line - paste it in Terminal, or hand it to your agent:

macOS · Apple Silicon · works with Claude Code & Codex · your data never leaves your machine
The moment

You never told it any of this.

A brand new session, in a folder you have not opened for a fortnight. No briefing, no pasted context file.

~/work/orbit - claude
$ claude
> where did we land on the billing rewrite?
unforgetter · get_current_state
  read ~/Memory/current-state.md
You moved billing onto Stripe Checkout on the 3rd and parked the webhook retry logic mid-way.
One thread is still open: the 3-day grace period is hardcoded, and you flagged it as blocked on the pricing decision rather than a bug.

That is the whole product. Your agent read the memory before it answered, because Unforgetter told it to - in every session, in every folder, without you asking.

Works with

One memory.
Every agent on your Mac.

Unforgetter is an MCP server over a folder, so anything that speaks MCP can read and update the same memory. Two of them it configures itself.

One click Set up for you The app writes the config, the preload and the hook.
Claude Code Claude Code
Codex Codex
One snippet Works over MCP Paste one block of config and it behaves the same.
Cursor Cursor Guide →
Copilot Copilot
Windsurf Windsurf
Zed Zed
Gemini CLI Gemini CLI
JetBrains JetBrains
Warp Warp
Raycast Raycast

The memory itself is just a folder. Nothing about it is tied to a particular agent, so switching tools costs you nothing - and two agents pointed at the same folder stay in sync by definition.

How it works

Append by day.
Rewrite by night.

Your agent logs what happened during a session. A nightly pass distills everything down to what's true right now - so the memory never drifts.

01 - THE VAULT

A folder of plain markdown

On first run you create or adopt a folder. It gets a small scaffold: current-state.md, open-threads.md, a daily/ log, and a raw/ inbox. Yours to read in any editor.

02 - THE MCP SERVER

Wired into your agent

A bundled server registers itself with your CLI and exposes four tools: get_current_state, list_open_threads, search, and append_daily_log.

03 - CONSOLIDATION

Distilled every night

Consolidation spawns your own agent to fold new logs and the inbox into the live state, then archives the inbox. It uses your CLI login - so there's no extra LLM cost.

daily/2026-06-16.md
09:14 - billing moved to Stripe Checkout
11:02 - parked the webhook retry logic
16:40 - grace period blocked on pricing
03:00 · consolidate
current-state.md
Billing runs on Stripe Checkout.
Open: webhook retry, grace period - blocked on pricing.
episodic by day  →  durable by night
the memory stays distilled to what is true right now
Setup

Two clicks, and no account anywhere.

There is nothing to sign up for and nothing to authorise. The app looks at your Mac, you pick a folder, and it wires up your agents.

Claude Code Codex
detected on your Mac
01 - It looks around

Open the app. It finds the agents you already have installed and tells you what it can wire up.

Create new vault
~/Memory
or use an existing folder
02 - You pick a folder

A normal folder picker. Start fresh, or point it at notes you already keep and it adopts them without overwriting anything.

Claude Code Codex
connected · memory is live
03 - That's it

Both agents are registered and told to read the memory at the start of every session. Your next claude already knows you.

Architecture

Your agent and your memory, talking locally.

No servers, no accounts, no upload. Everything runs on your Mac.

Your CLI

Claude Code or Codex, running anywhere on your machine.

MCP server

Bundled Rust binary. Reads & writes the vault over stdio.

The vault

Plain markdown in a folder. Yours, on disk, in git.

Local-first
Your memory is a folder of markdown on your machine. Nothing is uploaded.
No LLM cost
Consolidation runs through your own logged-in CLI - the app never bills you.
Yours to read
Open any file in any editor. Versioned in git. No lock-in, ever.
Alongside the rest

It sits next to everything else you have wired up.

Unforgetter does not connect to your inbox or your issue tracker. Whatever MCP servers you already run, keep running them - your agent reads from those, and writes what mattered into your memory.

GitHub GitHub Slack Slack Gmail Gmail Notion Notion Linear Linear Calendar Calendar Drive Drive Obsidian Obsidian

These are other people's MCP servers, not our integrations - and that is the point. A hosted memory has to own every connection itself. Yours already has whatever you chose to install, and Unforgetter is simply the one that remembers. Why that matters →

Stop reminding your agent.

Unforgetter is an early beta for macOS. Install it, point it at a folder, and your agent remembers.

Easiest install: paste this in Terminal.

macOS · Apple Silicon · v0.1 beta · ~5 MB
Installing an unsigned beta
The one-line installer clears macOS's quarantine flag for you, so there is nothing extra to do. If you take the .dmg instead, drag it to Applications and run this once: xattr -dr com.apple.quarantine /Applications/Unforgetter.app. After that, in-app updates are automatic.