ES Memory
An AI-first memory server for Claude and other MCP-compatible clients.
Objective-C · Core Data · CloudKit
What it does
ES Memory exposes a set of MCP tools to your LLM client, organized into four areas:
Storage — memory_store, memory_read, memory_update, memory_erase
Retrieval — memory_search (semantic, with adaptive recency weighting), memory_grep (literal or ICU regex pattern search, single-memory or full-corpus), memory_timeline, memory_tagged, memory_pipeline
Discovery — memory_discover (hubs, orphans, forgotten, and other archive structures)
Structure — memory_link, memory_unlink, memory_links, memory_tag, memory_untag, memory_tags, memory_author_list
Semantic search runs against vector embeddings computed on-device with a bundled BGE Small English embedder. Pattern search is literal or ICU regex, scoped by tag when needed. Tags are deliberately curated — every tag’s existence is an authorial judgment, not an extraction.
Personas
One ES Memory instance can host multiple AI personas — Claude, and any others you add — each with its own scoped slice of a single shared archive. Every persona binds a listening port, and the port a request arrives on is its identity: authorship is stamped from the channel rather than asserted by the client, so misattribution and name-drift are structurally impossible.
Memory Scope
The app includes a visual layer that renders the archive as a force-directed graph. Nodes are memories, edges are explicit links and similarity connections, color encodes access frequency. A second tab shows tags as an Archimedean spiral, sized by frequency.
Why Objective-C
ES Memory is written in Objective-C throughout — a deliberate choice, not a legacy constraint. Core Data, CloudKit, and GCDWebServer compose cleanly in Objective-C in ways that Swift’s strict type system makes awkward; the dynamic dispatch model fits a server that routes heterogeneous MCP tool calls at runtime. The codebase has no Swift dependencies and no bridging headers.
The practical consequence: the contributor surface is small by design. This is not a project looking for pull requests. It is a working instrument, published so that developers who want to understand the architecture can read it.
Install
- macOS 26 (Tahoe) or later
- Claude Desktop, or any MCP-compatible client
Download the latest signed release from GitHub Releases. The DMG contains ES Memory.app, the ES Memory Bridge (installs into Claude Desktop), and ES Memory Skills.
Source
ES Memory is fully open source under the MIT license. Read the code on GitHub.