LongMemory
Memory server
Created by CaviraOSS
Published in CaviraOSS/LongMemory. Publisher page
4,573 GitHub stars
What it is
LongMemory Hydrograph TypeScript package: library, CLI, self-hosted API server, and benchmark harness.
AutoGineer overview, from the brain’s own files
LongMemory is a cognitive memory engine designed to provide AI agents with durable, governed, and temporal recall. Unlike standard RAG pipelines that rely on simple vector similarity, LongMemory utilizes a Hydrograph substrate to manage immutable nodes, executable edges, and temporal truth. It supports complex recall modes including strict, historical, associative, and world-grounded retrieval. The system is built for local-first deployment using SQLite, offering a self-hosted API server, CLI, and native integrations for various agent frameworks, IDEs, and automation tools. It enforces governance policies across projects, users, and teams, ensuring that memory remains grounded, explainable, and context-aware.
How it works
Memory model: LLM wiki
AutoGineer overview, from the brain’s own files
LongMemory operates as a memory server that stores data in a local SQLite database. It ingests events, documents, and session data into a Hydrograph structure. When an agent needs information, the system performs recall based on specific modes—such as strict, historical, or associative—to retrieve relevant, token-bounded context. The engine supports governance by scoping memory to specific projects, tenants, or users. It provides an API for agents to interact with this memory, and includes tools for maintenance, such as decay and reinforcement, to manage the lifecycle of stored information.
| Folder | Role | Files |
|---|---|---|
| .github | agent-config | 13 |
| docs | docs | 34 |
| packages | source-code | 7 |
| src | source-code | 340 |
| tools | scripts | 5 |
| .agents | folder | 1 |
| .do | folder | 1 |
| apps | folder | 19 |
| benchmarks | folder | 32 |
| dashboard | folder | 34 |
| integrations | folder | 47 |
Requirements
Apps: Docker
Runtimes: Node.js >=20
Databases: SQLite
API keys (by name): AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN, AZURE_DEVOPS_TOKEN, BITBUCKET_TOKEN, GEMINI_API_KEY, GITHUB_TOKEN, GITLAB_TOKEN, GOOGLE_ACCESS_TOKEN, LINEAR_API_KEY, LONGMEMORY_API_KEY, MICROSOFT_GRAPH_TOKEN, NOTION_API_KEY, NVIDIA_API_KEY, OM_API_KEY, OM_GEMINI_API_KEY, OM_OPENAI_API_KEY, OM_SIRAY_API_TOKEN, OPENAI_API_KEY, SIRAY_API_TOKEN, SLACK_BOT_TOKEN
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Google Antigravity, Kiro, OpenCode, Amp, Roo Code, Cline, JetBrains Junie, Devin (ex-Windsurf)
Set it up
This brain runs code automatically: 1 script. Review Makefile before opening the folder in Claude Code. No step below turns a hook on for you.
Makefile:corepack enable; pnpm install --frozen-lockfile
- Not scanned by AutoGineerThe author’s README also describes installing it with Docker Compose. Read its install section: AutoGineer did not scan that path. https://github.com/CaviraOSS/LongMemory/blob/aec98ced33a7586a2fcd198a04bc38b5590750c4/README.md#2-run-as-a-service
- Not scanned by AutoGineerThe author’s README also describes installing it from a clone of its repository. Read its install section: AutoGineer did not scan that path. https://github.com/CaviraOSS/LongMemory/blob/aec98ced33a7586a2fcd198a04bc38b5590750c4/README.md#2-run-as-a-service
Created by CaviraOSS. Published in CaviraOSS/LongMemory. Licence: Apache License 2.0.
Usage
AutoGineer overview, from the brain’s own files
- Install as a TypeScript library for in-memory or SQLite-backed agent memory.
- Deploy as a self-hosted API server using Docker or Docker Compose.
- Use the CLI to ingest data, manage project context, or perform maintenance tasks.
- Connect to agent hosts via MCP (Model Context Protocol) for seamless integration.
- Use the Python SDK to interact with the memory server from Python-based agents.
- Visualize and manage memory through the provided Next.js dashboard or VS Code extension.
- “What was the deployment region in January?”
- The agent uses historical recall mode with a specified valid_time to retrieve the correct configuration from that period.
- “Prepare the next release.”
- The agent retrieves project context, including architecture notes, open tasks, and relevant code facts, to assist with release planning.
Documentation by CaviraOSS
<!-- __ __ ___ / / ____ ____ ____ _/ |/ /__ ____ ___ ____ _______ __ / / / __ \/ __ \/ __ `/ /|_/ / _ \/ __ `__ \/ __ \/ ___/ / / / / /___/ /_/ / / / / /_/ / / / / __/ / / / / / /_/ / / / /_/ / /_____/\____/_/ /_/\__, /_/ /_/\___/_/ /_/ /_/\____/_/ \__, / /____/ /____/ cavira oss (c) 2026 - nullure (c) 2026 ========================================================== file : README.md usage : introduces LongMemory, its architecture, integrations, and deployment options -->
LongMemory
Durable, temporal, governed memory for AI agents. Not just RAG. Not just a vector database. Local-first and self-hosted.
Image: npm Image: PyPI Image: VS Code Image: Container Image: License
LongMemory is a cognitive memory engine for LLM applications and autonomous agents.
Durable local-first storage with SQLite
Immutable content, provenance, and temporal truth
Strict, historical, associative, grounded, and multilingual recall
Explainable evidence selection and token-bounded context
Governed project memory, Skills, Chat Memory, LLM-Wiki, and CodeGraph
One TypeScript engine across npm, CLI, HTTP, MCP, dashboard, and VS Code
Native integrations for agent hosts, automation tools, and Python frameworks
Your model stays stateless. Your application stops being amnesiac.
1. Use It in 10 Seconds
Install as a library
npm install longmemoryimport { 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 associativeCall a self-hosted server from Python
pip install longmemory-sdkfrom 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 startThe 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:latestDocker Compose
cp .env.example .env
docker compose up --build -d longmemoryInclude the dashboard:
docker compose --profile ui up --build -dAPI and MCP:
http://127.0.0.1:7331Dashboard:
http://127.0.0.1:3000Health:
http://127.0.0.1:7331/health
3. Why LongMemory
Most systems called memory are retrieval pipelines:
Split text into chunks.
Embed the chunks.
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:
Temporal truth: recorded time and valid time are separate.
Immutable memory: content, vectors, hashes, and provenance are not rewritten by recall or decay.
Executable graph: typed relationships participate in recall and explanation.
Governance: project, tenant, user, team, role, agent, task, and framework scope are enforced.
Lifecycle: deterministic decay, explicit reinforcement, consolidation, compression, and reconsolidation.
Evidence: recall is bounded by relevance, contradictions, grounding, permissions, and token cost.
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
Hydrograph memory substrate with immutable nodes, executable edges, worlds, entities, facets, and traces.
Temporal reasoning with point-in-time truth, event ordering, supersession, and stale-evidence controls.
Multilingual memory with script detection, code switching, transliteration, and cross-language embeddings.
Project memory for architecture, decisions, tasks, conventions, failures, handoffs, and code impact.
Governed assets for Chat Memory, Skills, LLM-Wiki, and CodeGraph with lifecycle and ACL policy.
Session porter for Claude Code, Codex, OpenCode, Gemini CLI, Copilot Chat, Cline, and raw harness logs.
Connectors for repositories, local files, Markdown, web content, feeds, cloud documents, and provider APIs.
Embeddings through OpenAI-compatible APIs, Gemini, AWS Bedrock, Ollama, Siray, and local HTTP models.
Operational surfaces through HTTP, MCP, dashboard, VS Code, n8n, and framework-native MCP clients.
Auditable benchmarks for LongMemEval, LoCoMo, BEAM, retrieval quality, temporal behavior, and latency.
6. MCP and Agent Integrations
Start local stdio MCP:
longmemory mcp --db .longmemory/project.db --project currentExpose authenticated Streamable HTTP MCP:
LONGMEMORY_API_KEY=change-me longmemory serve --mcp-httpLongMemory exposes 13 high-level governed tools plus readable resources and agent workflow prompts. Tool arguments cannot override server-bound runtime identity.
Installable integrations include:
Claude Code plugin
Codex and ChatGPT desktop plugin
Gemini CLI extension
Agent Plugins 1.0 bundle for OpenClaw and compatible hosts
n8n community node usable as an AI Agent tool
Cline, Continue, and LibreChat configuration packs
Dify and Flowise native MCP setup
CrewAI, AutoGen, LangGraph/LangChain, OpenAI Agents SDK, and PydanticAI examples
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-httpFinite 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 startThe 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:packageThe 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:fullThe 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.jsonImport coding-agent conversations as governed Chat Memory:
longmemory port --from codex --to longmemory --allSee MIGRATION.md and docs/migration.md.
Legacy package migration:
npm uninstall openmemory-js && npm install longmemory
pip uninstall openmemory-py && pip install longmemory-sdkopenmemory-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:packagerelease: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 dashboard15. Security
LongMemory is local-first, but network deployment still requires explicit controls:
Protect API and MCP routes with
LONGMEMORY_API_KEY.Restrict allowed origins and terminate TLS at the edge.
Keep connector and embedding credentials outside repository files.
Treat recalled content as untrusted evidence, not authorization.
Preserve server-bound user, project, agent, and framework identity.
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.
Discussions: https://github.com/CaviraOSS/LongMemory/discussions
Changelog: CHANGELOG.md
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
<!-- readme: contributors -start -->
<table> <tbody> <tr> <td align="center"> <a href="https://github.com/nullure"> <img src="https://avatars.githubusercontent.com/u/81895400?v=4" width="100;" alt="nullure"/> <br /> <sub><b>Morven</b></sub> </a> </td> <td align="center"> <a href="https://github.com/dontbanmeplz"> <img src="https://avatars.githubusercontent.com/u/59851616?v=4" width="100;" alt="dontbanmeplz"/> <br /> <sub><b>Chis</b></sub> </a> </td> <td align="center"> <a href="https://github.com/amihos"> <img src="https://avatars.githubusercontent.com/u/35190548?v=4" width="100;" alt="amihos"/> <br /> <sub><b>Hossein Amirkhalili</b></sub> </a> </td> <td align="center"> <a href="https://github.com/DKB0512"> <img src="https://avatars.githubusercontent.com/u/23116307?v=4" width="100;" alt="DKB0512"/> <br /> <sub><b>DKB</b></sub> </a> </td> <td align="center"> <a href="https://github.com/stevo1403"> <img src="https://avatars.githubusercontent.com/u/34807365?v=4" width="100;" alt="stevo1403"/> <br /> <sub><b>Stephen Adebayo</b></sub> </a> </td> <td align="center"> <a href="https://github.com/mameikagou"> <img src="https://avatars.githubusercontent.com/u/116348059?v=4" width="100;" alt="mameikagou"/> <br /> <sub><b>mrlonely</b></sub> </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/haosenwang1018"> <img src="https://avatars.githubusercontent.com/u/167664334?v=4" width="100;" alt="haosenwang1018"/> <br /> <sub><b>Sense_wang</b></sub> </a> </td> <td align="center"> <a href="https://github.com/recabasic"> <img src="https://avatars.githubusercontent.com/u/102372274?v=4" width="100;" alt="recabasic"/> <br /> <sub><b>Elvoro</b></sub> </a> </td> <td align="center"> <a href="https://github.com/zfaustk"> <img src="https://avatars.githubusercontent.com/u/4340287?v=4" width="100;" alt="zfaustk"/> <br /> <sub><b>Clio</b></sub> </a> </td> <td align="center"> <a href="https://github.com/suyua9"> <img src="https://avatars.githubusercontent.com/u/273297082?v=4" width="100;" alt="suyua9"/> <br /> <sub><b>suyua9</b></sub> </a> </td> <td align="center"> <a href="https://github.com/vincenzopalazzo"> <img src="https://avatars.githubusercontent.com/u/17150045?v=4" width="100;" alt="vincenzopalazzo"/> <br /> <sub><b>Vincenzo Palazzo</b></sub> </a> </td> <td align="center"> <a href="https://github.com/msris108"> <img src="https://avatars.githubusercontent.com/u/43115330?v=4" width="100;" alt="msris108"/> <br /> <sub><b>Sriram M</b></sub> </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/fparrav"> <img src="https://avatars.githubusercontent.com/u/9319430?v=4" width="100;" alt="fparrav"/> <br /> <sub><b>Felipe Parra</b></sub> </a> </td> <td align="center"> <a href="https://github.com/DoKoB0512"> <img src="https://avatars.githubusercontent.com/u/123281216?v=4" width="100;" alt="DoKoB0512"/> <br /> <sub><b>DoKoB0512</b></sub> </a> </td> <td align="center"> <a href="https://github.com/whiterabb17"> <img src="https://avatars.githubusercontent.com/u/90134688?v=4" width="100;" alt="whiterabb17"/> <br /> <sub><b>MistrHyde</b></sub> </a> </td> <td align="center"> <a href="https://github.com/octo-patch"> <img src="https://avatars.githubusercontent.com/u/266937838?v=4" width="100;" alt="octo-patch"/> <br /> <sub><b>Octopus</b></sub> </a> </td> <td align="center"> <a href="https://github.com/therexone"> <img src="https://avatars.githubusercontent.com/u/27387245?v=4" width="100;" alt="therexone"/> <br /> <sub><b>Ayush Singh</b></sub> </a> </td> <td align="center"> <a href="https://github.com/kishan0725"> <img src="https://avatars.githubusercontent.com/u/36665975?v=4" width="100;" alt="kishan0725"/> <br /> <sub><b>Kishan Lal</b></sub> </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/pc-quiknode"> <img src="https://avatars.githubusercontent.com/u/126496711?v=4" width="100;" alt="pc-quiknode"/> <br /> <sub><b>Peter Chung</b></sub> </a> </td> <td align="center"> <a href="https://github.com/muhammad-fiaz"> <img src="https://avatars.githubusercontent.com/u/75434191?v=4" width="100;" alt="muhammad-fiaz"/> <br /> <sub><b>Muhammad Fiaz</b></sub> </a> </td> <td align="center"> <a href="https://github.com/jasonkneen"> <img src="https://avatars.githubusercontent.com/u/502002?v=4" width="100;" alt="jasonkneen"/> <br /> <sub><b>Jason Kneen</b></sub> </a> </td> <td align="center"> <a href="https://github.com/Hchunjun"> <img src="https://avatars.githubusercontent.com/u/11238835?v=4" width="100;" alt="Hchunjun"/> <br /> <sub><b>shan</b></sub> </a> </td> <td align="center"> <a href="https://github.com/naabakkcrypto"> <img src="https://avatars.githubusercontent.com/u/258882739?v=4" width="100;" alt="naabakkcrypto"/> <br /> <sub><b>Naabakk</b></sub> </a> </td> <td align="center"> <a href="https://github.com/mikemikimike"> <img src="https://avatars.githubusercontent.com/u/186855910?v=4" width="100;" alt="mikemikimike"/> <br /> <sub><b>mikemikimike</b></sub> </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/mgajewskik"> <img src="https://avatars.githubusercontent.com/u/47600161?v=4" width="100;" alt="mgajewskik"/> <br /> <sub><b>Maciej Gajewski</b></sub> </a> </td> <td align="center"> <a href="https://github.com/ajitam"> <img src="https://avatars.githubusercontent.com/u/672661?v=4" width="100;" alt="ajitam"/> <br /> <sub><b>Matija Urh</b></sub> </a> </td> <td align="center"> <a href="https://github.com/machj8968-lab"> <img src="https://avatars.githubusercontent.com/u/274563644?v=4" width="100;" alt="machj8968-lab"/> <br /> <sub><b>machj8968-lab</b></sub> </a> </td> <td align="center"> <a href="https://github.com/buyua9"> <img src="https://avatars.githubusercontent.com/u/274236111?v=4" width="100;" alt="buyua9"/> <br /> <sub><b>buyua9</b></sub> </a> </td> <td align="center"> <a href="https://github.com/aziham"> <img src="https://avatars.githubusercontent.com/u/94932043?v=4" width="100;" alt="aziham"/> <br /> <sub><b>Hamza</b></sub> </a> </td> <td align="center"> <a href="https://github.com/GPT-AGI"> <img src="https://avatars.githubusercontent.com/u/181050363?v=4" width="100;" alt="GPT-AGI"/> <br /> <sub><b>Ting Zhang</b></sub> </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/RockinPaul"> <img src="https://avatars.githubusercontent.com/u/3741448?v=4" width="100;" alt="RockinPaul"/> <br /> <sub><b>Paul Zarudnev</b></sub> </a> </td> <td align="center"> <a href="https://github.com/oantoshchenko"> <img src="https://avatars.githubusercontent.com/u/1749531?v=4" width="100;" alt="oantoshchenko"/> <br /> <sub><b>Oleksandr Antoshchenko</b></sub> </a> </td> <td align="center"> <a href="https://github.com/lwsinclair"> <img src="https://avatars.githubusercontent.com/u/2829939?v=4" width="100;" alt="lwsinclair"/> <br /> <sub><b>Lawrence Sinclair</b></sub> </a> </td> <td align="center"> <a href="https://github.com/jungdaesuh"> <img src="https://avatars.githubusercontent.com/u/78460559?v=4" width="100;" alt="jungdaesuh"/> <br /> <sub><b>jungdaesuh</b></sub> </a> </td> <td align="center"> <a href="https://github.com/josephgoksu"> <img src="https://avatars.githubusercontent.com/u/6523823?v=4" width="100;" alt="josephgoksu"/> <br /> <sub><b>Joseph Goksu</b></sub> </a> </td> <td align="center"> <a href="https://github.com/EikoocS"> <img src="https://avatars.githubusercontent.com/u/80829508?v=4" width="100;" alt="EikoocS"/> <br /> <sub><b>EikoocS</b></sub> </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/Dhravya"> <img src="https://avatars.githubusercontent.com/u/63950637?v=4" width="100;" alt="Dhravya"/> <br /> <sub><b>Dhravya Shah</b></sub> </a> </td> <td align="center"> <a href="https://github.com/dflor003"> <img src="https://avatars.githubusercontent.com/u/103017?v=4" width="100;" alt="dflor003"/> <br /> <sub><b>Danil Flores</b></sub> </a> </td> <td align="center"> <a href="https://github.com/DAESA24"> <img src="https://avatars.githubusercontent.com/u/173488786?v=4" width="100;" alt="DAESA24"/> <br /> <sub><b>DAESA24</b></sub> </a> </td> <td align="center"> <a href="https://github.com/ammesonb"> <img src="https://avatars.githubusercontent.com/u/2522710?v=4" width="100;" alt="ammesonb"/> <br /> <sub><b>Brett Ammeson</b></sub> </a> </td> <td align="center"> <a href="https://github.com/auto-pr-bot"> <img src="https://avatars.githubusercontent.com/u/245575329?v=4" width="100;" alt="auto-pr-bot"/> <br /> <sub><b>auto-pr-bot</b></sub> </a> </td> <td align="center"> <a href="https://github.com/anush008"> <img src="https://avatars.githubusercontent.com/u/46051506?v=4" width="100;" alt="anush008"/> <br /> <sub><b>Anush</b></sub> </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/annelchavez-11594"> <img src="https://avatars.githubusercontent.com/u/271067077?v=4" width="100;" alt="annelchavez-11594"/> <br /> <sub><b>Annel Chavez</b></sub> </a> </td> <td align="center"> <a href="https://github.com/atao2004"> <img src="https://avatars.githubusercontent.com/u/148929819?v=4" width="100;" alt="atao2004"/> <br /> <sub><b>Anna Tao</b></sub> </a> </td> </tr> <tbody> </table> <!-- readme: contributors -end -->
docs/matrix-retrieval-redesign.md
<!-- __ __ ___ / / ____ ____ ____ _/ |/ /__ ____ ___ ____ _______ __ / / / __ \/ __ \/ __ `/ /|_/ / _ \/ __ `__ \/ __ \/ ___/ / / / / /___/ /_/ / / / / /_/ / / / / __/ / / / / / /_/ / / / /_/ / /_____/\____/_/ /_/\__, /_/ /_/\___/_/ /_/ /_/\____/_/ \__, / /____/ /____/ cavira oss (c) 2026 - nullure (c) 2026 ========================================================== file : docs/matrix-retrieval-redesign.md usage : documents LongMemory matrix retrieval redesign -->
Matrix Retrieval Redesign
Measured diagnosis
The completed 33-question run and a direct conv-50:qa:66 probe isolate two
independent forms of dilution.
Ranking dilution
The current direct seed score is
$$ d_i = 0.50v_i + 0.35\ell_i + 0.15e_i $$
and every candidate with $d_i > 0.05$ becomes a graph seed. On the 568-node
conv-50 corpus, 567 nodes became seeds. After two diffusion steps, normalized
activation entropy was 0.994 and peak probability was 0.0031. The graph stage
therefore smoothed an almost uniform signal instead of expanding a selective
neighbourhood.
Across 147 stored top-five candidates, mean relevant versus irrelevant feature values were:
| Signal | Relevant | Irrelevant | Separation |
|---|---|---|---|
| Vector | 0.554 | 0.505 | +0.049 |
| Lexical | 0.774 | 0.699 | +0.075 |
| Entity | 0.463 | 0.613 | -0.149 |
| Activation | 0.465 | 0.300 | +0.165 |
| Spread | 0.469 | 0.492 | -0.023 |
| Emotional | 0.000 | 0.080 | -0.080 |
| Speaker | 0.618 | 0.186 | +0.432 |
Spread is correlated with vector (0.429), lexical (0.481), and entity (0.615).
The fixed sum therefore double-counts correlated popularity while entity,
spread, and emotional boosts contribute more to noise than to evidence.
Entity identity is mainly a constraint: adding the same Dave = 1 value to
all Dave memories does not distinguish the failed restoration event.
Evidence dilution
memory_evidence_text() previously selected only claims sharing query terms
whenever one such claim existed. This dropped complementary clauses, including
"Maybe we can have a beer somewhere?" from the rank-one Starbucks evidence.
The renderer now keeps matching claims first and fills the remaining claim
budget with source-order complementary claims.
A separate unresolved case is cross-turn reference. Melanie's "we just did it"
requires a preceding conversational turn. Sequential refers_to edges exist,
but context construction does not expand a selected result into an evidence
bundle.
Proposed model
1. Calibrated feature matrix
For $n$ candidates and $m$ direct signals, construct
$$ X = [\mathbf v,\boldsymbol\ell,\mathbf a,\mathbf s,\mathbf t, \mathbf p] \in \mathbb R^{n\times m} $$
where columns represent semantic similarity, lexical relevance, ACT-R activation, speaker attribution, temporal agreement, and polarity/exception agreement. Entity agreement is removed from additive relevance and used as a constraint gate.
Calibrate each continuous column within the query candidate population using a robust z-score:
$$ Z_{ij} = \frac{X_{ij} - \operatorname{median}(X_{:j})} {1.4826,\operatorname{MAD}(X_{:j}) + \epsilon} $$
Use empirical percentiles for binary or zero-MAD columns. This expands narrow cosine bands and prevents max-normalized BM25 from owning the score scale.
Estimate regularized covariance:
$$ \Sigma = \frac{Z^\top Z}{n-1} + \lambda I $$
and whiten the feature matrix:
$$ Y = Z\Sigma^{-1/2} $$
Because $m$ is small, the eigendecomposition costs $O(m^3)$ and candidate projection costs $O(nm^2)$. Whitening prevents graph spread, lexical overlap, and vector similarity from receiving multiple votes for the same information.
Fuse independent evidence with a weighted log-sum-exp rather than an arithmetic mean:
$$ r_i = g_i,\tau\log\left(\sum_{j=1}^{m}\pi_j \exp\left(\frac{Y_{ij}}{\tau}\right)\right) $$
where $\sum_j\pi_j=1$. A low $\tau$ approaches a maximum and preserves a strong single channel; a larger $\tau$ rewards agreement. The entity/permission gate is
$$ g_i = \prod_c \sigma\left(\beta_c(C_{ic}-\theta_c)\right) $$
for hard query constraints $C$, rather than a positive bonus shared by hundreds of same-person memories.
2. Sparse typed-graph diffusion
Create relation-specific adjacency matrices for sequential conversation, support, supersession, contradiction, and entity co-reference edges:
$$ P_r = D_r^{-1/2}A_rD_r^{-1/2} $$
Symmetric normalization reduces high-degree hub domination. Combine only relations useful for the parsed query:
$$ P(q) = \sum_r \rho_r(q)P_r $$
Seed only the strongest direct candidates:
$$ s_i = \max(0, r_i-Q_{0.90}(\mathbf r)),\qquad \hat{\mathbf s}=\frac{\mathbf s}{|\mathbf s|_1} $$
with an absolute cap such as 32 seeds. Use truncated personalized PageRank:
$$ \mathbf h=(1-\alpha)\sum_{t=0}^{H}\alpha^tP(q)^t\hat{\mathbf s} $$
Graph gain should admit unseeded neighbours, not add a near-constant value to all direct candidates. Reject or bypass diffusion when seed density exceeds 0.15 or normalized entropy remains above 0.90.
3. Matrix evidence-set selection
Top-K answer quality is a set problem, especially for multi-hop and exception questions. Let $A\in[0,1]^{n\times q}$ encode candidate coverage of query aspects and let $S=EE^\top$ be the candidate semantic-similarity matrix. Choose binary vector $\mathbf x$ by maximizing
$$ F(\mathbf x)=\mathbf r^\top\mathbf x +\lambda\sum_{j=1}^{q}w_j\left(1-e^{-(A^\top\mathbf x)_j}\right) -\frac{\gamma}{2}\mathbf x^\top S\mathbf x $$
subject to
$$ \mathbf 1^\top\mathbf x\le K,\qquad \mathbf c^\top\mathbf x\le B $$
where $\mathbf c$ is evidence token cost and $B$ is the context budget. Greedy marginal-gain selection gives a bounded approximation for the coverage term and replaces the current positional MMR, which was measured as a no-op.
For quantifiers such as all, always, and ever, add positive and negative
polarity aspects. The set objective must reward retrieving at least one
counterexample. This directly targets Dave's failed restoration case.
4. Conversational evidence bundles
Let $C$ be the ordered same-session adjacency matrix. Expand selected anchors with bounded neighbours:
$$ \mathbf b=\min\left(\mathbf 1, (I+C+C^\top+C^2+(C^\top)^2)\mathbf x\right) $$
The expansion remains subordinate to the token constraint. It supplies antecedents for pronouns and elliptical replies while preserving source order. The answer context should include speaker, timestamp, exact source text, and structured claims; claims are an index, not a replacement for evidence.
Delivery order
Keep the complementary-claim rendering fix and add regression cases for Starbucks and other multi-clause turns.
Persist compact seed density, entropy, and peak diagnostics in run artifacts.
Implement sparse typed diffusion behind a benchmarkable configuration and require seed density at most 0.15.
Implement query-local feature calibration and covariance whitening over the shortlist; compare it with the current linear score without changing embeddings.
Replace positional MMR with token-constrained aspect coverage and explicit polarity coverage.
Add ordered neighbour bundles for selected anchors.
Run retrieval-only A/B first, then a fresh Copilot-judged scorecard.
Do not re-enable RRF or RM3 and do not increase the current lexical reranker weights. Prior controlled A/B runs showed those changes regress retrieval.
Implementation status
Implemented in the associative recall path:
robust median/MAD feature calibration;
regularized feature covariance and inverse-square-root whitening diagnostics;
covariance-adjusted, direction-preserving log-sum-exp fusion;
top-quantile graph seeds capped at 32 and 15% density;
typed symmetric graph normalization and truncated personalized PageRank;
high-entropy diffusion bypass;
exception-aware polarity scoring and token-constrained evidence selection;
exact-source predecessor bundles for explicit elliptical turns;
query-conditioned complementary claim rendering;
compact matrix, diffusion, and bundle diagnostics in run hits;
OM_MATRIX_RETRIEVAL=0as the legacy A/B path.
Matrix rank intervention is deliberately targeted to universal/exception queries. Applying it to every query improved precision but slightly reduced recall; ordinary queries retain the established scorer while still benefiting from bounded evidence rendering.
Judged results should therefore be repeated or use a deterministic model endpoint before treating one run as a release gate.
512 files · 459 not served here
- .agents/plugins/marketplace.json (not served here)
- .do/spec.yaml (not served here)
- .dockerignore (not served here)
- .editorconfig (not served here)
- .env.example (not served here)
- .gitattributes (not served here)
- .github/ISSUE_TEMPLATE/bug_report.yml (not served here)
- .github/ISSUE_TEMPLATE/config.yml (not served here)
- .github/ISSUE_TEMPLATE/feature_request.yml (not served here)
- .github/ascii.txt (not served here)
- .github/banner.png (not served here)
- .github/logo.png (not served here)
- .github/longmemory.gif (not served here)
- .github/pull_request_template.md (not served here)
- .github/workflows/ci.yml (not served here)
- .github/workflows/docker-build.yml (not served here)
- .github/workflows/main.yml (not served here)
- .github/workflows/publish-docker-image.yml (not served here)
- .github/workflows/publish-sdks.yml (not served here)
- .gitignore (not served here)
- .prettierignore (not served here)
- .prettierrc.js (not served here)
- ARCHITECTURE.md
- ATTRIBUTION.md
- AUTOGINEER-RUNS.md
- CHANGELOG.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- Dockerfile (not served here)
- GOVERNANCE.md
- LICENSE
- MIGRATION.md
- Makefile (not served here)
- README.md
- SECURITY.md
- Why.md
- app.json (not served here)
- apps/vscode-extension/.gitignore (not served here)
- apps/vscode-extension/.vscode/launch.json (not served here)
- apps/vscode-extension/.vscode/tasks.json (not served here)
- apps/vscode-extension/CHANGELOG.md (not served here)
- apps/vscode-extension/LICENSE
- apps/vscode-extension/README.md (not served here)
- apps/vscode-extension/esbuild.mjs (not served here)
- apps/vscode-extension/media/longmemory.svg (not served here)
- apps/vscode-extension/package.json (not served here)
- apps/vscode-extension/src/agent_changes.ts (not served here)
- apps/vscode-extension/src/agent_tracker.ts (not served here)
- apps/vscode-extension/src/cli.ts (not served here)
- apps/vscode-extension/src/extension.ts (not served here)
- apps/vscode-extension/src/markdown.ts (not served here)
- apps/vscode-extension/src/memory_tree.ts (not served here)
- apps/vscode-extension/src/status_bar.ts (not served here)
- apps/vscode-extension/src/status_bar_model.ts (not served here)
- apps/vscode-extension/src/types.ts (not served here)
- apps/vscode-extension/tsconfig.json (not served here)
- benchmarks/FAILURE_ANALYSIS.md (not served here)
- benchmarks/README.md (not served here)
- benchmarks/src/ai/index.ts (not served here)
- benchmarks/src/ai/judge.ts (not served here)
- benchmarks/src/ai/model.ts (not served here)
- benchmarks/src/ai/prompts.ts (not served here)
- benchmarks/src/check.ts (not served here)
- benchmarks/src/checkpoint.ts (not served here)
- benchmarks/src/cli.ts (not served here)
- benchmarks/src/config.ts (not served here)
- benchmarks/src/datasets/beam.ts (not served here)
- benchmarks/src/datasets/download.ts (not served here)
- benchmarks/src/datasets/index.ts (not served here)
- benchmarks/src/datasets/public.ts (not served here)
- benchmarks/src/datasets/smoke.ts (not served here)
- benchmarks/src/metrics.ts (not served here)
- benchmarks/src/official.ts (not served here)
- benchmarks/src/providers/cognee.ts (not served here)
- benchmarks/src/providers/graphiti.ts (not served here)
- benchmarks/src/providers/http.ts (not served here)
- benchmarks/src/providers/index.ts (not served here)
- benchmarks/src/providers/longmemory.ts (not served here)
- benchmarks/src/providers/mem0.ts (not served here)
- benchmarks/src/providers/shared.ts (not served here)
- benchmarks/src/providers/supermemory.ts (not served here)
- benchmarks/src/report.ts (not served here)
- benchmarks/src/runner.ts (not served here)
- benchmarks/src/scorecard.ts (not served here)
- benchmarks/src/source_ref.ts (not served here)
- benchmarks/src/types.ts (not served here)
- benchmarks/src/ui.ts (not served here)
- benchmarks/tsconfig.json (not served here)
- dashboard/.env.local.example (not served here)
- dashboard/CHAT_SETUP.md (not served here)
- dashboard/Dockerfile (not served here)
- dashboard/README.md (not served here)
- dashboard/app/api/longmemory/[...path]/route.ts (not served here)
- dashboard/app/api/settings/route.ts (not served here)
- dashboard/app/chat/page.tsx (not served here)
- dashboard/app/decay/page.tsx (not served here)
- dashboard/app/globals.css (not served here)
- dashboard/app/layout.tsx (not served here)
- dashboard/app/memories/page.tsx (not served here)
- dashboard/app/page.tsx (not served here)
- dashboard/app/settings/page.tsx (not served here)
- dashboard/app/timeline/page.tsx (not served here)
- dashboard/components.json (not served here)
- dashboard/components/dashboard/HealthMetric.tsx (not served here)
- dashboard/components/dashboard/StatCard.tsx (not served here)
- dashboard/components/navbar.tsx (not served here)
- dashboard/components/sidebar.tsx (not served here)
- dashboard/eslint.config.mjs (not served here)
- dashboard/instrumentation.ts (not served here)
- dashboard/lib/api.ts (not served here)
- dashboard/lib/colors.ts (not served here)
- dashboard/lib/memory-ai-engine.ts (not served here)
- dashboard/lib/project-context.tsx (not served here)
- dashboard/lib/utils.ts (not served here)
- dashboard/next-env.d.ts (not served here)
- dashboard/next.config.js (not served here)
- dashboard/package-lock.json (not served here)
- dashboard/package.json (not served here)
- dashboard/postcss.config.mjs (not served here)
- dashboard/public/favicon.ico (not served here)
- dashboard/tsconfig.json (not served here)
- dashboard/tsconfig.tsbuildinfo (not served here)
- docker-compose.yml (not served here)
- docs/agent-assets.md
- docs/ai-context.md
- docs/ai-rules.md
- docs/answering.md
- docs/api.md
- docs/architecture.md
- docs/associative-recall.md
- docs/cli.md
- docs/compression.md
- docs/connectors.md
- docs/consolidation.md
- docs/contracts.md
- docs/decisions.md
- docs/edges.md
- docs/embeddings.md
- docs/entities.md
- docs/formulas.md
- docs/grounding.md
- docs/historical-recall.md
- docs/immutability.md
- docs/ingest.md
- docs/invariants.md
- docs/matrix-retrieval-redesign.md
- docs/mcp.md
- docs/migration.md
- docs/multilingual.md
- docs/project-memory.md
- docs/reconsolidation.md
- docs/session-porter.md
- docs/sqlite.md
- docs/strict-recall.md
- docs/temporal.md
- docs/world-grounded-recall.md
- docs/worlds.md
- header.txt (not served here)
- heroku.yml (not served here)
- integrations/README.md (not served here)
- integrations/claude-code-longmemory/.claude-plugin/plugin.json (not served here)
- integrations/claude-code-longmemory/.mcp.json (not served here)
- integrations/claude-code-longmemory/LICENSE
- integrations/claude-code-longmemory/README.md (not served here)
- integrations/claude-code-longmemory/skills/longmemory/SKILL.md (not served here)
- integrations/codex-longmemory/.codex-plugin/plugin.json (not served here)
- integrations/codex-longmemory/.mcp.json (not served here)
- integrations/codex-longmemory/LICENSE
- integrations/codex-longmemory/README.md (not served here)
- integrations/codex-longmemory/skills/longmemory/SKILL.md (not served here)
- integrations/frameworks/README.md (not served here)
- integrations/frameworks/autogen/main.py (not served here)
- integrations/frameworks/autogen/requirements.txt (not served here)
- integrations/frameworks/crewai/main.py (not served here)
- integrations/frameworks/crewai/requirements.txt (not served here)
- integrations/frameworks/langgraph/main.py (not served here)
- integrations/frameworks/langgraph/requirements.txt (not served here)
- integrations/frameworks/openai-agents/main.py (not served here)
- integrations/frameworks/openai-agents/requirements.txt (not served here)
- integrations/frameworks/pydantic-ai/main.py (not served here)
- integrations/frameworks/pydantic-ai/requirements.txt (not served here)
- integrations/gemini-cli-longmemory/GEMINI.md (not served here)
- integrations/gemini-cli-longmemory/LICENSE
- integrations/gemini-cli-longmemory/README.md (not served here)
- integrations/gemini-cli-longmemory/gemini-extension.json (not served here)
- integrations/grok-connectors.md (not served here)
- integrations/longmemory-agent-plugin/LICENSE
- integrations/longmemory-agent-plugin/README.md (not served here)
- integrations/longmemory-agent-plugin/mcp.json (not served here)
- integrations/longmemory-agent-plugin/plugin.json (not served here)
- integrations/longmemory-agent-plugin/skills/longmemory/SKILL.md (not served here)
- integrations/mcp-configs/README.md (not served here)
- integrations/mcp-configs/cline.json (not served here)
- integrations/mcp-configs/continue.yaml (not served here)
- integrations/mcp-configs/librechat.yaml (not served here)
- integrations/n8n-nodes-longmemory/LICENSE
- integrations/n8n-nodes-longmemory/README.md (not served here)
- integrations/n8n-nodes-longmemory/credentials/LongMemoryApi.credentials.ts (not served here)
- integrations/n8n-nodes-longmemory/credentials/longmemory.svg (not served here)
- integrations/n8n-nodes-longmemory/eslint.config.mjs (not served here)
- integrations/n8n-nodes-longmemory/nodes/LongMemory/LongMemory.node.json (not served here)
- integrations/n8n-nodes-longmemory/nodes/LongMemory/LongMemory.node.ts (not served here)
- integrations/n8n-nodes-longmemory/nodes/LongMemory/longmemory.dark.svg (not served here)
- integrations/n8n-nodes-longmemory/nodes/LongMemory/longmemory.svg (not served here)
- integrations/n8n-nodes-longmemory/package.json (not served here)
- integrations/n8n-nodes-longmemory/tsconfig.json (not served here)
- models.yml (not served here)
- package.json (not served here)
- packages/longmemory-py/LICENSE
- packages/longmemory-py/README.md (not served here)
- packages/longmemory-py/pyproject.toml (not served here)
- packages/longmemory-py/src/longmemory/__init__.py (not served here)
- packages/longmemory-py/src/longmemory/client.py (not served here)
- packages/longmemory-py/src/longmemory/errors.py (not served here)
- packages/longmemory-py/src/longmemory/py.typed (not served here)
- pnpm-lock.yaml (not served here)
- pnpm-workspace.yaml (not served here)
- railway.json (not served here)
- render.yaml (not served here)
- src/answering/evidence_reader.ts (not served here)
- src/cli/cli_app.ts (not served here)
- src/cli/commands/agent/after_run.ts (not served here)
- src/cli/commands/agent/context.ts (not served here)
- src/cli/commands/agent/manifest.ts (not served here)
- src/cli/commands/agent/preflight.ts (not served here)
- src/cli/commands/agent/remember_failure.ts (not served here)
- src/cli/commands/asset/common.ts (not served here)
- src/cli/commands/asset/govern.ts (not served here)
- src/cli/commands/asset/list.ts (not served here)
- src/cli/commands/asset/loadout.ts (not served here)
- src/cli/commands/asset/register.ts (not served here)
- src/cli/commands/bench.ts (not served here)
- src/cli/commands/code/callees.ts (not served here)
- src/cli/commands/code/callers.ts (not served here)
- src/cli/commands/code/impact.ts (not served here)
- src/cli/commands/code/search.ts (not served here)
- src/cli/commands/connectors/add.ts (not served here)
- src/cli/commands/connectors/list.ts (not served here)
- src/cli/commands/connectors/status.ts (not served here)
- src/cli/commands/connectors/sync.ts (not served here)
- src/cli/commands/doctor.ts (not served here)
- src/cli/commands/explain.ts (not served here)
- src/cli/commands/ingest.ts (not served here)
- src/cli/commands/init.ts (not served here)
- src/cli/commands/maintenance/decay.ts (not served here)
- src/cli/commands/maintenance/reinforce.ts (not served here)
- src/cli/commands/mcp.ts (not served here)
- src/cli/commands/memory/list.ts (not served here)
- src/cli/commands/memory/summary.ts (not served here)
- src/cli/commands/porter/common.ts (not served here)
- src/cli/commands/porter/detect.ts (not served here)
- src/cli/commands/porter/port.ts (not served here)
- src/cli/commands/porter/tui.ts (not served here)
- src/cli/commands/porter/verify.ts (not served here)
- src/cli/commands/project/conflicts.ts (not served here)
- src/cli/commands/project/context.ts (not served here)
- src/cli/commands/project/decisions.ts (not served here)
- src/cli/commands/project/handoff.ts (not served here)
- src/cli/commands/project/init.ts (not served here)
- src/cli/commands/project/tasks.ts (not served here)
- src/cli/commands/recall.ts (not served here)
- src/cli/commands/serve.ts (not served here)
- src/cli/commands/session/discover.ts (not served here)
- src/cli/commands/session/import.ts (not served here)
- src/cli/commands/session/list.ts (not served here)
- src/cli/commands/session/wiki.ts (not served here)
- src/cli/commands/skill/archive.ts (not served here)
- src/cli/commands/skill/bind.ts (not served here)
- src/cli/commands/skill/create.ts (not served here)
- src/cli/commands/skill/list.ts (not served here)
- src/cli/commands/skill/match.ts (not served here)
- src/cli/commands/status.ts (not served here)
- src/cli/commands/timeline.ts (not served here)
- src/cli/context/cli_context.ts (not served here)
- src/cli/context/config_loader.ts (not served here)
- src/cli/context/cwd_project.ts (not served here)
- src/cli/context/project_scope.ts (not served here)
- src/cli/index.ts (not served here)
- src/cli/main.ts (not served here)
- src/cli/output/empty_state.ts (not served here)
- src/cli/output/errors.ts (not served here)
- src/cli/output/json.ts (not served here)
- src/cli/output/panel.ts (not served here)
- src/cli/output/pretty.ts (not served here)
- src/cli/output/progress.ts (not served here)
- src/cli/output/spinner.ts (not served here)
- src/cli/output/table.ts (not served here)
- src/cli/output/tree.ts (not served here)
- src/cli/output/utility_window.ts (not served here)
- src/cli/porter/adapters/claude_code.ts (not served here)
- src/cli/porter/adapters/cline.ts (not served here)
- src/cli/porter/adapters/codex.ts (not served here)
- src/cli/porter/adapters/copilot_chat.ts (not served here)
- src/cli/porter/adapters/deepseek_harness.ts (not served here)
- src/cli/porter/adapters/gemini_cli.ts (not served here)
- src/cli/porter/adapters/opencode.ts (not served here)
- src/cli/porter/adapters/shared.ts (not served here)
- src/cli/porter/detect.ts (not served here)
- src/cli/porter/filesystem.ts (not served here)
- src/cli/porter/orchestrator.ts (not served here)
- src/cli/porter/preview.ts (not served here)
- src/cli/porter/types.ts (not served here)
- src/cli/porter/wiki.ts (not served here)
- src/cli/theme/badges.ts (not served here)
- src/cli/theme/colors.ts (not served here)
- src/cli/theme/icons.ts (not served here)
- src/cli/theme/layout.ts (not served here)
- src/connectors/adapter_connector.ts (not served here)
- src/connectors/cloud/cloud_connectors.ts (not served here)
- src/connectors/cloud/cloud_transports.ts (not served here)
- src/connectors/configurable_connector.ts (not served here)
- src/connectors/docs/docs_connector.ts (not served here)
- src/connectors/docs/docs_mapper.ts (not served here)
- src/connectors/domain_mapper.ts (not served here)
- src/connectors/extraction/content_extractor.ts (not served here)
- src/connectors/extraction/document_connector.ts (not served here)
- src/connectors/extraction/document_transport.ts (not served here)
- src/connectors/github/github_connector.ts (not served here)
- src/connectors/github/github_mapper.ts (not served here)
- src/connectors/index.ts (not served here)
- src/connectors/local/local_file_connector.ts (not served here)
- src/connectors/local/markdown_connector.ts (not served here)
- src/connectors/local/markdown_parser.ts (not served here)
- src/connectors/mock_connector.ts (not served here)
- src/connectors/plan_helpers.ts (not served here)
- src/connectors/registry.ts (not served here)
- src/connectors/service_catalog.ts (not served here)
- src/connectors/transports/base.ts (not served here)
- src/connectors/transports/extractors/file_analysis.ts (not served here)
- src/connectors/transports/extractors/language.ts (not served here)
- src/connectors/transports/filesystem.ts (not served here)
- src/connectors/transports/github.ts (not served here)
- src/connectors/transports/rest.ts (not served here)
- src/connectors/transports/types.ts (not served here)
- src/connectors/transports/web.ts (not served here)
- src/connectors/web/website_connector.ts (not served here)
- src/connectors/youtube/youtube_connector.ts (not served here)
- src/connectors/youtube/youtube_mapper.ts (not served here)
- src/core/connectors/connector.ts (not served here)
- src/core/connectors/connector_ingest.ts (not served here)
- src/core/connectors/connector_registry.ts (not served here)
- src/core/connectors/index.ts (not served here)
- src/core/connectors/permission.ts (not served here)
- src/core/connectors/provenance_mapper.ts (not served here)
- src/core/connectors/rate_limit.ts (not served here)
- src/core/connectors/source_document.ts (not served here)
- src/core/connectors/source_event.ts (not served here)
- src/core/connectors/sync_cursor.ts (not served here)
- src/core/create_memory.ts (not served here)
- src/core/edges/edge_context.ts (not served here)
- src/core/edges/edge_registry.ts (not served here)
- src/core/edges/edge_runtime.ts (not served here)
- src/core/edges/handlers/contains.ts (not served here)
- src/core/edges/handlers/contradicts.ts (not served here)
- src/core/edges/handlers/derived_from.ts (not served here)
- src/core/edges/handlers/grounds.ts (not served here)
- src/core/edges/handlers/index.ts (not served here)
- src/core/edges/handlers/same_as.ts (not served here)
- src/core/edges/handlers/semantic_shift.ts (not served here)
- src/core/edges/handlers/supersedes.ts (not served here)
- src/core/edges/handlers/supports.ts (not served here)
- src/core/edges/index.ts (not served here)
- src/core/embeddings/environment.ts (not served here)
- src/core/embeddings/index.ts (not served here)
- src/core/embeddings/providers.ts (not served here)
- src/core/embeddings/stack.ts (not served here)
- src/core/embeddings/types.ts (not served here)
- src/core/embeddings/utility.ts (not served here)
- src/core/engine/claim_extractor.ts (not served here)
- src/core/engine/facet_extractor.ts (not served here)
- src/core/engine/index.ts (not served here)
- src/core/engine/ingest_engine.ts (not served here)
- src/core/engine/ingest_transaction.ts (not served here)
- src/core/engine/perception_parser.ts (not served here)
- src/core/grounding/exocortex.ts (not served here)
- src/core/grounding/grounding_score.ts (not served here)
- src/core/grounding/index.ts (not served here)
- src/core/grounding/resonance.ts (not served here)
- src/core/grounding/world_update.ts (not served here)
- src/core/grounding/worlddb_adapter.ts (not served here)
- src/core/hash/canonical_json.ts (not served here)
- src/core/hash/content_hash.ts (not served here)
- src/core/hash/index.ts (not served here)
- src/core/hash/merkle.ts (not served here)
- src/core/i18n/crosslingual_recall.ts (not served here)
- src/core/i18n/index.ts (not served here)
- src/core/i18n/language_detection.ts (not served here)
- src/core/i18n/locale_context.ts (not served here)
- src/core/i18n/multilingual_embeddings.ts (not served here)
- src/core/i18n/multilingual_entity_resolver.ts (not served here)
- src/core/i18n/multilingual_tokenizer.ts (not served here)
- src/core/i18n/normalization.ts (not served here)
- src/core/i18n/script_detection.ts (not served here)
- src/core/i18n/transliteration.ts (not served here)
- src/core/index.ts (not served here)
- src/core/invariants.ts (not served here)
- src/core/math/activation.ts (not served here)
- src/core/math/contradiction.ts (not served here)
- src/core/math/count_min.ts (not served here)
- src/core/math/decay.ts (not served here)
- src/core/math/evidence.ts (not served here)
- src/core/math/frequent_directions.ts (not served here)
- src/core/math/index.ts (not served here)
- src/core/math/oja.ts (not served here)
- src/core/math/sketches.ts (not served here)
- src/core/math/surprise.ts (not served here)
- src/core/math/utility.ts (not served here)
- src/core/memory/consolidation.ts (not served here)
- src/core/memory/decay_engine.ts (not served here)
- src/core/memory/durable_graph.ts (not served here)
- src/core/memory/index.ts (not served here)
- src/core/memory/pattern_detector.ts (not served here)
- src/core/memory/procedure_builder.ts (not served here)
- src/core/memory/reconsolidation.ts (not served here)
- src/core/memory/reflection_builder.ts (not served here)
- src/core/memory/working_memory.ts (not served here)
- src/core/migration/index.ts (not served here)
- src/core/migration/legacy_cleaner.ts (not served here)
- src/core/migration/legacy_mapper.ts (not served here)
- src/core/migration/legacy_reader.ts (not served here)
- src/core/migration/migration_report.ts (not served here)
- src/core/project/index.ts (not served here)
- src/core/project/project_agent_manifest.ts (not served here)
- src/core/project/project_assets.ts (not served here)
- src/core/project/project_code_index.ts (not served here)
- src/core/project/project_context.ts (not served here)
- src/core/project/project_conventions.ts (not served here)
- src/core/project/project_decisions.ts (not served here)
- src/core/project/project_ingest.ts (not served here)
- src/core/project/project_memory.ts (not served here)
- src/core/project/project_recall.ts (not served here)
- src/core/project/project_sessions.ts (not served here)
- src/core/project/project_skills.ts (not served here)
- src/core/project/project_state.ts (not served here)
- src/core/project/project_tasks.ts (not served here)
- src/core/project/project_world.ts (not served here)
- src/core/recall/activation_spread.ts (not served here)
- src/core/recall/associative_recall.ts (not served here)
- src/core/recall/candidate_selection.ts (not served here)
- src/core/recall/context_builder.ts (not served here)
- src/core/recall/contract_gate.ts (not served here)
- src/core/recall/evidence.ts (not served here)
- src/core/recall/evidence_selection.ts (not served here)
- src/core/recall/explain_trace.ts (not served here)
- src/core/recall/fusion.ts (not served here)
- src/core/recall/grounded_recall.ts (not served here)
- src/core/recall/grounding_trace.ts (not served here)
- src/core/recall/historical_recall.ts (not served here)
- src/core/recall/hopfield_recall.ts (not served here)
- src/core/recall/index.ts (not served here)
- src/core/recall/matrix_fusion.ts (not served here)
- src/core/recall/mode_gates.ts (not served here)
- src/core/recall/recall_planner.ts (not served here)
- src/core/recall/recall_text.ts (not served here)
- src/core/recall/rerank.ts (not served here)
- src/core/recall/scoring.ts (not served here)
- src/core/recall/strict_recall.ts (not served here)
- src/core/recall/subject_relevance.ts (not served here)
- src/core/recall/timeline_builder.ts (not served here)
- src/core/resolver/alias_index.ts (not served here)
- src/core/resolver/candidate_merge.ts (not served here)
- src/core/resolver/entity_candidate_index.ts (not served here)
- src/core/resolver/entity_resolver.ts (not served here)
- src/core/resolver/entity_score.ts (not served here)
- src/core/resolver/index.ts (not served here)
- src/core/resolver/semantic_drift.ts (not served here)
- src/core/temporal/bitemporal.ts (not served here)
- src/core/temporal/index.ts (not served here)
- src/core/temporal/interval_algebra.ts (not served here)
- src/core/temporal/mvcc.ts (not served here)
- src/core/types.ts (not served here)
- src/core/types/contract.ts (not served here)
- src/core/types/contradiction.ts (not served here)
- src/core/types/entity.ts (not served here)
- src/core/types/evidence.ts (not served here)
- src/core/types/facets.ts (not served here)
- src/core/types/hydro_edge.ts (not served here)
- src/core/types/hydro_node.ts (not served here)
- src/core/types/index.ts (not served here)
- src/core/types/node_state.ts (not served here)
- src/core/types/provenance.ts (not served here)
- src/core/types/recall_mode.ts (not served here)
- src/core/types/world.ts (not served here)
- src/core/worlds/index.ts (not served here)
- src/core/worlds/recursive_world.ts (not served here)
- src/core/worlds/world_composer.ts (not served here)
- src/core/worlds/world_contracts.ts (not served here)
- src/core/worlds/world_embedding.ts (not served here)
- src/index.ts (not served here)
- src/mcp/index.ts (not served here)
- src/mcp/mcp_server.ts (not served here)
- src/mcp/prompts/after_coding.ts (not served here)
- src/mcp/prompts/architecture_context.ts (not served here)
- src/mcp/prompts/before_coding.ts (not served here)
- src/mcp/prompts/common.ts (not served here)
- src/mcp/prompts/debug_session.ts (not served here)
- src/mcp/prompts/project_handoff.ts (not served here)
- src/mcp/resources/agent_manifest.ts (not served here)
- src/mcp/resources/assets.ts (not served here)
- src/mcp/resources/common.ts (not served here)
- src/mcp/resources/conflicts.ts (not served here)
- src/mcp/resources/decisions.ts (not served here)
- src/mcp/resources/entity.ts (not served here)
- src/mcp/resources/memory.ts (not served here)
- src/mcp/resources/project_context.ts (not served here)
- src/mcp/resources/project_summary.ts (not served here)
- src/mcp/resources/projects.ts (not served here)
- src/mcp/resources/skills.ts (not served here)
- src/mcp/resources/tasks.ts (not served here)
- src/mcp/resources/world.ts (not served here)
- src/mcp/runtime.ts (not served here)
- src/mcp/schemas/resource_schemas.ts (not served here)
Advantages
- Supports temporal truth by separating recorded time from valid time, allowing for historical accuracy. evidence: README.md
- Provides immutable memory where content and provenance are preserved, preventing accidental overwrites. evidence: README.md
- Enforces governance policies for projects, teams, and roles to ensure secure and scoped memory access. evidence: README.md
Limitations
- Requires manual configuration for network deployment, including API key management and TLS termination. evidence: README.md
- The Python SDK requires a running LongMemory server instance for persistent storage. evidence: README.md
Security
Risk level: Low risk
This brain runs
Install scripts (1)
Makefile(make install):corepack enable; pnpm install --frozen-lockfile
MCP servers (2)
integrations/claude-code-longmemory/.mcp.json(longmemory):longmemory mcp --project currentintegrations/gemini-cli-longmemory/gemini-extension.json(longmemory):longmemory mcp --project current
- Low risk: scripts-present (benchmarks/src/official.ts)
- Low risk: scripts-present (src/cli/index.ts)
- Low risk: scripts-present (tools/check-integrations.mjs)
Attribution and licence
- Created by
- CaviraOSS
- First committed by
- @nullure
- Declared authors
- CaviraOSS (declared in package.json)
- Publisher
- Cavira (Community)
- Source
- CaviraOSS/LongMemory · commit aec98ce
- Licence
- Apache License 2.0 (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by CaviraOSS.
Install from source
459 of its files are not served here, so there is no ZIP. CaviraOSS/LongMemory at aec98ce