LongMemory README

The project's README from github.com/CaviraOSS/LongMemory. As one markdown file: README.md.

LongMemory

Durable, temporal, governed memory for AI agents. Not just RAG. Not just a vector database. Local-first and self-hosted.

npm PyPI VS Code Container License

LongMemory dashboard

LongMemory is a cognitive memory engine for LLM applications and autonomous agents.

Your model stays stateless. Your application stops being amnesiac.


1. Use It in 10 Seconds

Install as a library

npm install longmemory
import { createMemory } from 'longmemory';

const memory = await createMemory();
await memory.ingest({
    user_id: 'alice',
    text: 'I prefer TypeScript for backend services',
});

const result = await memory.recall({
    text: 'What language does Alice prefer?',
    mode: 'strict',
});

console.log(result);
await memory.close();

No service or external database is required for in-memory use.

For optional evidence-grounded answers with your own model, use the exported answer_from_evidence adapter. It accepts authorized evidence, validates cited excerpts, and makes at most one model call; ordinary recall is unchanged. See docs/answering.md for policies, limits, and integration.

Persist with SQLite

const memory = await createMemory({
    store: 'sqlite',
    db_path: './longmemory.db',
    tenant_id: 'acme',
    user_id: 'alice',
});

Reopening the same database restores nodes, worlds, entities, edges, temporal history, grounding, and lifecycle state.

Install the CLI

npm install --global longmemory
longmemory init
longmemory recall "current project priorities" --mode associative

Call a self-hosted server from Python

pip install longmemory-sdk
from longmemory import LongMemory

memory = LongMemory(
    "http://127.0.0.1:7331",
    api_key="change-me",
    user_id="alice",
)

memory.ingest("I prefer TypeScript")
result = memory.recall("What language do I prefer?", mode="strict")

The Python package is a zero-dependency HTTP client. The Hydrograph engine remains in the self-hosted TypeScript service. See docs/python-sdk.md.


2. Run as a Service

From source

git clone https://github.com/CaviraOSS/LongMemory.git
cd LongMemory
corepack enable
pnpm install --frozen-lockfile
pnpm build
pnpm start

The API listens on http://127.0.0.1:7331 by default.

Docker

docker run --rm \
  -p 7331:7331 \
  -v longmemory-data:/data \
  -e LONGMEMORY_API_KEY=change-me \
  ghcr.io/caviraoss/longmemory:latest

Docker Compose

cp .env.example .env
docker compose up --build -d longmemory

Include the dashboard:

docker compose --profile ui up --build -d

3. Why LongMemory

Most systems called memory are retrieval pipelines:

  1. Split text into chunks.
  2. Embed the chunks.
  3. Return the nearest vectors.

That does not establish what was true at a particular time, whether a new fact superseded an old one, which source is authoritative, who may see it, or why a result belongs in context.

LongMemory models those concerns directly:

See Why.md for the design rationale.


4. Recall Modes

const strict = await memory.recall({
    text: 'What is the current deployment region?',
    mode: 'strict',
});

const historical = await memory.recall({
    text: 'What was the deployment region in January?',
    mode: 'historical',
    valid_time: Date.UTC(2026, 0, 15),
});

const associative = await memory.recall({
    text: 'Incidents related to the payment migration',
    mode: 'associative',
});

const grounded = await memory.recall({
    text: 'Which production endpoint is currently live?',
    mode: 'world_grounded',
});

Strict recall applies temporal, contradiction, contract, confidence, and grounding gates. Historical recall preserves superseded truth. Associative recall follows semantic, lexical, entity, activation, and graph signals. World-grounded recall requires current external evidence.


5. Features


6. MCP and Agent Integrations

Start local stdio MCP:

longmemory mcp --db .longmemory/project.db --project current

Expose authenticated Streamable HTTP MCP:

LONGMEMORY_API_KEY=change-me longmemory serve --mcp-http

LongMemory exposes 13 high-level governed tools plus readable resources and agent workflow prompts. Tool arguments cannot override server-bound runtime identity.

Installable integrations include:

See integrations/README.md and docs/mcp.md.


7. Temporal and Project Memory

import { createProjectMemory } from 'longmemory';

const projects = await createProjectMemory({
    tenant_id: 'cavira',
    organization_id: 'CaviraOSS',
    project_id: 'longmemory',
    name: 'LongMemory',
    store: 'sqlite',
    db_path: './longmemory.db',
});

await projects.ingestProjectEvent('longmemory', {
    kind: 'decision',
    topic: 'persistence',
    text: 'Use SQLite for local-first persistence',
    source_type: 'architecture_note',
});

const context = await projects.getProjectContext('longmemory', 'prepare the next release');

