SuperAPI AI Directory

localkeep

Local-first chronological memory: write dated, editable memory banks in a local UI, and Claude recalls them on demand via SQLite FTS5.

Open website

About this tool

LocalKeep is a local temporal memory layer for chatbots, whose core goal is to give users direct control over what the model remembers about them. It does not rely on cloud-based memories that the model fabricates on its own and that users cannot edit; instead, it lets users create titled, dated, editable memory stores on their own machine, and manage these entries locally through a Hub UI on localhost. When a conversation needs prior context, Claude queries the local data through the native MCP (Model Context Protocol) connector.

Purpose and the problems it solves: The memory features of consumer-grade AI chat applications often provide only vague, general impressionistic summaries, lack true temporal reasoning ability, struggle to accurately recall "what happened, on which day, and with whom it was related," and cannot understand the causal and temporal relationships between events. At the same time, such memories are usually a black box: users cannot decide what the model remembers, how it interprets it, or even edit it. LocalKeep replaces the timeline fabricated by the model with a set of "sources of truth" strictly arranged in chronological order, and gives users full editorial control: you write the entries, you anchor the dates, the data is stored on your own machine, and Claude serves only as a query engine.

Main capabilities:

  • Local Hub UI: A lightweight, customizable local interface for managing dated memory stores. The interface deliberately adopts a retro Windows 95 / MS Paint style and offers adjustable interface elements, emphasizing that this is a private offline workspace.
  • MCP server: An MCP service that Claude Desktop can invoke, used to retrieve memories on demand.
  • Local storage: Memories are stored by default in ~/.localkeep/localkeep.db (when installed via pip), and can be overridden via LOCALKEEP_DATA_DIR or LOCALKEEP_DB_PATH; when running from a source checkout, the database is located at data/localkeep.db (already gitignored). Theme colors are stored in the browser's localStorage. Refreshing the Hub page or restarting localkeep-hub will not delete the memory store; only deleting the database file will.
  • Retrieval is based on SQLite FTS5.

How to use:

  1. Register the MCP server in Claude Desktop (claude_desktop_config.json). If the GUI is in localkeep-mcp cannot be found in PATH; you can use the absolute path obtained via which localkeep-mcp (the Hub's Connect panel will copy that path for you).
  2. Make Claude automatically use LocalKeep (important): Claude will not reliably call MCP tools unless Personal preferences are also set. The path is Claude Desktop → Settings → Profile → Personal preferences; paste LocalKeep's instructions (Hub → Connect → Copy instructions, or see src/localkeep/assets/claude-personal-preferences.txt), then fully quit and reopen Claude. When LocalKeep requests to run a tool, click Always approve.
  3. Developing from source: run in the source checkout directory; the database is located at data/localkeep.db. Tests start from an empty database and create memories via a Hub form POST (the same path as a new user), for smoke checks of the Hub, retrieval, and MCP tools. Before submitting a PR, please run uv run pytest.

Use cases:

  • Users who are dissatisfied that chat memory cannot reliably retrieve dated facts and cannot understand timelines.
  • People who already maintain detailed personal diaries, work logs, or research archives and want to inject the exact text and historical data into prompts as an unshakable source of truth, rather than accepting the chat app's vague paraphrasing.
  • Users who trust Claude's reasoning ability but require the underlying context database to be stored locally.

Limitations and caveats:

  • It is not a standalone chat app, not a cloud-hosted memory API, and not a background tool that silently scrapes personal conversations.
  • Storage is local with no LocalKeep cloud, and chat content is not automatically scraped. However, retrieval still goes through Claude: when Claude calls the LocalKeep MCP tool, the matched memories are returned to that conversation and processed by Anthropic like any other tool result. LocalKeep does not upload the entire database, only sending the content returned by that query.
  • When querying memories via MCP,the retrieved text snippets are still sent to Anthropic during the session.
  • The license is MIT; see LICENSE for details. Bug reports and pull requests via GitHub Issues are welcome.