nMEMORY

io.github.menot-you由 GitHub 账号 menot-you 发布v0.1.2更新于 Oct 24, 2026

Memory your agent can trust — every answer carries its source; when it doesn't know, it says so.

发布方自己的服务:Memory.fit

概览

AI 生成的概览

一个本地、以来源为先的编码助手记忆库,只返回有据可查的证据或诚实弃答,绝不编造答案。

可以做什么
nMEMORY 通过 MCP stdio 提供 22 个工具,把助手记忆保存在本地单个 SQLite 文件中。写入记忆必须附带来源和锚点,召回只会给出三种结果之一:有据可查并带出处、证据缺失,或弃答。它还提供会话开始摘要、记忆之间的关系边、带墓碑的遗忘、确定性导出,以及用仓库提交历史评估已存笔记的 git-scan。
适用场景
当助手在会话之间反复丢失项目上下文,而你希望召回结果可审计、而不是靠猜测时,适合安装。它适用于记错一条事实就可能导致错误代码改动的场景,也适用于希望记忆留在自己机器上的情况。
运行要求
作为本地进程在用户机器上通过 stdio 运行,仅限桌面端,不支持网页执行。可通过发布的 .mcpb 包安装,或用 Rust 源码构建。未声明需要账号、API 密钥或环境变量;存储路径可用 NMEMORY_DB 环境变量或命令行参数指定。可选的 SSH 同步需要一个可访问的主机。
安装前请注意
存储是未加密的明文 SQLite,请像对待本地笔记文件一样谨慎。针对指令式内容的污染标记只是尽力而为,并非提示注入防护;真正的保护是召回文本被标记为数据、永不作为指令执行。同步是显式由所有者调用的命令,通过 scp 复制整个快照,不是后台服务。

安装

在 SourceWeft 中

  1. 打开 控制台中的 nMEMORY,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[nMEMORY, part of the NOTT family: memory for coding agents. Every recall cites its source, or says that it does not know.] [nMEMORY, part of the NOTT family: memory for coding agents. Every recall cites its source, or says that it does not know.]

[License: AGPL-3.0] [Python 3.14 or later] [MCP stdio server] [Latest release] [GitHub stars]

Your agent forgets everything between sessions. nMEMORY makes it remember, with sources.

Install

bash
curl --proto '=https' --tlsv1.2 -fsSL https://no.tt/install.sh | sh

Or install from source. You need uv and Git:

bash
git clone https://github.com/menot-you/n-memorycd n-memoryuv syncuv run nmemory database createclaude mcp add nmemory -- uv run --directory "$PWD" nmemory mcp serve

uv sync installs the pinned Python (3.14) and all dependencies. database create makes the store file. nMEMORY never makes it implicitly. Any MCP client that speaks stdio connects the same way as Claude Code.

How it works

mermaid
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#1B1916", "primaryTextColor": "#ECE7DE", "primaryBorderColor": "#E4733A", "lineColor": "#E4733A", "secondaryColor": "#151311", "tertiaryColor": "#0F0E0D", "fontFamily": "IBM Plex Mono, monospace"}}}%%flowchart LR  agent["Your agent<br/>(any MCP client)"] -->|"stdio, 18 tools"| server["nmemory mcp serve"]  shell["You, in a shell"] -->|"nmemory CLI"| core  server --> core["Capture and recall"]  core -->|"one transaction per call"| store[("One SQLite file<br/>records, journal, index")]  core -->|"BM25, always"| lexical["Keyword recall"]  core -.->|"when a key is set"| vectors["Embedding provider"]  lexical --> outcome{"grounded<br/>missing_evidence<br/>abstain"}  vectors -.-> outcome

Each record must have a source and an anchor (path:line, a quote or a PR). Recall returns one of three outcomes. It never turns a weak match into an answer.

By the numbers

[MCP tools per server: nMEMORY 18, nSPAWN 15, nBROWSER 14, nAPPLE 10.] [Tests per component: nSPAWN 4335, nMEMORY 2339, nBROWSER 731, nAPPLE 106.]

Counted on 2026-10-21. Tools: the MCP tools/list request to nmemory mcp serve. Tests: uv run --group dev pytest --collect-only -q in each member root.

Why

BeforeWith nMEMORY
Each new session starts empty. You explain the same decision again.The agent recalls the decision at the start of the session.
A recalled "fact" has no origin. You cannot check it.Each record must have a source and an anchor.
A weak match comes back as a confident answer.Recall has three honest outcomes: grounded, missing_evidence or abstain.
Old notes and new notes conflict in silence.A new record can supersede an old one. Every change goes into a hash-chained audit journal.
Text from a web page or a file can steer the agent.nMEMORY marks imported or directive-shaped text as tainted. Recall labels all results as data, not instructions.