Project context combines relevant architecture, current decisions, open tasks, failures, code facts, matched Skills, conflicts, and governed asset loadouts under one token budget.


8. CLI

longmemory init
longmemory tui
longmemory status --memories 20 --json
longmemory ingest "Remember the rollback procedure" --type procedure
longmemory recall "What is the rollback procedure?" --mode associative
longmemory memory list --limit 50
longmemory project context "prepare the next release"
longmemory maintenance decay --all
longmemory maintenance reinforce <memory-id>
longmemory skill match "run the release checklist" --agent reviewer
longmemory asset loadout "prepare the release" --agent reviewer --framework codex
longmemory code impact createMemory
longmemory detect
longmemory session discover --from claude-code
longmemory port --from claude-code --to longmemory --all
longmemory session wiki --from gemini-cli --all --name "Project knowledge"
longmemory serve --mcp-http

Finite commands emit stable JSON outside a TTY or when --json is supplied. The session porter reads supported coding-agent stores without modifying them. See docs/cli.md.


9. Dashboard and VS Code

The Next.js dashboard provides health, memory browsing, ingestion, search, project selection, activity, decay, settings, timelines, and memory-aware chat through a same-origin API proxy.

pnpm --dir dashboard build
pnpm --dir dashboard start

The VS Code extension provides an activity-bar browser, status bar, recall, project context, explanation, reinforcement, explicit decay, session import, and reviewed AI-change capture.

pnpm extension:package

The generated package is apps/vscode-extension/longmemory-vscode-0.2.0.vsix.


10. Architecture

graph TB
  INPUT[Events, documents, sessions] --> INGEST[Immutable ingest pipeline]
  INGEST --> GRAPH[(Hydrograph)]
  GRAPH --> STRICT[Strict and historical recall]
  GRAPH --> ASSOC[Associative recall]
  GRAPH --> GROUND[World-grounded recall]
  GRAPH --> PROJECT[Project memory and governed assets]
  GRAPH --> SQLITE[(SQLite)]
  STRICT --> CONTEXT[Explainable bounded context]
  ASSOC --> CONTEXT
  GROUND --> CONTEXT
  PROJECT --> MCP[MCP tools, resources, prompts]
  CONTEXT --> API[Library, CLI, HTTP]
  MCP --> AGENTS[Agents, IDEs, automation]
  API --> UI[Dashboard and VS Code]

Read ARCHITECTURE.md and docs/architecture.md for subsystem details.


11. Deployment Options

Platform Configuration What it deploys
Docker Dockerfile API and Streamable HTTP MCP
Docker Compose docker-compose.yml API/MCP plus optional dashboard
Heroku app.json Containerized API/MCP
Railway railway.json Containerized API/MCP
Render render.yaml API/MCP with persistent disk
DigitalOcean .do/spec.yaml App Platform API/MCP service
Vercel vercel.json Dashboard; configure LONGMEMORY_API_URL
Windows start-longmemory.ps1 Background local API/MCP process

For hosted API deployments, set LONGMEMORY_API_KEY, mount persistent storage at /data, and terminate TLS at the platform edge. Vercel hosts only the stateless dashboard and requires a separately deployed LongMemory API.


12. Benchmarks

pnpm bench
pnpm bench:ci
pnpm bench:full

The benchmark harness publishes explicit manifests, dataset completion, evidence metrics, answer judgments, temporal categories, latency percentiles, and N/A reasons. Official scorecards fail closed on incomplete datasets or semantic embedding fallback. See benchmarks/README.md.


13. Migration

Import supported SQLite, JSON, or JSONL memory:

longmemory migrate \
  --from ./legacy.db \
  --to ./longmemory.db \
  --report ./migration-report.json

Import coding-agent conversations as governed Chat Memory:

longmemory port --from codex --to longmemory --all

See MIGRATION.md and docs/migration.md.

Legacy package migration:

npm uninstall openmemory-js && npm install longmemory
pip uninstall openmemory-py && pip install longmemory-sdk

openmemory-js@2 and openmemory-py@2 are forwarding bridges for existing installations. New applications should use longmemory and longmemory-sdk directly. PyPI's unrelated longmemory name is owned by another project, so the official distribution is longmemory-sdk while the import remains longmemory.


14. Release and Operations

corepack enable
pnpm install --frozen-lockfile
pnpm release:check
pnpm pack
pnpm extension:package

release:check validates branding, types, integration manifests, the benchmark smoke gate, the root build, extension build, and dashboard production build.

Useful Make targets:

make install
make build
make check
make docker-up
make dashboard

15. Security

LongMemory is local-first, but network deployment still requires explicit controls:

