NO CONTENT TELEMETRY · v0.2.0 · APACHE-2.0

local·mem

your agent's memory, written to a file you own.

For devs. One local file. Claude Code Cursor Cline Windsurf Codex CLI Claude Desktop read the same memory.

$ npm install -g localmem-mcp
Star Fork Follow @VJ-yadav 1 days public since 5 Jun 2026
Set up

Two commands.
Any MCP client.

Installs a single Rust binary into /usr/local/bin. Starts a local HTTP core on :8765. Wires up any MCP-compatible agent with one more line.

1
Install the binary
$ curl -fsSL https://localmem.org/install | sh
One static Rust binary · macOS + Linux · ~12 MB
2
Start the core
$ localmem init && localmem fetch-model && localmem serve &
Creates ~/.localmem · fetches the 30 MB embedder · binds :8765
3
Wire up any agent
One-command install per client
Claude Desktop
Claude Code
Cursor
Cline
Windsurf
Codex CLI
Each command writes the right config block for that client. Restart the client; the 6 memory_* tools appear.
Or paste the universal MCP JSON
{ "mcpServers": { "localmem": { "command": "npx", "args": ["-y", "localmem-mcp"] } } }
Drop into any client that reads mcpServers. Defaults to talking to localhost:8765.
/ The 30-second demo

Every other memory product is a database.

We're an event log with caches.

# Write a memory
$ localmem write --kind preference --content "I prefer Rust for systems work"

# Search for it
$ localmem search "what language do I prefer"
[1] I prefer Rust for systems work  score=0.412  id=01K...

# Now blow away every derived store
$ rm -rf ~/.localmem/derived

# Rebuild everything from the event log alone
$ localmem replay

# Search again, same result, fully recomputed from events.jsonl
$ localmem search "what language do I prefer"

~/.localmem/events.jsonl is the single source of truth. DuckDB, LanceDB, Tantivy. All recomputable caches.

/ What's inside

Narrow MCP surface. Wide CLI surface.

Auditable trust substrate underneath both.

moat

Event log = source of truth

Append-only events.jsonl. localmem replay rebuilds every derived store deterministically. cat-able forever.

forget

Auditable forgetting

"Delete" emits a forget event. History stays intact. localmem audit <id> traces every touch.

bitemporal

Bitemporal facts

Every fact has valid_from, valid_to, retired_at. Ask "what did we believe last Tuesday?" with --at-time.

smart

Active contradiction resolution

Higher-confidence facts on the same (subject, predicate) retire the prior live fact and emit an Update event.

tags

Container tags

Scope captures with --tags project=X. Reserved tags: retention=ephemeral, visibility=private.

kinds

Closed-core kinds

fact / preference / decision / constraint / todo / note. Per-kind recency decay: preferences age slower than todos.

mcp

MCP-native

6 tools, 2 prompts, 4 resources. Works with every MCP-compatible client. Generic config recipe for the rest.

import

Import wizard

First-run scan of ~/Downloads finds ChatGPT and Claude export ZIPs. One-step migration in.

peer

CLI + server are peers

Either can run without the other. They share the filesystem using each store's native concurrency model.

/ How it compares

Narrow on purpose.

Trust substrate underneath everything.

Trait localmem Local-first peers Cloud SaaS
Where your data livesYour machineYour machineTheir cloud
Plaintext leaving your machineNeverVaries (some default-on telemetry)Always
forget is auditableEvent in the logApp-level deleteTrust the vendor
Recoverable from a plain-text fileYes (localmem replay)NoNo
RuntimeSingle static Rust binaryNode + framework depsCloud SaaS
MCP tool count6 (narrow + auditable)25–50+ (wide)varies
LicenseApache-2.0 (non-relicensable)Mostly Apache-2.0Mixed
If the project diesYour memory worksYour memory worksYour memory is gone
/ Works everywhere MCP works

One-command setup for five clients.

Generic MCP config recipe for everything else.

Claude Desktop --client claude
Claude Code --client claude-code
Cursor --client cursor
Cline --client cline
Windsurf --client windsurf
Continue generic
Zed generic
Codex generic
OpenCode generic
Aider generic
/ Use cases

Concrete patterns that solve a real pain day one.

Not just "AI memory." Specific workflows.

"Stop re-explaining things to my agents"

Two or more AI agents that lose context between sessions. Install once, wire both via MCP, anything one learns is available to the other.

SHARED_MEMORY_FOR_AGENTS →

Per-project memory, no cross-leak

Personal facts in ~/.localmem, per-repo facts in <project>/.localmem. Drop a .mcp.json in any repo and that project's agents see only that project's memory.

Per-project setup →

Audit what your agent knows

localmem profile <subject> synthesizes a markdown profile. localmem audit <fact_id> walks the event log to show every event that touched a fact. No black boxes.

CLI surface →

Time-travel your memory

Bitemporal facts mean you can ask "what did I believe last Tuesday?" with --at-time RFC3339. Facts have valid_from, valid_to, retired_at.

Concepts →
/ License

Apache-2.0.

The Rust core, the MCP server, the event-log schema, and every importer are Apache-2.0. Your data sits in ~/.localmem/. The OSS core never makes a network call to complete a memory op.

Your content does not leave your machine. There is no path in which it does.

v0.2.0 status. Prebuilt binary ships for macOS Apple Silicon. Intel Mac, Linux x86_64, and Linux aarch64 build cleanly from source today. Cross-compiled binaries for the rest land in v0.2.1.