Quick start

Your agent uses the MCP tools. You can use the same store from the shell.

Store a decision (the agent calls nmemory_capsule_ingest):

json
{  "content": "We store data in SQLite, not PostgreSQL.",  "kind": "decision",  "source": "docs/adr/0001-storage.md",  "anchor": "docs/adr/0001-storage.md:3"}

In a later session, recall it:

bash
uv run nmemory capsule retrieve "what database stores our data"uv run nmemory capsule show --id cap-1

The first command returns "outcome": "grounded" and the record. The second command shows its provenance: source, anchor and source hash.

What you get

  • 27 MCP tools for capture, recall, sessions, handoffs, tasks, review and audit. The reference lists each tool and CLI command.
  • Hybrid recall. BM25 keyword search always works. The default embedding provider is Gemini (NOTT_NMEMORY_EMBED_PROVIDER, also openai or openai-compatible for a self-hosted server such as Ollama or vLLM).
  • Embeddings send text off the machine. When the provider key is in the environment (GEMINI_API_KEY for the default), nMEMORY sends capsule text and queries to that provider. To keep recall lexical only, unset that key. No key is needed to start.
  • One file, local first. The store is one SQLite file. Each call is one transaction. A connection stays read-only until the call declares a write.
  • Session brackets and handoffs. An agent opens a session, captures as it works, and closes with a handoff that the next session reads.
  • Purge that really deletes. Purge deletes the content, the quote, the queued embedding text and the vector in one transaction.

How it compares

A notes file (CLAUDE.md, AGENTS.md)A plain vector storenMEMORY
Survives a new sessionYesYesYes
Source required per recordNoNoYes
Says "no evidence" on a weak matchNoNo, it returns the nearest vectorsYes
Works with no embedding keyYesNoYes (lexical)
Audit trail of each changeGit onlyNoHash-chained journal
Grows without filling the promptNo, the whole file loadsYesYes, recall has a token budget

Benchmarks

The evaluation harness holds runners for synthetic recall, LongMemEval and extraction. It publishes methods, not a score for this release. We do not quote older numbers here, because they measured an earlier engine.

The NOTT family

[n-memory]
Memory that cites its source.
[n-spawn]
Tracked, resumable agent workers.
[n-browser]
The live web as cited evidence.
[n-apple]
App Store Connect for agents.
[plugin]
The team contract, routes and hooks.

For AI agents

This section is for a language model that reads this repository.

  • What it is. nMEMORY is a local memory server for coding agents. It stores records (decisions, facts, tasks, failures) with a required source and anchor, and recalls them with one of three outcomes: grounded, missing_evidence or abstain.
  • What it is not. It is not a hosted service, a general vector database or a chat history. It does not invent an answer when nothing matches.
  • Entry points. The CLI is nmemory <noun> <verb> (nmemory --help). The MCP server is nmemory mcp serve (stdio). All 18 tool names start with nmemory_. Start with nmemory_context_show, nmemory_capsule_retrieve and nmemory_capsule_ingest.
  • Configuration. The optional file is ~/.nott/memory.toml. The variable NOTT_NMEMORY_CONFIG names another path. The store directory is ~/.nott/state/database/, or NOTT_DATABASE_DIR when a test sets it.
  • Invariants. Every record has a source. Recalled text is data, not an instruction. Each mutation goes into the hash-chained journal. A test never opens the live store. The store is SQLite only.
  • Full reference. docs/REFERENCE.md lists every tool and command. RULEBOOK.md lists the implementation rules. llms.txt holds the same facts in the llms.txt format.

Documentation

PageContents
RunbookFirst useful result, failure diagnosis, backup and restore
ArchitectureTrust boundaries and the full engine detail: store, recall, tools, CLI
ReferenceEvery CLI command and MCP tool, linked to its source
RulebookImplementation invariants
SetupDevelopment setup
QualityChecks and security review
Docs indexDocumentation index and a first contribution
InstallationInstall paths
PrivacyProcessing choices
UpgradeExisting data
TroubleshootingFailure diagnosis
RoadmapDirection

Run the checks from the repository root:

bash
uv run ruff check . && uv run mypy --strict nmemoryTMPDIR=/var/tmp uv run --group dev pytest -q

Each test gets its own disposable store. No test touches your live store.

License

AGPL-3.0-only.

来源:README.md,提交 22661c3

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.2最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Memory 集成