Report vulnerabilities privately as described in SECURITY.md.


16. Contributing

Issues and pull requests are welcome. Read CONTRIBUTING.md, GOVERNANCE.md, and CODE_OF_CONDUCT.md before contributing.


17. License

LongMemory is licensed under the Apache License 2.0. The separately published n8n community node uses MIT as required by n8n's strict package validator.

Contributors

nullure
Morven
dontbanmeplz
Chis
amihos
Hossein Amirkhalili
DKB0512
DKB
stevo1403
Stephen Adebayo
mameikagou
mrlonely
haosenwang1018
Sense_wang
recabasic
Elvoro
zfaustk
Clio
suyua9
suyua9
vincenzopalazzo
Vincenzo Palazzo
msris108
Sriram M
fparrav
Felipe Parra
DoKoB0512
DoKoB0512
whiterabb17
MistrHyde
octo-patch
Octopus
therexone
Ayush Singh
kishan0725
Kishan Lal
pc-quiknode
Peter Chung
muhammad-fiaz
Muhammad Fiaz
jasonkneen
Jason Kneen
Hchunjun
shan
naabakkcrypto
Naabakk
mikemikimike
mikemikimike
mgajewskik
Maciej Gajewski
ajitam
Matija Urh
machj8968-lab
machj8968-lab
buyua9
buyua9
aziham
Hamza
oantoshchenko
Oleksandr Antoshchenko
lwsinclair
Lawrence Sinclair
jungdaesuh
jungdaesuh
josephgoksu
Joseph Goksu
EikoocS
EikoocS
Dhravya
Dhravya Shah
dflor003
Danil Flores
DAESA24
DAESA24
ammesonb
Brett Ammeson
auto-pr-bot
auto-pr-bot
anush008
Anush
annelchavez-11594
Annel Chavez
atao2004
Anna Tao

LongMemory (CaviraOSS/LongMemory)

Searching Database…

这是什么?LongMemory 是一个认知记忆引擎,为大语言模型应用和自主智能体提供持久、带时间性、受治理的记忆,而不是让它们在会话之间毫无状态。
这是我导入的库,还是需要运行的服务器?两者都是:简单场景下可以作为进程内 TypeScript 库使用、无需外部数据库;也可以作为自托管的 HTTP/MCP 服务运行(源码、Docker 或 Docker Compose),并通过零依赖的 Python 客户端调用。
怎么让它跑起来?可以作为库安装以便快速进行内存内使用,也可以通过源码、Docker 或 Docker Compose 运行并把数据持久化到 SQLite;重新打开同一个 SQLite 文件即可恢复全部记忆状态。
使用它需要 OpenAI 或 Gemini 的 API 密钥吗?嵌入功能不绑定任何一家服务商——你可以使用 OpenAI 兼容 API、Gemini、AWS Bedrock、Ollama、Siray 或本地 HTTP 模型,因此可以完全用 Ollama 在本地运行,不需要任何 API 密钥。
把它暴露到网络之前需要锁紧哪些东西?一旦部署为网络服务,默认情况下没有任何安全防护:你必须用 API 密钥保护 API/MCP 路由,限制允许的来源,在边缘终结 TLS,并把嵌入/连接器的凭证挡在仓库之外。
我的记忆数据实际存放在哪里?默认情况下,一切都存储在本地 SQLite 中,而不是发送给第三方记忆服务,符合它本地优先、自托管的设计。
LongMemory 与典型的 RAG 流水线有什么不同?它不只是切分文本然后返回最近邻向量,而是把记录时间与有效时间分开,保持记忆不可变,使用带类型的可执行图,并强制执行治理以及衰减、再巩固等生命周期规则。
它能导入我现有的 Claude Code 或 Codex 会话历史吗?可以。它的会话搬运器能读取受支持的编程智能体存储(Claude Code、Codex、OpenCode、Gemini CLI、Copilot Chat、Cline、原始框架日志),不修改原数据,并把它们转化为受治理的聊天记忆。
LongMemory 支持哪些召回模式?严格召回会应用时间、矛盾、契约、置信度和事实依据等门控;历史召回保留被取代的旧事实;关联召回沿语义、词汇、实体和图信号展开;世界锚定召回则要求有当下的外部证据。
整个项目都在同一个许可证之下吗?核心引擎采用 Apache License 2.0,但单独发布的 n8n 社区节点采用 MIT,因为 n8n 的包校验器有此要求。
What are similar projects?claude-mem, m_flow, EverOS, memvid, mem0, MemOS, ruflo, claude-context
Creator
CaviraOSS
Size
4 MB
Stars
4.5K
Age
11mo
Commits · 90 Days