Dawnmere
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Dawnmereremember that we chose Postgres for the billing service"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Dawnmere
One long-term memory on your Mac, shared by your AI apps. Tell Claude Code a project decision on Monday, and Codex and Cursor know it on Tuesday. The memory is one file on your Mac; search runs on your Mac with small local models.
Early beta. This repo holds the installer, the dawnmere command, the Claude Code plugin and the
connector your apps run to reach the memory. The memory itself is the
engine, which the installer sets up for you.
Install
curl -fsSL https://github.com/Hadeva-Dev/dawnmere/releases/latest/download/install.sh | shYou need:
a Mac with Apple silicon (M1 or later) and macOS 14 or later, with 1 GB of free disk space;
Node.js 18 or later, for your apps to use memory's tools (recall, remember, forget);
Claude Code 2.1.301 or later, if your Claude plan is to do the background reading (optional).
The installer downloads uv if you do not have it, then the dawnmere command and the
engine. It checks every download against the sha256 written into it, and installs nothing if one differs. Then it
starts dawnmere setup.
If dawnmere is not found afterwards, add ~/.local/bin to your PATH, as the installer says:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrcRelated MCP server: SharedMemory MCP Server
What setup does
dawnmere setup first shows what it does and what it changes, and asks before changing anything. Then it asks:
what your AI apps should call you;
whether to use your Claude plan for background reading (or an Anthropic API key instead, kept in your Keychain);
whether Cursor may see your personal notes (no, unless you say yes);
whether to import the notes Claude Code already keeps in
~/.claude/projects/*/memory.
Then it shows each step as it runs:
step | what happens |
Claude Code | checks that |
Search models | downloads the search models (about 310 MB) and checks each file's sha256 |
Memory service | starts a background service (a LaunchAgent) that keeps search fast |
Your apps | connects Claude Code, Codex and Cursor, if they are installed (below) |
Your notes | imports your Claude Code notes |
Self-check | saves a test memory, finds it the way Codex and Cursor would, then deletes it |
It ends with "Dawnmere is on." and a line to try. Every file setup changes is copied first, next to it
(<file>.lflabs-backup-<time>), and recorded so dawnmere uninstall can put it back. You can run setup again, for example to choose a model later.
dawnmere setup --dry-run prints every change it would make and makes none.
Without a model (dawnmere setup --backend none), recall and remember still work; automatic saving is off.
Your apps
Setup connects these when it finds them:
Claude Code: installs the
lflabs-memoryplugin from this repo, which gives Claude Code memory's tools and four hooks: recall into each prompt, and saving after a session goes quiet. If the plugin cannot be installed, setup adds the same tools withclaude mcp addand the hooks to~/.claude/settings.json.Codex: adds
[mcp_servers.lflabs-memory]to~/.codex/config.tomland a prompt hook to~/.codex/hooks.json. Type/hooksonce in Codex to trust the hook.Cursor: adds
lflabs-memoryto~/.cursor/mcp.jsonand a session-start hook to~/.cursor/hooks.json. Restart Cursor. Cursor sees work notes only;dawnmere access cursor everythinglets it see your personal notes too, anddawnmere access cursor worktakes that back.Claude Desktop and other apps with MCP settings: setup does not connect them. Add the connector by hand, for Claude Desktop in
~/Library/Application Support/Claude/claude_desktop_config.json:{ "mcpServers": { "lflabs-memory": { "command": "npx", "args": ["-y", "dawnmere-connector@0.1.0"] } } }The connector's README has the lines for other apps.
Commands
command | what it does |
| connect your apps to one memory on this Mac |
| check that everything works, one line per check, and say what to do about each problem |
| save your memory to |
| add the memories from an export file, skipping any already there |
| show or change what an app may see: |
| install the newest release, checked against its checksums |
| remove everything setup added |
dawnmere doctor --report prints counts only (no memory text, names or paths), safe to paste into an issue.
Uninstall
dawnmere uninstallIt stops and removes the background service, takes memory out of Claude Code, Codex and Cursor (putting each file back
as it was before setup, or removing only our entries if you changed the file since), removes the API key from your
Keychain, and removes the dawnmere and engine programs. It always asks before deleting your memory, which cannot be
brought back; say no, or use --keep-data, to keep it. The backups setup made stay next to each file, and uninstall
lists them.
Where things live
what | where |
your memory, settings and models |
|
the service's log |
|
the background service |
|
the programs |
|
an Anthropic API key, if you gave one | your login Keychain, as "LF Labs Memory" |
Privacy
Your memory stays on your Mac. It is never uploaded, and nothing is sent to LF Labs. There is no usage data.
What does go over the network:
Background reading, if you chose a model: after a Claude Code session goes quiet, that conversation goes to your own model provider (your Claude plan through Claude Code, or the Anthropic API with your key) to pick out what is worth remembering. At most 200 calls a day.
Downloads: the installer, uv, Python and the engine's Python packages (from GitHub and PyPI); the search models and the Claude Code plugin (from this repo on GitHub); the connector (from npm, when an app starts it).
dawnmere updateasks GitHub for the newest release.Setup's check of your model: one short test call to Claude Code or the Anthropic API.
Each app decides for itself what it sends to its own model, including what it recalls from memory.
License
The installer, the dawnmere command, the plugin and the connector: MIT (LICENSE). The engine:
FSL-1.1-MIT. The models keep their own
licenses (dawnmere doctor --licenses), and the setup screen's wordmark is drawn from the Fredoka font
(THIRD_PARTY.md).
Available Tools
4 toolsaccess_statusWhat this app can seeARead-only
Use this when the user asks what this app can see in their memory, or why something is hidden from it.
Inputs: no named parameters.
forgetForget a memoryADestructiveIdempotent
Use this when a memory recall showed is wrong, out of date, or the user asks you to forget it. Retires that one memory; it can be restored later.
Inputs: id (required).
recallRecall from memoryARead-only
Use this when the answer may depend on something the user told you or another of their AI apps before: their preferences, projects, decisions or people. Searches the user's memory by meaning and keywords.
Inputs: query (required), k, section.
rememberSave to memoryA
Use this when the user tells you something worth knowing in future conversations, in any of their AI apps: who they are, a preference, a decision, a person, a pointer. One self-contained fact per call: a first line that sums it up, then the detail. A near-duplicate updates the older memory.
Inputs: content (required), kind, project.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 4 tools
Each tool maps to a clearly distinct operation in a memory lifecycle: search (recall), create/update (remember), retire (forget), and inspect visibility (access_status). There is no meaningful overlap; an agent can select the right tool from the user's intent alone.
recall, remember, and forget form a consistent single-verb pattern, but access_status breaks it as a verb_noun compound. Still readable and predictable enough that agents will not misroute based on naming.
Four tools is well-scoped for a focused memory service, with each tool earning its place in a compact read/write/delete/status surface. Nothing feels padded or missing at the count level.
Create, search, and delete are covered, and near-duplicate handling in remember effectively provides update. However, forget explicitly says memories can be restored later but no restore tool is exposed, and there is no explicit update operation outside near-duplicate detection—notable gaps for a memory lifecycle.
Maintenance
Related MCP Connectors
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Private persistent memory for Claude, ChatGPT & Gemini via MCP - semantic search, zero-code setup.
One memory for all your AI tools: Claude, ChatGPT, Cursor and any MCP client share the same notes.
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceGives Claude Desktop, Cursor, Cline, and other MCP-compatible AI tools persistent memory, enabling them to store and recall information seamlessly across sessions.9 npm1Apache 2.0- AlicenseAqualityDmaintenanceGives Claude Code, Claude Desktop, Cursor, VS Code Copilot, and other MCP-compatible tools persistent memory.1862 npm1MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI apps such as Claude, ChatGPT, Cursor, VS Code and Codex to share one searchable memory, so a fact told to one app can be recalled in another with the exact line, speaker and date it came from. Users sign in per app and can allow read-only or read-and-write access, saving, correcting or forgetting memories and disconnecting apps at any time.MIT
- AlicenseNot gradedqualityCmaintenanceGives every Claude surface (claude.ai, Desktop, mobile, Office add-ins, Claude Code) read and write access to the memories, transcripts and notes produced by Claude Code instances on all of your machines, with hybrid keyword and semantic search. Runs as a self-hosted remote MCP server with GitHub allowlist authentication, secret redaction and audit logging.MIT