Skip to content
Conduit

mcp server

nlm-memory

Local-first non-linear memory OS for AI operators. One index across Claude Code, Codex, Cursor, Windsurf, Hermes, OpenCode, Aider, pi, and more — with an editable timeline.

pbmagnet4/nlm-memorycommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • Node.js 20 or newer
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "nlm-memory": {
      "command": "npx",
      "args": [
        "-y",
        "nlm-memory"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 25, 2026

Memory for agents that work across tools and projects

NLM indexes AI sessions into a local searchable store. Recover an earlier decision, inspect the source conversation, and mark outdated reasoning as superseded. An agent using one runtime can retrieve work captured from another.

Local-first. Source-backed. Correctable. SQLite is the default; PostgreSQL with pgvector is also supported. No NLM account is required for local use. Classification and embedding providers are configurable: choosing a remote provider sends relevant content to it. See data flow and security.

Install · Demo · Runtimes · API · Evidence · Roadmap

Release status

ChannelWhat you can use
Stable npm: 0.21.20Cross-runtime session capture, bounded session/context recall, source expansion and an editable timeline. Release notes.
Public prerelease: 0.21.21-rc.1Canonical property catalogs, explicit fact/session associations, repository-origin session references and property-filtered recall. Install explicitly with npm install -g nlm-memory@next. Stable npm does not contain these features. Prerelease notes.
Experimental, disabled by defaultAutomatic fact ownership and entity-name session associations. Evaluation found wrong-project matches; neither a subject label nor a project name inside a quote reliably proves ownership.

Full status and upgrade notes. Source availability is not a promise that an experimental feature has passed its evaluation gate.

Install

Node.js 22 or newer and an embedding/classification provider are required. The setup wizard helps configure providers and the runtimes you use.

npm install -g nlm-memory
nlm setup
nlm recall "why did we change the database?"

Open http://localhost:3940/ui to browse the timeline and search. macOS and Linux support managed daemon setup; Windows currently uses manual nlm start.

If you use local Ollama, make the configured classifier and embedding models available before indexing. A cloud classifier is optional, and receives session content. Configuration · Security.

What an agent can do

NeedTool or behavior
“What did we decide last time?”recall_sessions returns compact session summaries and continuation pointers.
“Show me the evidence.”get_session retrieves matching passages or bounded original transcript pages.
“What is the current value, and is there disagreement?”recall_context, recall_facts and get_fact_history expose structured facts, provenance and history. Inspect partial-coverage indicators.
“That earlier decision is obsolete.”mark_superseded records the replacement relationship; history remains inspectable.
“Only show memories associated with this project.”The prerelease accepts canonical property filters. Explicit assignments and repository relevance are separate from inferred fact ownership.

MCP over the local daemon's /mcp endpoint is the default connection. Automatic hooks depend on the runtime; capture support does not imply hook support. Per-prompt ambient recall is off by default on fresh installs. Runtime matrix and hooks · MCP/HTTP reference.

Try a safe demo

The project-memory demo runs on a disposable SQLite database using fictional Atlas and Beacon sessions. It demonstrates cross-runtime evidence, a superseded decision, a property filter, and an explicit ownership correction.

git clone https://github.com/pbmagnet4/nlm-memory.git
cd nlm-memory
npm ci
npm run demo:memory

No classifier, embedding provider, daemon or real transcript is used. The demo calls the storage APIs directly; it is a behavior walkthrough, not an end-to-end capture or answer-quality benchmark.

What has been measured?

EvidenceWhat it establishesLimits
Historical LongMemEval-S run: 97.2% R@5, 500 queriesRetrieval of annotated source sessions on that benchmark/configuration.Not generated-answer accuracy or a guarantee for another model/corpus.
Historical personal-corpus baseline: 36/40 queries retrieved within five hitsRecovery on a small curated query set.Private corpus; small and selected sample.
Property attribution evaluationSubject-only and quote-name matching produced wrong-owner assignments.Automatic ownership remains gated; coverage is not precision.
SQLite/PostgreSQL contracts and CIRegression checks for source integrity, property isolation and transport behavior.Passing tests do not establish retrieval usefulness.

Methods, dates, configuration and limitations: evaluation guide. Older measurements describe their recorded versions, not an assumed score for current main.

Documentation

Development

npm ci
npm run typecheck
npm test
npm run build
npm run verify:codex-release -- --check-packed

dist/ is generated and not tracked. The packed package contains the distributable and plugin assets. PostgreSQL contracts are opt-in locally through NLM_PG_TEST_URL; GitHub CI provides pgvector and runs that suite.

Keep examples synthetic and never include a real memory database, provider credentials or private transcripts in an issue or pull request. Contribution guide.

Apache 2.0 — LICENSE.

↑↓ navigate openesc close