Generated banner for memorix
Generated logo for memorix

memorix

Memory server

First committed by AVIDS2

Published in AVIDS2/memorix. Publisher page

926 GitHub stars

What it is

Local-first shared memory layer for AI coding agents across MCP clients, Git history, reasoning context, and project sessions.
— the description by AVIDS2

Summary from the brain’s metadata

Local-first shared memory layer for AI coding agents across MCP clients, Git history, reasoning context, and project sessions. One project memory system for Claude Code, Codex, CodeBuddy Code, Cursor, Windsurf, Copilot, Gemini CLI, OpenCode, Grok Build, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, Trae, DeepSeek Harness, WorkBuddy, and any MCP-capable agent.

How it works

Memory model: Hybrid

AutoGineer overview, from the brain’s own files

Memory model: Hybrid. Folders: .github (agent config, 3 files); .windsurf (agent config, 2 files); assets (attachments, 32 files); docs (docs, 65 files); examples (examples, 4 files); packages (source code, 836 files); scripts (scripts, 18 files); src (source code, 382 files). The agent writes CLAUDE.md.

Folders
FolderRoleFiles
.githubagent-config3
.windsurfagent-config2
assetsattachments32
docsdocs65
examplesexamples4
packagessource-code836
scriptsscripts18
srcsource-code382
teststests376
.codegraphfolder1
.opencodefolder1
.traefolder1
articlesfolder5
pluginsfolder64
stubsfolder1

The agent writes

Requirements

Apps: Docker

Runtimes: Node.js >=22.18.0, Bun

Databases: LanceDB, PostgreSQL, SQLite

API keys (by name): ANTHROPIC_API_KEY, API_ROUTE_API_KEY, ATLASCLOUD_API_KEY, CHEAPER_INFERENCE_API_KEY, GROQ_API_KEY, MEMORIX_API_KEY, MEMORIX_EMBEDDING_API_KEY, MEMORIX_HTTP_AUTH_TOKEN, MEMORIX_LLM_API_KEY, MEMORIX_RERANK_API_KEY, MINIMAX_API_KEY, MINIMAX_CN_API_KEY, OPENAI_API_KEY, OPENROUTER_API_KEY, REQUESTY_API_KEY, RUNCRATE_API_KEY

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

  1. This brain runs code automatically: 20 hooks (claude-code, codex). Review plugins/claude/memorix/hooks/hooks.json, plugins/codebuddy/memorix/hooks/hooks.json, plugins/codex/memorix/hooks/hooks.json, plugins/copilot/memorix/hooks/hooks.json before opening the folder in Claude Code. No step below turns a hook on for you.

    • plugins/claude/memorix/hooks/hooks.json: memorix hook
    • plugins/claude/memorix/hooks/hooks.json: memorix hook
    • plugins/claude/memorix/hooks/hooks.json: memorix hook
    • plugins/claude/memorix/hooks/hooks.json: memorix hook
    • plugins/claude/memorix/hooks/hooks.json: memorix hook
    • plugins/codebuddy/memorix/hooks/hooks.json: memorix hook --agent codebuddy
    • plugins/codebuddy/memorix/hooks/hooks.json: memorix hook --agent codebuddy
    • plugins/codebuddy/memorix/hooks/hooks.json: memorix hook --agent codebuddy
    • plugins/codebuddy/memorix/hooks/hooks.json: memorix hook --agent codebuddy
    • plugins/codebuddy/memorix/hooks/hooks.json: memorix hook --agent codebuddy
    • plugins/codex/memorix/hooks/hooks.json: memorix hook --agent codex
    • plugins/codex/memorix/hooks/hooks.json: memorix hook --agent codex
    • plugins/codex/memorix/hooks/hooks.json: memorix hook --agent codex
    • plugins/codex/memorix/hooks/hooks.json: memorix hook --agent codex
    • plugins/codex/memorix/hooks/hooks.json: memorix hook --agent codex
    • plugins/copilot/memorix/hooks/hooks.json: memorix hook --agent copilot
    • plugins/copilot/memorix/hooks/hooks.json: memorix hook --agent copilot
    • plugins/copilot/memorix/hooks/hooks.json: memorix hook --agent copilot
    • plugins/copilot/memorix/hooks/hooks.json: memorix hook --agent copilot
    • plugins/copilot/memorix/hooks/hooks.json: memorix hook --agent copilot
  2. Not scanned by AutoGineerAutoGineer could not scan everything it runs. https://www.npmjs.com/package/memorix
  3. First committed by AVIDS2. Published in AVIDS2/memorix. Licence: Apache License 2.0.

Usage

AutoGineer’s guidance for this type of brain

Add the server to your AI tool’s MCP configuration (see Set it up); your agent then stores and recalls memories through its tools.

Documentation by AVIDS2

<p align="center"> <img src="https://raw.githubusercontent.com/AVIDS2/memorix/main/assets/readme-hero.svg" alt="Memorix" width="720"> </p>

<h1 align="center">Memorix</h1>

<p align="center"> <strong>Local-first shared memory layer for AI coding agents.</strong><br> One project memory system for Claude Code, Codex, CodeBuddy Code, Cursor, Windsurf, Copilot, Gemini CLI, OpenCode, Grok Build, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Kiro, Antigravity, Trae, DeepSeek Harness, WorkBuddy, and any MCP-capable agent. </p>

<p align="center"> <a href="https://www.npmjs.com/package/memorix"><img src="https://img.shields.io/npm/v/memorix.svg?style=for-the-badge&logo=npm&color=cb3837" alt="npm"></a> <a href="https://www.npmjs.com/package/memorix"><img src="https://img.shields.io/npm/dm/memorix.svg?style=for-the-badge&logo=npm&label=monthly%20downloads&color=7c3aed" alt="monthly downloads"></a> <a href="https://github.com/AVIDS2/memorix/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/AVIDS2/memorix/ci.yml?style=for-the-badge&label=CI&logo=github" alt="CI"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-2563eb?style=for-the-badge" alt="license"></a> <a href="https://github.com/AVIDS2/memorix"><img src="https://img.shields.io/github/stars/AVIDS2/memorix?style=for-the-badge&logo=github&color=facc15" alt="stars"></a> </p>

<p align="center"> <a href="https://registry.modelcontextprotocol.io/?q=io.github.AVIDS2%2Fmemorix">Listed in the official MCP Registry</a> <br> <a href="https://mcptoplist.com/server/io.github.AVIDS2%2Fmemorix"><img src="https://mcptoplist.com/badge/io.github.AVIDS2%2Fmemorix.svg" alt="View Memorix on MCP Toplist"></a> </p>

<p align="center"> <strong>Shared Project Memory</strong> | <strong>MCP</strong> | <strong>Git Memory</strong> | <strong>Reasoning Memory</strong> | <strong>Plugins</strong> | <strong>Orchestration</strong> </p>

<p align="center"> <a href="https://mem.rglens.com">Website</a> | <a href="README.zh-CN.md">Chinese</a> | <a href="#install">Install</a> | <a href="#capabilities">Capabilities</a> | <a href="#works-with-your-agent">Agents</a> | <a href="#quick-start">Quick Start</a> | <a href="#memory-model">Memory Model</a> | <a href="#memcode-bundled-terminal-agent">memcode</a> | <a href="ACTIVE_WORK.md">Active Work</a> | <a href="#docs">Docs</a> </p>


Maintainer status and the current public work boundary live in ACTIVE_WORK.md. It is the repository's single living work tracker.

<h2 id="what-memorix-is"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-overview.svg"><img src="assets/tags/section-overview.svg" alt="Memorix" height="32" /></picture></h2>

Memorix gives the AI coding agents you already use a shared, searchable project memory that survives new chats, IDE switches, terminal sessions, and handoffs. The memory lives under the Git project, not inside one chat window or one tool.

Use Claude Code today, Codex tomorrow, and Cursor in the afternoon. The agent can change; the project memory stays the same.

Use Memorix when you keep re-explaining the same project to a new agent session: the last session already figured something out, another IDE cannot see it, or a design decision is buried in a chat you cannot find anymore.

ProblemWhat Memorix adds
The next session forgets what the last session learnedProject-scoped memory, session summaries, timelines, and detail retrieval
Different agents know different thingsOne local memory pool available through MCP, hooks, CLI, SDK, and the bundled terminal agent
Git records what changed, but agents cannot recall it wellGit Memory turns commits into searchable engineering facts
Architecture decisions disappear into old chatsReasoning Memory stores why choices were made, with alternatives and trade-offs
Static rule files driftGotchas, fixes, and project skills evolve from real work
Parallel agent work gets messymemorix orchestrate coordinates task context, handoffs, locks, verification, and review loops

Memorix is local-first. SQLite is the canonical store. Small projects use the in-process Orama path; larger projects use a persistent SQLite FTS5 candidate index and, when available, an optional local LanceDB semantic shadow index. Both indexes are rebuildable and are never a limit on how many durable memories you can keep. LLM-backed formation and embedding remain optional.

Capabilities

Memorix is more than a memory store. It also installs agent integrations, keeps useful work events, turns commits into project facts, exposes a local control plane, and can coordinate multi-agent work when a task needs it.

CapabilityWhat it doesEntry point
Memory AutopilotA bounded task Workset with start files, current memory, source-backed knowledge, workflow starts, cautions, and verification. Compact JSON receipts keep fallback CLI use bounded too.memorix context "..." --brief-json, memorix resume "..." --brief-json, memorix_project_context
Observation MemorySearchable facts, fixes, gotchas, session summaries, and implementation notes scoped to the current Git projectmemorix memory, MCP memory tools
Curated Long-term MemoryDeliberately reviewed episodic, semantic, and procedural memory with source evidence. Only an explicitly portable user item can cross local projectsmemorix memory long-term
Code State and Code MemoryVersioned local code snapshots, source-backed TypeScript/JavaScript symbols and relations, file/symbol links, and freshness checks. Other languages keep the honest Lite fallback; an already-indexed local CodeGraph or SCIP result can add a bounded external outline without taking over the local index.memorix codegraph status|refresh|init|sync, automatic context refresh
Git MemoryCommit-derived engineering facts that answer what changed, where, and why it mattersmemorix ingest commit, git hook
Reasoning MemoryDesign rationale, alternatives, trade-offs, and risks that should survive beyond one chatmemorix reasoning, memory formation
Knowledge WorkspaceReview-gated source-backed claims, Markdown pages, and canonical project workflows; proposals never overwrite reviewed pages silentlymemorix knowledge, memorix knowledge workflow
Agent setupOne setup path for MCP, rules, hooks, skills, plugins, bundles, or extensions depending on the agentmemorix setup --agent <agent>
Agent doctorChecks whether agent MCP config and guidance are current, then repairs Memorix-owned entries when neededmemorix doctor agents, memorix repair agents
Hooks and skillsOptional capture from supported agents, plus reusable project skills promoted from durable knowledgememorix hooks, memorix skills
Dashboard and HTTPA local web UI and shared MCP endpoint for browsing memory, project state, teams, diagnostics, and preview-first cleanup, consolidation, deduplication, and retention actionsmemorix dashboard, memorix background start
Orchestration and team workTask planning, worker handoffs, file locks, messages, verification gates, and review loopsmemorix orchestrate, memorix team, memorix lock
memcodeA bundled terminal coding agent that already reads and writes the same project memorymemorix, memcode
CLI and SDKScriptable access for automation, imports/exports, diagnostics, and custom integrationsmemorix ..., createMemoryClient()
Optional multi-device syncPrivacy-filtered observation events with local SQLite kept canonical; default project scope, optional --scope user for every local project; GitHub JSONL, filesystem, S3, or Postgres relaymemorix sync store status|push|pull

<h2 id="works-with-your-agent"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-agents.svg"><img src="assets/tags/section-agents.svg" alt="Works with every agent" height="32" /></picture></h2>

Memorix connects through the interfaces each agent already supports: plugin packages, MCP, project rules, hooks, skills, or the bundled terminal agent. memorix setup chooses the right setup for each agent and keeps stdio MCP as the default transport.

<table> <tr> <td align="center" width="12.5%"> <a href="https://claude.com/product/claude-code"><img src="https://github.com/anthropics.png?size=120" alt="Claude Code" width="48" height="48"></a><br> <strong>Claude Code</strong><br> <sub>official plugin + MCP + hooks + skills</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/openai/codex"><img src="https://github.com/openai.png?size=120" alt="Codex CLI" width="48" height="48"></a><br> <strong>Codex CLI</strong><br> <sub>official plugin + MCP + AGENTS.md</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/features/copilot"><img src="https://github.githubassets.com/images/modules/site/copilot/copilot.png" alt="GitHub Copilot CLI" width="48" height="48"></a><br> <strong>GitHub Copilot CLI</strong><br> <sub>plugin + MCP + hooks + skills</sub> </td> <td align="center" width="12.5%"> <a href="https://cursor.com"><picture><source media="(prefers-color-scheme: dark)" srcset="https://svgl.app/library/cursor_dark.svg"><img src="https://svgl.app/library/cursor_light.svg" alt="Cursor" width="48" height="48"></picture></a><br> <strong>Cursor</strong><br> <sub>MCP + rules + skills</sub> </td> <td align="center" width="12.5%"> <a href="https://windsurf.com"><picture><source media="(prefers-color-scheme: dark)" srcset="https://svgl.app/library/windsurf-dark.svg"><img src="https://svgl.app/library/windsurf-light.svg" alt="Windsurf" width="48" height="48"></picture></a><br> <strong>Windsurf</strong><br> <sub>MCP + rules + hooks</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/google-gemini/gemini-cli"><img src="https://github.com/google-gemini.png?size=120" alt="Gemini CLI" width="48" height="48"></a><br> <strong>Gemini CLI</strong><br> <sub>extension + MCP + hooks + skills</sub> </td> </tr> <tr> <td align="center" width="12.5%"> <a href="https://github.com/opencode-ai/opencode"><picture><source media="(prefers-color-scheme: dark)" srcset="https://svgl.app/library/opencode-dark.svg"><img src="https://svgl.app/library/opencode.svg" alt="OpenCode" width="48" height="48"></picture></a><br> <strong>OpenCode</strong><br> <sub>local plugin + MCP + skills + AGENTS.md</sub> </td> <td align="center" width="12.5%"> <a href="https://pi.dev"><img src="https://pi.dev/favicon.svg" alt="pi coding agent" width="48" height="48"></a><br> <strong>pi coding agent</strong><br> <sub>package + extension + skill</sub> </td> <td align="center" width="12.5%"> <a href="https://kiro.dev"><img src="https://kiro.dev/icon.svg" alt="Kiro" width="48" height="48"></a><br> <strong>Kiro</strong><br> <sub>MCP + steering + hooks</sub> </td> <td align="center" width="12.5%"> <a href="https://antigravity.google"><img src="https://antigravity.google/assets/image/antigravity-logo.png" alt="Antigravity" width="48" height="48"></a><br> <strong>Antigravity</strong><br> <sub>plugin + MCP + hooks + skills</sub> </td> <td align="center" width="12.5%"> <a href="https://www.trae.ai"><img src="https://github.com/Trae-AI.png?size=120" alt="Trae" width="48" height="48"></a><br> <strong>Trae</strong><br> <sub>MCP + project rules</sub> </td> <td align="center" width="12.5%"> <img src="https://raw.githubusercontent.com/AVIDS2/memorix/main/assets/logo.png" alt="memcode" width="48" height="48"><br> <strong>memcode</strong><br> <sub>bundled terminal agent</sub> </td> </tr> <tr> <td align="center" width="12.5%"> <a href="https://docs.openclaw.ai"><img src="https://raw.githubusercontent.com/openclaw/openclaw/main/ui/public/favicon.svg" alt="OpenClaw" width="48" height="48"></a><br> <strong>OpenClaw</strong><br> <sub>bundle + MCP + hooks + skills</sub> </td> <td align="center" width="12.5%"> <a href="https://hermes-agent.nousresearch.com"><img src="https://hermes-agent.nousresearch.com/icon.png" alt="Hermes Agent" width="48" height="48"></a><br> <strong>Hermes Agent</strong><br> <sub>plugin + MCP + hooks + skills</sub> </td> <td align="center" width="12.5%"> <a href="https://omp.sh"><img src="https://omp.sh/favicon.png" alt="Oh-my-Pi" width="48" height="48"></a><br> <strong>Oh-my-Pi</strong><br> <sub>package + MCP + hooks + skills</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/deepseek-ai/deepseek-harness"><img src="https://github.com/deepseek-ai.png?size=120" alt="DeepSeek Harness" width="48" height="48"></a><br> <strong>DeepSeek Harness</strong><br> <sub>MCP patch + AGENTS.md + skills</sub> </td> <td align="center" width="12.5%"> <a href="https://modelcontextprotocol.io"><img src="https://github.com/modelcontextprotocol.png?size=120" alt="Any MCP Client" width="48" height="48"></a><br> <strong>Any MCP Client</strong><br> <sub>stdio or HTTP MCP</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/xai-org/grok-build"><picture><source media="(prefers-color-scheme: dark)" srcset="https://media.x.ai/v1/website/spacexai-symbol-white-transparent-0c31957f.png"><img src="https://media.x.ai/v1/website/spacexai-symbol-black-transparent-6435cf42.png" alt="Grok Build" width="48" height="48"></picture></a><br> <strong>Grok Build</strong><br> <sub>native hooks + AGENTS.md</sub> </td> </tr> </table>

<p align="center"> <sub>Works with agents that speak MCP, expose hooks/rules, or support plugin/package entries. One local-first memory layer shared across all of them.</sub> </p>

Integration surfaces:

SurfaceWhat it doesMemorix entry
Setup commandInstalls the recommended one-time user-level Memorix integrationmemorix setup --agent <agent> --global
MCPGives an agent compact Memorix tools for project context, search, detail retrieval, storage, and resolutionbundled in setup packages or memorix serve
Usage guidanceTeaches an agent when and how to use Memorix without forcing memory lookup on every promptbundled or generated by memorix setup
HooksOptional capture of prompts, tool events, file edits, session lifecycle events, and native compaction checkpoints where the agent exposes thembundled or generated by memorix setup
Plugin or bundle packageInstalls plugin, compatible-bundle, or package files where the agent supports themClaude Code, Codex, CodeBuddy Code, GitHub Copilot CLI, Antigravity, OpenClaw, Hermes Agent, Oh-my-Pi, Pi
ExtensionInstalls extension files where the agent supports themGemini CLI
Local pluginInstalls local plugin files where the agent loads them directlyOpenCode
MCP/rules configWrites MCP, rules, steering, guidance, or hook config for IDEs and agents that expose those surfacesCursor, Windsurf, Kiro, Trae, DeepSeek Harness, WorkBuddy
SkillsTurns durable project knowledge into reusable task guidancememorix skills and memorix_promote
memcodeOpens the bundled terminal agent that already uses Memorix memorymemorix or memcode

See Integration Surfaces for the current support matrix and what each generated file means.

Use the same setup command without --global only when you intentionally want repo-local guidance, rules, or hooks in the current Git project.

CLI, MCP, and HTTP are different entry points:

  • memorix CLI is the direct command surface for setup, memory search/store, Git Memory, import/export, dashboard, orchestration, diagnostics, and automation.

  • memorix serve is the stdio MCP bridge used by IDEs and coding agents. Its default tool profile is micro, so agents see only the compact core tool set.

  • memorix background start / memorix serve-http run the HTTP service for a shared endpoint, dashboard, VPS Docker deployment, or multiple clients.

Multi-device store sync is opt-in and separate from HTTP sharing. It never uploads the live SQLite database or WAL files. By default it only relays qualified project-visible observations for the current Git project; personal, agent-targeted, candidate, and ephemeral records stay local. Pass --scope user to include every local project. Set MEMORIX_SYNC_PROVIDER and inspect memorix sync store status --json before the first push.

<h2 id="install"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-install.svg"><img src="assets/tags/section-install.svg" alt="Install" height="32" /></picture></h2>

Requirements:

  • Node.js >=22.18.0

  • Git, because project identity is derived from the real Git root

Install and initialize:

npm install -g memorix
memorix init --global                   # optional defaults
memorix setup --agent claude --global   # or codex, copilot, cursor, pi, gemini-cli, opencode,
                                       # codebuddy, windsurf, kiro, antigravity, trae, openclaw, hermes, omp

memorix init is optional. It creates or updates TOML configuration:

  • ~/.memorix/config.toml for global defaults

  • <git-root>/memorix.toml for optional project overrides

Legacy memorix.yml, .env, and ~/.memorix/config.json are still read for compatibility, but new setup flows use TOML.

If you want repo-local guidance or hooks for a specific repository, run the same setup command from inside that repo without --global. Codex is the exception: its supported path is the user-level plugin install, so Memorix leaves project .codex configuration alone.

<h2 id="quick-start"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-quick-start.svg"><img src="assets/tags/section-quick-start.svg" alt="Quick Start" height="32" /></picture></h2>

Connect an existing agent

Use the setup command first. The global form is the normal one-time install:

memorix setup --agent claude --global
memorix setup --agent codex --global
memorix setup --agent copilot --global
memorix setup --agent cursor --global
memorix setup --agent pi --global
memorix setup --agent gemini-cli --global
memorix setup --agent opencode --global
memorix setup --agent windsurf --global
memorix setup --agent kiro --global
memorix setup --agent antigravity --global
memorix setup --agent trae --global
memorix setup --agent openclaw --global
memorix setup --agent hermes --global
memorix setup --agent codebuddy --global
memorix setup --agent omp --global
memorix setup --agent dsh --global
memorix setup --agent workbuddy --global
memorix setup --agent grok --global

What it installs depends on the target agent, but the goal is the same: make Memorix available wherever you open that agent without asking you to wire every repo by hand.

  • Claude Code: installs the Memorix plugin package, adds CLAUDE.md guidance, and enables hook capture when you do not pass --noHooks.

  • Codex: installs one user-level Memorix plugin with bundled stdio MCP, skills, and lifecycle hooks. It does not write project-local .codex config or change your model, approval, or sandbox settings. When Codex asks, review the plugin hook definition once with /hooks; --noHooks skips automatic capture.

  • GitHub Copilot CLI: installs the Copilot plugin package and official Memorix skills.

  • Pi: installs the Pi extension/skills package and native MCP config (Pi 1.0+): ~/.pi/agent/mcp.json with --global, or .pi/mcp.json for project setup.

  • Cursor: writes Cursor MCP/rules/config entries in the chosen scope.

  • Gemini CLI: installs the extension package, GEMINI.md context, hooks, and skills. Antigravity CLI has an official Gemini CLI migration path, but Gemini CLI remains an active standalone target.

  • OpenCode: installs the local plugin file, opencode.json, skills, and AGENTS.md guidance.

  • Windsurf, Kiro, Trae: write the MCP/rules/hooks files the target supports.

  • Antigravity: installs the official plugin package with plugin.json, mcp_config.json, hooks.json, rules, and skills under ~/.gemini/config/plugins/memorix or .agents/plugins/memorix.

  • OpenClaw: installs an OpenClaw-compatible bundle with .mcp.json, official skills, and an OpenClaw HOOK.md/handler.ts hook pack.

  • Hermes Agent: installs into Hermes home (%LOCALAPPDATA%\hermes on native Windows, ~/.hermes elsewhere, or HERMES_HOME), enables the plugin in config.yaml, registers plugin hooks, slash/CLI commands, skills, and writes MCP config.

  • CodeBuddy Code: installs a user-scope local marketplace plugin under ~/.codebuddy/memorix-local with MCP, skills, and hooks. It does not change existing CodeBuddy model, permission, or settings files; CodeBuddy keeps third-party hook approval in its own /hooks flow.

  • Oh-my-Pi: installs an omp.extensions package with extension hook events, a memorix command, official skills, and writes MCP config.

  • DeepSeek Harness: writes a Memorix @deepseek-ai/dsh-mcp-client row into $DSH_HOME/cordis.patch.yml (default ~/.dsh/cordis.patch.yml), appends guidance to the harness AGENTS.md, and installs official skills under $DSH_HOME/skills. The row follows DSH's own shipped Memorix reference, so tools appear as mcp__memorix__*.

  • WorkBuddy: writes a Memorix MCP server row into ~/.workbuddy/mcp.json (or <project>/.workbuddy/mcp.json for project installs) and appends guidance to AGENTS.md. Tools appear as mcp__memorix__*; there is no hooks surface.

  • Grok Build: installs native lifecycle hooks under ~/.grok/hooks/memorix.json and guidance in ~/.grok/AGENTS.md. MCP stays host-owned by default; pass --mcp http to write [mcp_servers.memorix] with url = "http://localhost:3211/mcp". Project-local hooks require Grok /hooks-trust, while global hooks are trusted. Set GROK_HOME to use a custom Grok home.

Need a quieter install? Add --noHooks for targets where setup can control hook capture separately from the host's official package entry. It keeps MCP and guidance, but skips Memorix hook capture.

If you intentionally want repo-local guidance or hooks, run the same command inside that repository without --global.

If your agent only needs a manual MCP entry, use stdio:

{
  "mcpServers": {
    "memorix": {
      "command": "memorix",
      "args": ["serve"]
    }
  }
}

For an npm-based MCP client or registry tester, use the complete command npx -y memorix serve. The serve argument matters: memorix without arguments opens the bundled memcode terminal agent when run by a human, while MCP clients should start the stdio server explicitly.

For a manually managed Claude Code entry, add "alwaysLoad": true inside the memorix server object. This lets Claude Code expose Memorix tools during print-mode startup; memorix doctor agents --agent claude can detect and repair a missing setting.

HTTP is not required for normal setup. Use it only when you intentionally want a shared background service, dashboard, VPS Docker deployment, or multiple clients using the same endpoint. Local development uses the Node service directly and does not require Docker:

memorix background start

Then point the client at:

http://localhost:3211/mcp

In HTTP mode, agents should bind the active repo explicitly with memorix_session_start(projectRoot=...) when the client can provide the workspace path. Git remains the final source of truth for project identity.

Uninstall

Preview what will be removed:

memorix uninstall --dry-run

Stop the background service and remove hooks:

memorix uninstall --background --hooks

Full cleanup:

memorix uninstall --yes --background --hooks --purge-data
npm uninstall -g memorix

memorix uninstall reports MCP config entries for manual cleanup instead of silently editing every MCP file it finds.

Work from the CLI
memorix --cwd /path/to/repo resume "continue release blocker"
memorix checkpoint list
memorix memory search --query "release blocker"
memorix memory --help

# Optional: activate one local agent identity for personal/team records and coordination.
memorix identity join --agent-type codex --name codex-main
memorix memory store --text "private investigation note" --visibility personal
memorix task create --description "verify the release package"

# Deliberate durable memory: create a candidate, then review it before it can enter a Workset.
memorix memory long-term add --kind procedural --scope user --portability portable --title "Release verification preference" --text "Run focused tests and a packed-package smoke before publishing." --applicability "When publishing an npm package."
memorix memory long-term qualify --id <id> --reason "The user explicitly confirmed this preference."
memorix memory long-term approve --id <id> --reason "Reviewed for future local projects."

memorix transfer export --format json --out ./.memorix-export.json
memorix transfer import --file ./.memorix-export.json
memorix reasoning search --query "why sqlite"
memorix git-hook --force
memorix ingest log --count 20
memorix workbench

The CLI is direct and does not depend on an MCP session. It binds to the current Git project, or to the project supplied with --cwd. Without an active identity it reads, writes, and exports project-visible memory only. Use memorix identity join or memorix identity use --agent-id <id> only when you intentionally need personal/team memory or coordinated task actions; memorix identity clear returns the terminal to project scope. --as <active-agent-id> is the one-command alternative for scripts. Both camelCase and kebab-case flags are accepted.

Manage controlled media

Media is opt-in. An explicit local import is copied into Memorix's local data directory, hashed, and kept outside the Git worktree. It becomes normal memory only when you attach it. Memorix never captures every screenshot or tool output. An asset may be up to the configured media limit (100 MiB by default). Automatic vision analysis is deliberately capped at 20 MiB; a larger image is still kept and can be attached, but Memorix records a clear text fallback instead of sending an oversized payload to a model provider.

memorix media import --path ./architecture.png --json
memorix media attach --asset <asset-id> --title "Architecture diagram" --json
memorix media list --kind image --json
memorix media show --asset <asset-id> --json
memorix media remove --asset <asset-id> --force --json

# Controlled derivations: explicit, bounded, and attachable to memory.
memorix media derive-pdf --asset <asset-id> --attach --json
memorix media derive-audio --asset <asset-id> --attach --json

# Legacy image analysis now uses the same controlled asset lifecycle.
memorix ingest image --path ./architecture.png --json

MiniMax image generation is a deliberate CLI operation. Video generation returns a durable job immediately; inspect or cancel that job rather than waiting in an agent request.

# Configure MINIMAX_API_KEY in your user environment or .env, never in Git.
memorix media generate image --prompt "A clean system architecture diagram" --json
# Image-to-image with a reference image (MiniMax image-01 / image-01-live):
memorix media generate image --prompt "Keep the subject, change the background" --image ./reference.png --json
memorix media generate video --prompt "A short product walkthrough" --json
memorix media status --job <media-job-id> --json
memorix media cancel --job <media-job-id> --json

memorix_media is the compact MCP companion in every profile, including micro. It supports import, attach, list, show, PDF/audio derivations, generation, and job status. MCP image and video generation are disabled by default because they may incur provider costs. Set MEMORIX_MCP_MEDIA_GENERATION=1 only after you deliberately want an agent to request billed MiniMax output. The normal OpenRouter text embedding lane is still text-only; media vectors are created only by a provider that explicitly declares support for that modality. Text descriptions and attachments remain a useful ordinary retrieval fallback.

Use the bundled terminal agent
memorix
# or
memcode

This opens memcode, a terminal coding agent that uses the same Memorix project memory as your MCP-connected agents.

<h2 id="memory-model"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-memory-model.svg"><img src="assets/tags/section-memory-model.svg" alt="Memory Model" height="32" /></picture></h2>

LayerStoresBest for
Observation Memoryfacts, gotchas, fixes, implementation notes"How does this work?"
Reasoning Memoryrationale, alternatives, constraints, risks"Why did we choose this?"
Git Memorycommit-derived engineering facts"What changed and where?"
Code Memoryfiles, symbols, import edges, and memory-to-code freshness"Which current code should I inspect first?"
Curated Long-term Memoryreviewed episodic events, stable facts, or reusable procedures with evidence"What should this agent still know or do later?"
Compact Continuityrecent host-native compact summaries or lifecycle markers"What survived the last context compaction?"

Search is project-scoped by default. scope="global" searches across projects. The search boosts Git Memory for "what changed" questions and reasoning records for "why" questions.

Long-term memory is deliberately not an automatic dump of every note. A source observation, Claim, workflow, session, and code snapshot keep their existing roles. An agent may ask memorix_store to create an additional long-term record; an explicit request auto-qualifies and enters task briefs as a durable anchor, while hook-captured or Git-derived candidates stay pending until qualified. Approval stays an explicit operator review. Use memorix memory long-term approve|archive|supersede to record the evidence-backed lifecycle. Only a manually created or user-confirmed user + portable item may be considered in another local project; project code, Git facts, tests, workflows, sessions, and observations cannot be promoted into portable user memory.

memorix context "..." is the default Memory Autopilot entry. It builds a compact task-lensed brief for agents: bugfix tasks lean toward tests and repros, release tasks lean toward package/changelog/build checks, onboarding tasks lean toward docs and entry points, and stale or unrelated memories stay in warning lanes instead of flooding the prompt. Use --fallback --brief-json when MCP is unavailable and a CLI fallback needs the same bounded brief plus a receipt of what was selected or omitted; --json remains the detailed diagnostic form. A normal new task does not receive an old-session dump. For an explicit continuation, memorix resume "..." adds only the latest useful session summary, up to three readable durable anchors, and at most one recent source-labelled host compact checkpoint. A durable anchor carries a durable:<id> reference, so an agent can expand the full reviewed record through memorix_detail only when needed. Keyword matches stay primary; when no reviewed durable item matches and an embedding provider is configured, Memorix makes one 1.8-second, no-retry semantic fallback for paraphrases or cross-language tasks. A slow or unavailable provider simply leaves the normal keyword-only Workset intact. A checkpoint is lifecycle evidence, not durable memory or a transcript backup. Agents should read the suggested files before trusting stored memory.

<h2 id="runtime-modes"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-runtime.svg"><img src="assets/tags/section-runtime.svg" alt="Runtime Modes" height="32" /></picture></h2>

You wantRun
Install an agent integration packagememorix setup --agent <agent> --global
Check or repair an agent integrationmemorix doctor agents --agent <agent>, memorix repair agents --agent <agent>
Manually expose stdio MCPmemorix serve
Run shared HTTP MCP plus dashboardmemorix background start
Debug HTTP MCP in the foregroundmemorix serve-http --port 3211
Inspect or manage memory directlymemorix memory, memorix reasoning, memorix session, memorix ingest, memorix media
Manage reviewed long-term memory`memorix memory long-term list
Retire memories from retrievalmemorix purge (current project), memorix purge --all --yes (everything)
Inspect native compaction continuity`memorix checkpoint list
Use the interactive terminal memory control planememorix workbench
Use the bundled terminal agentmemorix or memcode
Run orchestrated subagent workmemorix orchestrate --goal "..."

memorix serve defaults to --mode micro (9 tools) to keep MCP tool schemas small for agents. memorix setup writes --mode lite (21 tools) into the installed MCP config so the normal memory, continuity, and session surface is reachable. Use --mode team (29 tools) for coordination tools, or --mode full (48 tools) for advanced and compatibility tools such as checkpoint inspection.

Shortcuts and aliases: memorix search / remember / recent are direct query shortcuts, bg/bs start the background service, hook runs the hook launcher, and memorix config get|path|migrate inspects or migrates config files.

memorix orchestrate uses the current checkout for single-worker runs. When running multiple workers, it creates task worktrees under .worktrees/ and merges successful task branches back. Use --isolated to force worktree isolation for one worker, --no-worktree to disable it, --allow-dirty to run with uncommitted changes, and --no-auto-merge to preserve task worktrees for manual review.

<h2 id="memcode-bundled-terminal-agent"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-memcode.svg"><img src="assets/tags/section-memcode.svg" alt="memcode" height="32" /></picture></h2>

memcode is the terminal coding agent bundled with Memorix. It can read, edit, run commands, resume sessions, switch models, and use /memory commands — all backed by the same project memory as your MCP-connected agents.

Use it when you want a terminal agent with memory already wired in.

one Git project -> one shared Memorix memory pool

See docs/MEMCODE.md for the memcode-specific guide.

<h2 id="configuration"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-configuration.svg"><img src="assets/tags/section-configuration.svg" alt="Configuration" height="32" /></picture></h2>

Minimal ~/.memorix/config.toml:

[agent]
provider = "openai"
model = "gpt-4o"
api_key = "..."

[memory.llm]
provider = "openai"
model = "gpt-4o-mini"
api_key = "..."

[embedding]
provider = "auto"

[memory]
inject = "minimal"
formation = "active"

Use [memory.llm] and [embedding] for Memorix memory quality and retrieval. Use [agent] for the model memcode talks to while coding. Keep credentials in global config or environment variables, and do not commit secrets.

For the optional Atlas Cloud memory preset, run memorix init and choose Atlas Cloud, or set provider = "atlascloud" in [memory.llm]. It uses the OpenAI-compatible https://api.atlascloud.ai/v1 endpoint and reads ATLASCLOUD_API_KEY or the explicit MEMORIX_LLM_API_KEY.

For OpenRouter embeddings, use provider = "api", base_url = "https://openrouter.ai/api/v1", and model = "qwen/qwen3-embedding-8b". Memorix accepts OPENROUTER_API_KEY for that embedding endpoint; MEMORIX_EMBEDDING_API_KEY remains the explicit override.

For Requesty, choose Requesty in memorix init or set provider = "requesty" in [memory.llm] (endpoint https://router.requesty.ai/v1, key from REQUESTY_API_KEY or MEMORIX_LLM_API_KEY). Requesty embeddings use provider = "api", base_url = "https://router.requesty.ai/v1", and model = "openai/text-embedding-3-small" with REQUESTY_API_KEY.

For API Route, choose API Route in memorix init or set provider = "apiroute" in [memory.llm]. The preset uses https://global.api-route.com/v1 and deepseek-v4.1-flash, with your own API_ROUTE_API_KEY or MEMORIX_LLM_API_KEY. It is opt-in memory LLM processing; embeddings and memcode's model registry are configured separately. See configuration.

For Cheaper Inference, choose Cheaper Inference in memorix init or set provider = "cheaperinference" in [memory.llm]. The preset uses https://api.cheaperinference.com/v1 and gpt-5.4-mini, with your own CHEAPER_INFERENCE_API_KEY or MEMORIX_LLM_API_KEY. It is opt-in memory LLM processing; embeddings and memcode's model registry are configured separately. See configuration.

For Runcrate, choose Runcrate in memorix init or set provider = "runcrate" in [memory.llm]. The preset uses https://api.runcrate.ai/v1 and the open-weight deepseek-ai/DeepSeek-V4.1-Flash, with your own RUNCRATE_API_KEY or MEMORIX_LLM_API_KEY. It is opt-in memory LLM processing; embeddings and memcode's model registry are configured separately. See configuration.

For controlled MiniMax media generation, set MINIMAX_API_KEY (global) or MINIMAX_CN_API_KEY (China region) in your environment or .env. The media library never stores that key, a signed output URL, or base64 payloads. CLI generation is explicit; MCP generation additionally requires MEMORIX_MCP_MEDIA_GENERATION=1.

<h2 id="docker"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-docker.svg"><img src="assets/tags/section-docker.svg" alt="Docker" height="32" /></picture></h2>

Docker is a VPS/hosted HTTP deployment option, not a requirement for local development or stdio MCP:

docker compose up --build -d

Then open:

  • dashboard: http://localhost:3211

  • MCP: http://localhost:3211/mcp

  • health: http://localhost:3211/health

The container must be able to access the repository path passed as projectRoot for project-scoped Git and config behavior.

<h2 id="sdk"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-sdk.svg"><img src="assets/tags/section-sdk.svg" alt="SDK" height="32" /></picture></h2>

Use Memorix directly from TypeScript:

import { createMemoryClient } from 'memorix/sdk';

const client = await createMemoryClient({ projectRoot: '/path/to/repo' });

await client.store({
  entityName: 'auth-module',
  type: 'decision',
  title: 'Use JWT for API auth',
  narrative: 'Chose JWT because the API is stateless and used by multiple clients.',
});

const results = await client.search({ query: 'auth decision' });
await client.close();

<h2 id="docs"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-docs.svg"><img src="assets/tags/section-docs.svg" alt="Docs" height="32" /></picture></h2>

Start hereUse when
Docs MapYou want the shortest route to the right guide
Setup GuideInstalling, using memorix setup, choosing stdio vs HTTP
Integration SurfacesPlugin packages, MCP, project rules, hooks, and skills support
ConfigurationTOML config, model lanes, compatibility files
API ReferenceMCP tools and CLI commands
Git MemoryCommit ingestion and searchable engineering truth
DockerContainerized HTTP service
memcodeUsing the bundled terminal agent
Agent PlaybookAI-facing execution guide for install, binding, hooks, and troubleshooting
DevelopmentContributing, testing, release checks
ChangelogWhat changed in each release

LLM-friendly summaries: llms.txt and llms-full.txt.

<h2 id="development"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-development.svg"><img src="assets/tags/section-development.svg" alt="Development" height="32" /></picture></h2>

git clone https://github.com/AVIDS2/memorix.git
cd memorix
npm install
npm run lint
npm test
npm run build

Community

Desktop and shell integrations built on Memorix:

  • omarchy-memorix — a native Omarchy shell bar widget: pool stats, live global search, per-project breakdown, recent memories, and a workbench launcher. Read-only over ~/.memorix/data; no daemons, no telemetry.

Built something on top of Memorix? Open a PR to list it here.

<h2 id="acknowledgements"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-acknowledgements.svg"><img src="assets/tags/section-acknowledgements.svg" alt="Acknowledgements" height="32" /></picture></h2>

Memorix draws from the MCP ecosystem and prior memory projects such as mcp-memory-service, MemCP, claude-mem, and Mem0. memcode is based on the Pi coding-agent codebase and adapts its terminal-agent model for the Memorix ecosystem.

<h2 id="license"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-license.svg"><img src="assets/tags/section-license.svg" alt="License" height="32" /></picture></h2>

Apache 2.0

<h2 id="star-history">Star History</h2>

<a href="https://github.com/AVIDS2/memorix/stargazers"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://mem.rglens.com/metrics/star-history-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://mem.rglens.com/metrics/star-history-light.svg"> <img alt="Memorix Star History" src="https://mem.rglens.com/metrics/star-history-light.svg" width="100%"> </picture> </a>

<sub>Updated automatically from GitHub's privacy-safe star history API. No generated PRs.</sub>

ACTIVE_WORK.md

Memorix Active Work

This is the single living work-status document for this repository. Read it before resuming substantial work, update it after a material decision or milestone, and do not create parallel progress logs.

Last updated: 2026-11-11

Long-term roadmap: docs/ROADMAP-1.9.12-2.0.md

Local verification rule: run the frontend, HTTP service, MCP server, and tests directly with Node/npm on the E: workspace. Do not start Docker or add local Docker data. The Dockerfile and image workflow remain deployment artifacts for the VPS/hosted build path only.

Architecture Audit and 1.11 Refactor Baseline (2026-11-05)

  • [x] Audited the current tree, runtime entrypoints, persistence/index paths, recent issue history, npm download data, and current agent-memory ecosystem. The dominant risk is boundary coupling between canonical SQLite records, derived views, retrieval policy, host adapters, and maintenance jobs.

  • [x] Updated docs/ARCHITECTURE.md with the Memory Kernel, Runtime Facade, Derived View, RetrievalPlan/Receipt, and MaintenanceResult target contracts. Added ADR-017 and updated the module/roadmap documents.

  • [x] Added the first executable kernel slice: src/core/retrieval-contracts.ts normalizes retrieval input before Orama/FTS/Lance selection. The focused contract and search regression tests pass.

  • [x] 1.11 P1 slice: RuntimeContext validates a resolved project and freezes a per-request config snapshot; CodeGraph context uses it. Lance now has a concrete DerivedView adapter with status/refresh/rebuild/compact/close, and the Orama bridge writes through that adapter. Non-finite retrieval numeric inputs are normalized before searching.

  • [x] 1.11 P1 derived-view and host boundary slice: FTS5, Orama, Lance, and CodeGraph expose the common lifecycle; the src/core dependency direction is now guarded by a test; MaintenanceResult is defined in the kernel and rejects invalid progress before it reaches SQLite. Maintenance progress is durable in SQLite. The main MCP server captures an immutable RuntimeContext at bind/activation/switch boundaries and CodeGraph host paths consume its frozen config snapshot.

  • [ ] 1.11 P1 remainder: expose a single adapter registry and migrate any remaining dashboard/diagnostic paths that still inspect raw index state.

  • [x] 1.11 derived-view adapters: SQLite FTS5 and Orama now expose the common DerivedView lifecycle with explicit status, rebuild/refresh, compact, and close behavior; CodeGraph now exposes the same lifecycle over Lite refresh and SQLite compaction. Focused tests cover stale/missing and shutdown states.

  • [ ] 1.11 P2: route observation, Git, and explicit MCP writes through one canonical write pipeline with an idempotent derived-work outbox. Observation inserts and topic-key updates now commit vector backfill, qualification, and claim derivation jobs with the source row. Failed topic updates or linked-record callback failures preserve the previous Orama result. Maintenance jobs persist attempted/succeeded/failed/remaining progress; project-level work completes only after the worker confirms no missing vectors remain. CodeGraph/evidence projections now have an idempotent observation-project outbox job with immediate-success acknowledgement and isolated retry; other canonical write entrypoints still need the same audit.

  • [x] 1.11 P2 active-job race: a write arriving while a deduplicated job runs now requests one follow-up pass in the same SQLite row. Completion, retry exhaustion, lease recovery, and recurring-job reschedule preserve that work; provider cooldown remains bounded. Existing maintenance rows migrate by adding a defaulted rerun_requested column.

  • [ ] 1.11 P3: move ranking, freshness, provenance, admission, abstention, and progressive disclosure into one RetrievalFacade. The current slice attaches each result to its own diagnostics and derived-view receipt; compact search, SDK, TUI search, search-index probes, TUI chat, and workset assembly consume request-scoped state. Feedback policy now uses the active canonical data directory and reports feedback omissions separately from embedding fallback. The existing 20-case offline task matrix passes 20/20 with a fresh 40k store gate, but it does not establish improvement on unseen live issue-resolution tasks or remote vectors.

  • [x] 2026-11-11 local regression evidence: 356 files passed, 3 skipped; 3323 tests passed, 5 skipped; build passed. The 40k gate passed with 32.8ms warm SDK search, 280.6ms HTTP MCP cold search, 421.6MB peak RSS, and all persistence checks. These are local Windows/Node 22 measurements.

  • [x] 2026-11-11 remote main integrity repair: malformed Git Data API merge tree was corrected in #388; remote main now contains 1820 blobs and all source/test/docs files. #389, #390, and #391 are merged.

  • [x] 2026-11-05 Windows/Node 22 offline 40k gate: 40,000 seeded records, 74.6s seed, 33.6ms warm SDK search, 418.7ms HTTP MCP cold search, 411.8MB peak RSS, and successful SDK/HTTP/hook persistence checks.

  • [ ] Release blocker: GitHub Actions cannot start jobs while the repository account is locked for billing; the local npm login also returns E401.

  • [x] Release integrity guard: .github/workflows/publish.yml now runs for a published GitHub Release as well as manual dispatch, and release events force the npm publish/visibility gate before MCP Registry publication. The existing v1.10.3 mismatch still requires restored npm credentials to repair.

  • [x] Issue #385 safety fix: consolidation now tokenizes Unicode letters and numbers, treats two empty fingerprints as unrelated, and retains exact Korean duplicate consolidation. Automatic retention, consolidation, and long-term maintenance re-check memory.autoCleanup at execution time and complete without mutation when it is disabled. Repository source/tag/release are at 1.10.3, but npm and MCP Registry remain at 1.10.2. Do not claim 1.10.3 is published until those external gates clear.

1.10.3 Patch and Runcrate (2026-11-05)

  • Issue #365 identified unbounded LanceDB metadata growth from one-row commits, absent compaction, and cold-start re-embedding after cache eviction. The patch batches individual writes, optimizes periodically, checks persisted vector IDs before backfill, and adds memorix repair index for existing tables.

  • PR #366 (Hermes skill paths) and PR #368 (MCP structured results/card) are merged into the patch baseline. PR #369 and the release commit passed all seven CI checks. Tag v1.10.2, npm with provenance, the MCP Registry, and GitHub Release are published from d1bb6fa.

  • Local TypeScript checks and build pass. Full suite: 345 files passed, 3 skipped; 3,240 tests passed, 5 skipped.

  • PR #367 adds native MCP setup for Pi 1.0+ at project .pi/mcp.json and user ~/.pi/agent/mcp.json, with stdio/HTTP/none modes. The extension lifecycle capture and generated shared skills remain. PR #367 was merged as f631ad9 after the patch tag and is not in the 1.10.2 package. Its combined commit passed seven CI checks; local typecheck and 104 focused tests also passed. One local full-suite run hit a Windows Vitest temporary SSR-cache ENOENT after 2,577 passing tests; representative files passed on an isolated rerun.

  • PR #372 adds the opt-in Runcrate memory LLM preset with isolated key resolution and OpenAI-compatible routing. It was locally verified with 185 focused tests and merged before this release.

  • Issues #371, #373, #374, and #375 are fixed in the current release candidate. Local build, typecheck, and full suite pass: 348 files passed, 3 skipped; 3,283 tests passed, 5 skipped. GitHub Actions currently fails before any job step starts, so the remote runner outage is recorded separately from code verification.

Current Product State

  • 1.10.3 is the prepared patch release on the 1.10 line. It addresses LanceDB semantic-index growth and two agent integration defects.

  • The release keeps the canonical Dashboard Memory Map, removes the obsolete renderer/dependencies, makes reachable capabilities visible, and preserves the old MCP clients while adding the modern 2026-07-28 core contract.

  • SDK, CLI, hooks, and HTTP MCP share SQLite as the canonical flat data store. Large-store startup hydration uses bounded Orama batches so health remains responsive without rebalancing the index once per row.

  • MCP profiles are currently micro=9, lite=21, team=29, and full=48. Setup installs lite; advanced and compatibility tools remain opt-in so the default agent context stays small.

  • Contributor PR #260 was closed as superseded because its unlocked timeout fallback is unsafe; its diagnosis is credited and the stronger fail-closed fix shipped in 1.8.5. WorkBuddy PR #204 and continuation PR #266 are merged with their authorship retained; Star History PR #265 is also merged.

  • Release verification is green: MCP v2 direct tests, legacy and modern stdio/HTTP smoke, background concurrency smoke, P3/P4/P5/P6 suites, npm run lint, the sequential low-memory build, the full local regression, and all 7 remote CI checks passed. Live embedding tests remain intentionally skipped when their environment flag is absent.

1.9.11 Release Closeout (2026-10-17)

  • [x] Root package metadata, lockfile, MCP Registry metadata, plugin manifests, and changelog entries are synchronized at 1.9.11.

  • [x] The release contains the merged 1.9.x maintenance fixes and the independently validated API Route and session-label contributions listed below.

  • [x] Tag v1.9.11, npm [email protected], the official MCP Registry record, and the GitHub Release are published from commit 5aad490.

1.9.12 Release Closeout (2026-10-18)

  • [x] The publish workflow verifies npm registry signatures before build and test, and fails closed instead of retrying without provenance.

  • [x] Opt-in background npm updates disable lifecycle scripts during install.

  • [x] Full local and remote release gates passed; v1.9.12, npm, MCP Registry, and GitHub Release are published from commit d5d8b5f.

  • [x] Begin the 1.10 contract-convergence iteration from the roadmap.

1.10 Iteration Started (2026-10-18)

  • [x] Context governance receipts now expose freshness, trust, quality, conflict, and evidence count for every optional-evidence decision. The agent-facing prompt and MCP tool schemas remain unchanged.

  • [x] Focused Workset, governor, graph-context, CLI context, and MCP profile tests pass (54 tests).

  • [x] Context receipts now also expose retrieval mode, code provider, fallback reason, optional candidate count, selected count, and omitted count. The auto-context and context-pack surfaces pass their known retrieval state.

  • [x] Budget omissions now carry up to three stable sample IDs per category, without storing raw evidence content in the receipt.

  • [x] Initial retrieval baseline recorded on Windows Node 22.22.3, 1,000 records, 20 hot SDK runs, embeddings/LLM disabled: specific query p95 9.629ms and broad query p95 12.079ms. This is a local lexical baseline, not a cross-platform SLO.

  • [x] The same benchmark at 10,000 records produced seed/index 12.633s, specific query p95 17.259ms, and broad query p95 125.991ms. Broad retrieval growth is now a measured 1.10 performance concern.

  • [x] At 40,000 records the same Windows hot SDK benchmark produced seed/index 45.658s, specific query p95 2.187ms, and broad query p95 84.462ms. The specific path is sensitive to hot-cache/query distribution; broad retrieval remains the stable capacity signal.

  • [x] The large-store gate now requests the bounded MCP receipt and records receipt assembly separately from end-to-end request time. On Windows Node 22.22.3 with 40,000 records, MCP context was 573.561ms end to end and receipt assembly was 7ms; the gate passed with 428.7MB peak RSS, 318.202ms cold MCP search, 2.733s hook write, and 157.485ms SDK reopen.

  • [x] Runtime/project binding now returns a privacy-safe structuredContent.binding receipt from memorix_session_start. It records resolved state, binding source, explicitness, project ID, hashed project root/data directory, and transport across legacy and stateless HTTP; focused server, legacy HTTP, and modern bridge tests pass without exposing raw paths or session handles.

  • [x] The binding receipt now also records verified Git remote state (hash and sanitized host) plus handle lease/expiry state and timestamps. Stateless handle creation uses the project data directory, so a handle cannot redirect the next request to the control-plane base database. Focused binding, serve mode, modern bridge, and startup tests pass.

  • [x] The adapter registry now generates schema version 1 capability manifests for all 19 agent targets. It covers transport/command, artifacts, hook lifecycle, rules/skills/guidance, scope, lifecycle actions, host-version evidence, runtime requirements, and generation sources. Setup targets are derived from the registry; Qwen is recorded as a hooks-only target rather than a false full-setup target. Registry, setup, doctor, and integration regressions pass.

  • [x] Agent doctor now includes manifest-derived transport observations, expected artifact categories, lifecycle support, registry source, and parity issues. Host-specific lanes remain explicitly skipped when the generic doctor has no reliable artifact check; Qwen is recognized as hooks-only instead of being treated as a complete MCP setup.

  • [x] Agent doctor now performs concrete artifact checks for stable rules and hook paths, including project/global scope and file existence. Package and skill roots remain explicit manifest-only data until an install-root contract makes those checks reliable.

  • [x] The memory ownership matrix is now canonical in docs/1.3-MEMORY-ARCHITECTURE.md. It records writer, verifier, default reader, and promotion rules for Observation, Reasoning, Claim, Wiki/Workflow, Session/Team, Long-term Memory, and CodeGraph, while keeping Task Workset as a derived delivery view.

  • [x] The existing evaluation harness now defines a 20-case 1.10 task matrix and a stable 15-metric contract across continuity, retrieval, safety, runtime, and integration. npm run gate:context-matrix validates the contract, while npm run gate:context-runtime executes the matrix against real runtime paths.

  • [x] The 1.10 runtime matrix passed 20/20 on Windows Node 22.22.3 with embeddings/LLM disabled. Hit precision/recall and stale/conflict rejection were 1.00/1.00, abstention precision was 0.95, matrix p50/p95 was 2ms/255ms, and peak RSS was 428,867,584 bytes.

  • [x] The packed 40k large-store gate passed with seed/index 45,571.959ms, SDK search 30.378ms, MCP context 518.983ms, receipt assembly 6ms, peak RSS 409.0MB, hook 2,634.153ms, and SDK reopen 85.095ms.

  • [x] The 100k capacity gate passed with seed/index 113,048.097ms, SDK search 39.71ms, MCP context 1,099.809ms, receipt assembly 7ms, peak RSS 409.4MB, SQLite disk count 100,002, and reopened count 100,001.

  • [x] The existing session replay baseline is recorded: embeddings disabled, 4/4 fixed questions hit, max turn 277 tokens, 0 over-budget turns, and session dedup reduced duplicate displays from 25% to 18.75% without losing hits. This covers only the mapped continuity/retrieval baseline cases.

  • [x] The HTTP control-plane /health response now exposes the same privacy-safe binding receipt with transport: dashboard, verified project/data-directory hashes, and Git remote state.

  • [x] Retrieval receipts now cross the compact engine, MCP search, and CLI JSON search surfaces. They record schema version, actual mode, candidate/result/ selected/omitted counts, token-budget omissions, fallback reason, token count, and elapsed time without query text, raw memory content, or local paths.

1.10.0 Release Closeout (2026-10-23)

  • [x] Root package metadata, server.json, plugin release manifests, and CHANGELOG.md are synchronized at 1.10.0.

  • [x] Release PR #358 merged as commit f2b7555; all 7 remote release checks, full local regression, package smoke, 40k/100k capacity gates, and npm signature checks passed.

  • [x] Tag v1.10.0, GitHub Release, npm [email protected], and official MCP Registry io.github.AVIDS2/[email protected] are published. npm integrity is sha512-Eyxg9TwkYef4YfmUG3xcB/4y6lqsJQxMStK3QJW51AF6Nb6k8MHoPKyzG0XuyYOTjiAUNA5h9DIAsV3W1KuCiw==.

1.10.1 Release Closeout (2026-10-23)

  • [x] Contributor PR #359 was revalidated on the current 1.10.0 main line and integrated through PR #361 (6558c8f). Cheaper Inference is opt-in, uses a dedicated key, and preserves the embedding/memcode provider boundaries.

  • [x] The original #359 was closed as superseded with the author attribution preserved in the integrated commit.

  • [x] The provider and derived-view receipt hardening are now staged in CHANGELOG.md as 1.10.1 release content.

  • [x] Release PR #363 merged as commit 7c51d34; all 7 release checks, full regression, build, package smoke, and npm signature audit passed.

  • [x] Tag v1.10.1, GitHub Release, npm [email protected], and official MCP Registry io.github.AVIDS2/[email protected] are published. npm integrity is sha512-Ic2xYLW/22KhnfX9/8/hJMeI+mPAdxR/TudcsH2ZpaCx74T5b+m3xdeOnyfHRnlbW/vXKqB31ezS6puVHLiZBQ==.

  • [x] Derived-view receipt hardening now reports FTS, Orama, embedding, and CodeGraph generation/freshness/rebuild status/failure reason through the bounded context and retrieval receipts. This is also unreleased and must be included in the next package release.

  • [x] The reproducible hot SDK benchmark was run at v1.9.11 and current 1.10 main with 1,000 records and 20 runs: specific p95 9.283ms -> 8.925ms and broad p95 12.301ms -> 12.298ms. This is a no-regression baseline, not an SLO or a statistical performance claim.

1.9.x Maintenance and Ecosystem Closeout (2026-10-16)

  • [x] Issue #330 was implemented through PR #333 (477e968) and merged in 17ec78a. The in-memory Orama index preserves Latin tokenization and adds bounded CJK character unigrams/bigrams for Chinese, Japanese, and Korean queries. The standard npm test entry was also restored by removing the unsupported Vitest 5 --minWorkers=1 flag. Local lint/build/focused tests and the full suite pass; Ubuntu, Windows, macOS, Docker, typecheck, Node 26, and registry CI all pass. #330 is closed.

  • [x] Issue #328 and the existing #3/#322-#325 fixes were implemented through PR #331 (82e05b0) and merged in f9331a8. Its Node 26 hook smoke and complete cross-platform CI pass; GitHub closed the linked issues after merge.

  • [x] The 2026-10 ecosystem scan used last30days-skill v3.28.0 plus Tavily. The strongest signals were bounded on-demand retrieval, progressive disclosure for MCP/skills, and explicit provenance/freshness against memory or context poisoning. Memorix already has admission, evidence, feedback, freshness, retention, and abstention primitives, so no speculative trust score subsystem was added; the next useful work is exposing those existing signals more consistently in receipts and operator views.

  • [x] #320 API Route provider contribution was independently validated and merged in ea3ce86; it remains opt-in and does not change the default model or embedding paths. #329 was also independently reviewed and merged in d13cfa6.

  • [x] PR #344 (ed7f0df) adds MiniMax M3.1 Flash support across the AI package and memcode: direct global/China metadata, provider-specific thinking normalization, the verified OpenRouter free route, legacy model lookup compatibility, and Flash as the memcode default. Its 7/7 CI passed; no live inference or unverified OpenCode route was claimed.

  • [ ] #297 is an external awesome-list submission rather than repository code work. #327 still lacks reproducible package/security evidence; #313 and #49 remain integration-boundary discussions.

1.9.5 Closeout (2026-09-20)

The release is v1.9.5 on main (658231f). The release gates below are complete. Detailed acceptance criteria and the public issue/PR disposition live in docs/KNOWN_ISSUES_AND_ROADMAP.md.

  • [x] P1 HTTP control-plane boundary and lifecycle: loopback default, explicit non-loopback security policy, body limits, synchronous listen failures, supervised background startup, and shutdown cleanup shipped.

  • [x] P1 project isolation: graph persistence, Dashboard, MCP, and legacy graph migration now carry project ownership.

  • [x] P1 migration safety: observation and subdirectory migrations are locked/atomic, project-aware, and fail closed on malformed source data.

  • [x] P1 store ownership and SQLite concurrency: SDK sibling lifetimes, sync ID allocation/tombstones, stale lock ownership, and release contracts have regression coverage.

  • [x] P2 capacity budgets: dashboard/team query caps, failed-job retention, embedding cache budgets, and long-lived project cache eviction shipped in merge commit 3a3dd49 through PR #306. The full local regression, real background-start smoke, and all seven remote CI checks passed.

1.9.x Capacity Slice (2026-09-21)

  • [x] TeamStore agents, locks, tasks, and inboxes are SQL-limited to 100 rows by default and 500 maximum; task/agent detail queries remain separate.

  • [x] Completed maintenance history is retained for 7 days and failed diagnostics for 30 days, both covered by retention tests.

  • [x] API, FastEmbed, and Transformers embedding caches enforce byte budgets; FastEmbed rejects oversized cache files before loading them.

  • [x] HTTP project-directory, TeamStore, and Dashboard store caches use bounded LRU-style maps instead of growing for every requested project.

  • [x] Local verification: lint, build, focused capacity tests (139 passed), and full regression (331 files / 3149 tests passed / 4 live embedding skipped).

  • [x] Remote verification: Linux, macOS, Windows, Docker control plane, Node 26 SQLite, typecheck, and MCP metadata checks all passed in PR #306.

  • [x] Large-store gate: 40,000 records passed on Windows/Node 22 with 51.4 s seed/index, 25.4 ms lexical search, 129.8 ms SDK reopen, 408.7 MiB peak RSS, durable HTTP/MCP/hook writes, and no failed checks.

1.9.x Task Continuity Ledger (2026-09-21)

  • [x] Added a project-scoped append-only SQLite ledger for task, requirement, decision, verification, risk, and outcome events.

  • [x] Added grouped MCP/CLI operations (start, record, show, list, close) with bounded inputs, credential redaction, and project isolation.

  • [x] Added optional taskId loading to Project Context so the bounded Workset includes continuity without changing the default prompt budget or micro tool profile.

  • [x] Added storage, Workset, MCP, profile, and HTTP integration tests.

  • [x] Added a deterministic outcome projection and replay cases for validated, at-risk, in-progress, and unverified task states. The projection is visible in structured receipts only; it does not rewrite memory relevance.

1.9.6 Release Closeout (2026-09-22)

The release is v1.9.6 on main. PR #312 merged the infrastructure closeout after the full Ubuntu, Windows, macOS, Docker, typecheck, native SQLite, and MCP metadata gates passed.

  • [x] Version metadata, Registry metadata, plugin manifests, changelog, and current product-line documentation are synchronized at 1.9.6.

  • [x] Local full regression and MCP/HTTP/background smoke verification passed.

  • [x] The release keeps the 1.9.x line; no 1.10 version jump was introduced.

1.9.7 Release Closeout (2026-09-28)

  • [x] Merged contributor PR #315: transient SQLITE_BUSY during FTS5 setup is retried before the handle is marked unavailable.

  • [x] Merged contributor PR #316: runtime embedding failures use the durable lexical search path for large stores instead of returning a silent empty set.

  • [x] Follow-up coverage also treats provider disappearance and runtime vector dimension mismatch as embedding-unavailable states, preserving the same lexical fallback contract.

  • [ ] The full local regression still has two unrelated non-Git CLI prompt assertions in tests/integration/release-blockers.test.ts; the affected search/fallback suites and typecheck pass.

  • [x] npm, GitHub Release, and the official MCP Registry publish workflow are synchronized at 1.9.7.

1.9.8 Release Closeout (2026-10-02)

  • [x] Closed #318 through PR #319: generated OpenCode plugins now support the v2 default id/setup contract while retaining v1 compatibility.

  • [x] Added event subscription, tool-hook, cleanup, and host session-ID coverage for the generated v2 plugin.

  • [x] PR #319 passed Ubuntu, macOS, Windows, Docker, typecheck, native SQLite, and MCP Registry metadata checks before merge.

  • [x] npm, GitHub Release, plugin manifests, and the official MCP Registry manifest are synchronized at 1.9.8.

1.9.9 Release Closeout (2026-10-02)

  • [x] Merged contributor PR #314: added an opt-in Requesty OpenAI-compatible memory/embedding provider with provider-specific key isolation and no new dependency.

  • [x] Independent verification passed: full build, focused provider/config tests (136 passed), and full regression (336 files passed, 2 skipped; 3179 tests passed, 4 skipped).

  • [x] npm, GitHub Release, plugin manifests, and the official MCP Registry manifest are synchronized at 1.9.9.

1.9.10 Release Closeout (2026-10-08)

  • [x] Merged #321 through PR #326: OpenCode 1.x now accepts the dual plugin export, receives lifecycle/file/command/message events through its generic event hook, and gets the Windows timeout mitigation.

  • [x] PR #326 passed Ubuntu, Windows, macOS, Docker, typecheck, native SQLite, and MCP Registry metadata checks.

  • [x] npm, GitHub Release, plugin manifests, and the official MCP Registry manifest are synchronized at 1.9.10.

1.9.6 Infrastructure Closeout (2026-09-22)

  • [x] Added leased, observable SQLite handle registry with idle LRU eviction; HTTP dashboard/team/runtime caches release leases on eviction and shutdown.

  • [x] Added bounded HTTP session admission (MEMORIX_MAX_HTTP_SESSIONS), SQLite/runtime/session/event-loop health fields, and MCP binding root/expiry indexes.

  • [x] Kept the official modern MCP per-request protocol server while pooling project business runtimes behind a bounded reference-counted pool keyed by shared data directory plus project root. The legacy singleton business layer is reactivated before each business call and protected by a request gate; long-lived SSE GET streams do not occupy it.

  • [x] Extended continuity with verification obligation IDs, risk-aware outcome state, idempotency keys, and immediate transactions for the event cap.

  • [x] Added a privacy-safe orchestrator effect ledger and structured pipeline trace fields for attempts, risk tiers, effect keys, and bounded memory refs.

  • [x] Added the deterministic cross-session memory quality gate and package script npm run gate:memory-quality.

New GitHub work
  • #301 / #303: merged through #305 and shipped in 1.9.5. Explicit --mcp http now configures Grok and packaged agents for one HTTP control plane; native setup and background smoke passed.

  • #302 / #304: merged through #305 and shipped in 1.9.5 after scope-aware tombstone handling, cross-project ID remapping, explicit per-user namespace validation, and mixed-project SQLite tests.

  • #300: Atlas Cloud memory preset is being carried through the 1.9.x closeout with isolated configuration tests and the normal CI gate; it is an optional provider path and does not change the default.

  • #283: resolved as documentation-only; the OpenAI-compatible OrcaRouter example and fixed-model/fallback guidance are now in docs/CONFIGURATION.md.

  • #297: external awesome-list request, dependent on the other repository's contribution workflow, not a Memorix code blocker. #49 and #3 remain external integration proposals with no host contract that Memorix can verify locally.

  • #313: hosted memory backend proposal remains an RFC/integration lead; any implementation must use the existing provider-agnostic sync contract and keep local SQLite canonical.

  • #314: merged and shipped in 1.9.9 after independent full-build and full-regression verification; the provider remains opt-in and local SQLite remains canonical.

  • #320: API Route provider contribution was independently verified with lint, build, 139 focused tests, and the full regression (337 files passed, 2 skipped; 3197 tests passed, 4 skipped). It remains open because GitHub's merge endpoint returned an internal error twice; no code change has been applied from it to main.

  • #321 / #326: merged and shipped in 1.9.10; the dual export now supplies server, v1 events use the generic event hook, and Windows hook delivery uses a 30-second timeout mitigation.

  • #318 / #319: merged and shipped in 1.9.8; OpenCode v2 plugin loading now supports the default id/setup contract while preserving v1 clients.

1.8.7 CodeGraph Main Line (2026-09-02)

The published release is the CodeGraph foundation upgrade. Its single canonical plan and acceptance contract is docs/1.8.7-CODEGRAPH.md. The work is deliberately split into P0 through P6:

  • P0: deterministic relation-accuracy and performance baseline.

  • P1: TypeScript/JavaScript/TSX AST parsing with honest Lite fallback.

  • P2: source-backed definitions, references, calls, imports/exports, inheritance, and test relations.

  • P3: atomic semantic-slice updates, affected dependency closure, and failure recovery.

  • P4: one task-shaped Agent context receipt instead of provider-specific orchestration.

  • P5: validated SCIP/external-provider normalization without configuration takeover.

  • P6: Dashboard, cross-platform, scale, precision, latency, and user-facing smoke acceptance.

Local development uses Node/npm directly on E:. Docker is reserved for hosted CI/VPS deployment and is not part of local verification.

1.8.7 Release Evidence
  • TypeScript Compiler API indexing is persisted with source-backed symbols, imports/exports, references, calls, inheritance, test edges, parser errors, and bounded task context. Unsupported languages retain Lite structural facts.

  • Incremental refresh re-indexes local import dependents and replaces semantic slices atomically. Compiler failure leaves Lite facts usable and reports a partial/failed semantic state instead of claiming readiness.

  • The Dashboard exposes /api/codegraph and a separate CodeGraph health strip; it does not confuse the code evidence plane with the Memory Map.

  • Local gates: npm run lint, sequential npm run build, offline lock check, 316 test files passed, 3038 tests passed, stdio legacy/modern smoke, modern HTTP smoke, stateless handle/restart/isolation smoke, Dashboard API smoke, and a generated 100-file/1000-symbol CLI scale probe.

  • The external @hasmcp/mcp-spec-test runner remains not verified on this Windows host because its own Node test runner passes E: file paths as invalid ESM URLs before contacting the target. Official v2 direct tests and real Memorix stdio/HTTP smoke are the release evidence for this release.

Ecosystem Watch (2026-08-28)

Recent public changes reinforce the current product boundary:

  • The MCP 2026-07-28 specification makes requests self-describing and stateless-first, adds server/discover, and moves long-running work into the official io.modelcontextprotocol/tasks extension described in the MCP changelog. Memorix now uses the official SDK v2 for the modern core while retaining the legacy path. It explicitly rejects Tasks because it has no durable MCP task implementation, and reports zero-TTL list hints instead of pretending to have a reusable list cache.

  • TencentDB Agent Memory 2.0.1 emphasizes cold-start readiness, governed assets, cross-agent loading, and faster Wiki/CodeGraph processing. The useful lesson for Memorix is to expose asset readiness and provenance clearly, while keeping local project evidence authoritative instead of turning Memorix into a remote proxy hub.

  • ContextBench evaluates coding-agent context recall, precision, and efficiency during issue resolution, and reports that complex scaffolding does not automatically improve context use. This supports Memorix's bounded Workset and single-entry Autopilot approach.

  • MemoryArena evaluates interdependent tasks across sessions, while MemSyco-Bench tests whether retrieved memory causes unjustified agreement, scope mistakes, or failure to reject stale facts. These are direct signals to keep continuity, evidence, feedback, conflict handling, and abstention separate.

The next meaningful product work is therefore not “more memory fields”. It is making the existing lifecycle observable and trustworthy: the agent should know what is available, why a memory was selected, when it is stale, and when it is safer to abstain.

Completed 1.8.5 Closeout (2026-08-30)

P0 through P6 were completed in one release line, followed by the full local and remote gates. The release is published; the remaining open items below are separate future suggestions or contributor revisions, not hidden release work.

P0 — Reconcile the candidate and the public surface
  • Apply the cleanup and transport changes to current main only after the final candidate has passed its full local gate and is rebuilt from that tree.

  • Keep the canonical Dashboard Memory Map, remove dead renderer/dependency paths, make profile counts truthful, and make CLI, MCP, README, docs, and all installed agent guidance describe the same reachable tools.

  • Keep micro=9, lite=21, team=29, and full=48; do not solve tool-schema bloat by silently exposing all 48 tools to every agent.

P1 — Close the real runtime reliability gaps
  • Resolve #259/#260 with a real cross-platform concurrency test. The critical section must never fall back to an unlocked check-and-spawn after contention; it must either observe the existing service, wait/recheck, or fail with a useful retry message. Verify stale-lock recovery, duplicate-process cleanup, Windows hidden children, macOS launch-agent startup, and Linux service start.

  • Add a single readiness/status receipt showing service PID, endpoint, profile, project binding, startup state, and last failure without exposing secrets.

  • Make every foreground path bounded and cancellable, and make provider errors distinguish “saved locally” from “embedding still pending” so a successful write never feels hung.

P2 — Finish MCP compatibility in this same line
  • Keep legacy 2025-era initialize and Streamable HTTP clients working while adding the 2026-07-28 stateless path, using the official SDK path rather than accumulating patches around the old SDK.

  • Implement and test request metadata/version negotiation, complete server/discover, resultType, response _meta, list cache hints, explicit unsupported-version errors, and the subscriptions extension where Memorix can give truthful semantics. Tasks remain explicitly rejected until a durable task contract exists.

  • Run the official v2 direct tests plus real stdio and HTTP clients. The third-party conformance runner must be recorded as an external harness failure when its Windows ESM path bug prevents it from reaching the server; unsupported features must still be rejected or reported explicitly, never represented as an empty success.

P3 — Make memory selection honest and useful
  • Every task Workset gets one compact receipt: what was selected, why it was selected, source/freshness, coverage, omitted material, token budget, and whether the safe decision was to abstain.

  • Unify stale, conflict, feedback, retention, and provenance decisions behind the same lifecycle calculation. A memory can be useful evidence, a hint, or something to ignore; it must not become truth merely because retrieval found it.

  • Add deterministic multi-session and conflict tests inspired by ContextBench, MemoryArena, and MemSyco-Bench: recall, precision, noise, latency, stale rejection, scope control, and “do not agree with bad memory”.

P4 — Finish CodeGraph and Knowledge Workspace integration
  • Produce one clear context receipt that distinguishes current Code State, local Lite structure, and optional semantic CodeGraph. Include freshness, coverage, provenance, limits, and the exact portion delivered to the Agent.

  • Keep graph relations source-backed and bounded. The Dashboard, CLI, MCP, and Knowledge Workspace must not show different “truths” for the same relation.

  • Make reviewed claims, durable pages, workflow inheritance, and agent/project scope visibly separate. No raw session dump or arbitrary generated document may silently become durable knowledge.

P5 — Finish integrations without changing users’ Agent settings
  • Re-verify Claude Code, Codex, OpenCode, Pi/Oh-my-Pi, Gemini, Copilot, Cursor, Antigravity, Hermes, DeepSeek Harness, and WorkBuddy from their real supported entry points. Project and global installs must remain isolated and idempotent.

  • Accept #204 only if its current MCP scopes and skill-less behavior match official WorkBuddy documentation; preserve the contributor credit. Otherwise request the smallest missing change and keep the issue open with evidence.

  • Treat #3 as MCP/rules support until Qwen or iFlow publishes a verifiable hook contract. Treat #49 as an external-reachability integration boundary, not a reason to turn Memorix into an email or remote identity service.

P6 — Finish the operator experience and repository hygiene
  • Keep Dashboard pages read-mostly and tied to real sources: readiness, observations, evidence, retention, sessions, coordination, Knowledge, and the single Memory Map. Empty, stale, and failed states must look different.

  • Verify desktop and narrow-screen layouts, especially long names, forms, graph labels, and error states. Keep the UI quiet and operational rather than adding decorative pages for every backend table.

  • Remove private operator files, credentials, raw session captures, stale generated artifacts, and unowned root directories from the tracked surface; retain only reproducible fixtures and canonical documentation.

P7 — Release and issue closeout result
  • [x] #202 closed with the measured memory-hygiene results.

  • [x] #249 closed with the modern supported contract and explicit, tested rejection of durable Tasks; no complete-conformance claim is made.

  • [x] #259 closed after the duplicate-process gate passed; #260 was closed as superseded because its fallback is still unsafe, with contributor credit retained in the issue history.

  • [x] #244 merged with the bot-generated Star History assets after raw-asset reachability and data checks.

  • [x] README, Chinese README, API reference, setup docs, changelog, plugin manifests, release contract, and release notes were synchronized before publishing 1.8.5.

1.8.6 Release Line (2026-09-01)

This patch release contains only already-reviewed changes from the public contributor PRs and the release metadata update:

  • WorkBuddy project/global MCP configuration, project guidance, no-hook lifecycle handling, and uninstall discovery (#204, @wjxn13).

  • Continuation intent routing that keeps bare filler cheap without rejecting short real tasks (#266, @Tom-Ma-Ming).

  • Refreshed self-hosted Star History assets (#265).

The release gate is local Node/npm verification plus the repository's remote CI and publish workflow. Docker remains a VPS/hosted deployment artifact and is not used for local verification.

Agent-Memory Landscape Decision (2026-08-17)

Current ecosystem research focused on TencentDB Agent Memory v2 and the upstream CodeGraph project. The signal is not that Memorix should become a remote "memory hub" or duplicate a parser engine. The useful direction is a local, evidence-bound coding-memory product with a first-class semantic code provider when the operator chooses one.

  • Tencent's product model unifies chat memory, skills, wiki pages, and code graphs as assignable assets. Its useful lessons are explicit readiness, compact session bootstrap, background processing receipts, and showing an Agent what assets are active. Its recent beta issue stream also demonstrates the operational cost of central queues, transactions, and broad proxy interception.

  • Memorix keeps its differentiator: its canonical evidence is the current local Git worktree, versioned code state, reviewed knowledge, and task-sized worksets. It must not clone private repositories to a service, intercept all model traffic through a proxy, alter unrelated Agent configuration, or present a generated graph as authoritative source truth.

  • The bundled Lite index is a useful local structural fallback, not a semantic CodeGraph. A healthy external CodeGraph already adds semantic context, but the UX currently describes persisted Lite state and semantic overlay state separately. This must become one explicit receipt: what was used for this task, its freshness, coverage, limits, and the token budget delivered.

  • The first product slice is therefore: keep JSON/context output genuinely bounded by default; make Code State versus Semantic CodeGraph unambiguous; then add an opt-in CodeGraph lifecycle adapter (detect, initialize, observe freshness, and queue bounded sync). It must never run an upstream installer that edits the user's Agent configuration.

Historical Stability Baseline (1.5.0, stress-tested and measured)

  • Stress exams live in tests/stress/ and run in the normal suite:

    • Corpus: 2,000 observations, 25 real searches, planted needles all hit, ranking deterministic, project isolation held, tokens 168..170.

    • Concurrency: 60 parallel writes with zero loss; 20 parallel same-topic upserts converge to one active record.

    • Session churn: 45 start/end cycles across 3 projects plus 10 parallel starts — at most one active session per project.

    • Long-term scale: 300 records, maintenance archives exactly the stale set (60) and supersedes exactly the older halves (40); candidates untouched.

    • CLI repeat: 15 repeated add/list invocations with stable exit codes and no id reuse.

  • Embedding lane on the operator's OpenRouter environment: qwen/qwen3-embedding-8b (4096d) verified live — 100-text batch in ~9.5s, cache round-trip, singleton stability. When the base URL is OpenRouter and no model is set, the default is now qwen/qwen3-embedding-8b instead of the OpenAI-only model (pinned by tests/config/embedding-default-model.test.ts). Image analysis can use a multimodal OpenRouter model (qwen/qwen3-vl-8b-instruct) through the LLM lane; documented in CONFIGURATION.md.

  • Live embedding exams stay env-gated (MEMORIX_RUN_LIVE_EMBEDDING_TESTS=1) and never run in CI.

Historical Memory Hygiene Baseline (1.4.x, measured)

  • Session dedup: memorix_search demotes rows already shown in the same session and remembers the surfaced set. Session-replay exam: duplicate rate 25% → 19%, hits 4/4 and token ceiling unchanged.

  • Guidance hygiene: generated guidance now teaches store-the-underivable, dual-channel feedback (record successes too), verify-before-use, and the ignore contract. Guidance exam: 0/4 → 4/4 rules inside the ceiling.

  • Data-dir boundary pinned by tests/config/data-dir-boundary.test.ts (project config cannot redirect storage).

  • Always-on brief: every task brief opens with a "You and this workspace" block — user profile, latest session summary, and recent durable long-term memories. Exam: 0/3 → 3/3 inside the token ceiling; older fixtures without the block still pass.

  • Long-term self-maintenance (rule leg, no LLM required):

    • Explicit requests (MCP longTerm: true, CLI add/promote) auto-qualify on the spot instead of waiting for a manual review.

    • Stale qualified/approved records auto-archive after 30 days without activity; newer records auto-supersede same-title records in the same scope/kind.

    • Runs in the existing durable maintenance lane (long-term-maintenance job kind): once at session startup, again after each explicit promotion, then a daily reschedule heartbeat. Candidates are never auto-advanced; approved records are never auto-archived unless stale.

    • Exam: tests/evaluation/long-term-maintenance.test.ts 0/4 → 4/4, deterministic and offline.

  • Cold-feature sweep (2026-08-14, five-way audit of the whole surface): the "taught tools vs installed profile" gap is fixed — memorix setup now installs --mode lite and the repo guidance marks full-only tools; memorix purge gives memory retirement a real CLI entry; git ingest_on_commit/max_diff_size now actually gate ingestion; the media MCP schema hides gated actions; dead code removal, config honesty, and doc corrections land in the same batch. Exams added per item.

  • Exams live in tests/evaluation/ and are deterministic and offline.

Active Objectives

  1. Keep the public repository free of operator state, local paths, credentials, raw session captures, and one-off development artifacts.

  2. Keep the released integration surface honest: native-host validation is still required whenever a newly supported agent CLI becomes available.

  3. Review open contributor work independently; do not merge it merely because it overlaps a planned product direction.

  4. Make every bounded foreground path cancel the network work it starts, and make non-retryable provider failures fail once with a useful diagnostic.

  5. Keep the 40,000-record gate fail-closed across SDK, HTTP MCP, hooks, and canonical persistence before every release that changes retrieval/storage.

Completed Contribution Decisions

  • #153: accepted and merged with focused MiniMax M3 video-input tests.

  • #178: accepted and merged (squash) with author and co-author credit preserved on the merge commit. Adds MiniMax image-to-image via subject_reference across the provider layer, the media CLI, and the gated memorix_media MCP tool. Changelog credit for @octo-patch lands with the next release, following the #153 precedent.

  • #140: accepted and merged after replacing its stale release timeline with a maintained boundary-and-roadmap document.

  • #33, #31, #30: not merged into the superseding media/retrieval architecture. Their original authorship is preserved through #173 (PDF derivations), #174 (audio derivatives), and #175 (graph-assisted evidence expansion).

  • #136, #151, #179, #147, and #152: withdrawn research work. Do not use them as product or release evidence.

Operating Rules

  • Git, package.json, and CHANGELOG.md are live product facts; this document records intent and next actions, not a replacement for them.

  • Never write secrets, account identifiers, local absolute paths, raw chat transcripts, or local tool state into tracked files.

  • Keep reusable public docs and test fixtures only when they are source-backed, non-sensitive, and exercised by the repository.

  • Do not rewrite Git history without explicit maintainer approval. Removing a file from the current tree does not erase existing forks or historical clones.

Immediate Next Step

  • 1.8.7 is published and all release gates are recorded above. The current 1.9.x maintenance closeout has no known internal release blocker.

  • #49 and #3 remain independent integration proposals, not hidden maintenance work: neither has a verifiable host contract that can be implemented safely in the current line.

Historical Release Notes

The #174 controlled audio derivations, #175 governed one-hop graph evidence, #185 CodeBuddy integration, and #184 Star History CI verification are merged and included in the published 1.4.3 release. The local machine does not have the CodeBuddy CLI installed, so a native CodeBuddy-host smoke remains a documented follow-up rather than claimed release evidence. Legacy requests #49/#3 remain independent of the 1.4.4 line.

  • 1.4.4 published (2026-08-14) through the GitHub publish workflow; the #194 reporter has been notified with the shipped version.

  • DeepSeek Harness support implemented and merged via PR #201 (2026-08-14): memorix setup --agent dsh installs the @deepseek-ai/dsh-mcp-client row into $DSH_HOME/cordis.patch.yml, AGENTS.md guidance, and skills. Native validation composed the generated patch with the real @deepseek-ai/[email protected] launcher. Shipped in the published 1.4.5 release.

  • Branch protection on main was synced with the current CI matrix (2026-08-14): the required status contexts referenced removed Node 20 test jobs, which blocked every PR from merging. Required contexts are now the live test (ubuntu-latest, 22), test (windows-latest, 22), and typecheck; the one-approval review requirement is unchanged.

  • Old GitHub releases before v1.2.0 were pruned from the Releases page (2026-08-14); git tags and the full CHANGELOG history are preserved.

512 files · 453 not served here

Advantages

  • Local-first: the memory stays in files or a database on your own machine (a rule-derived fact from the brain’s files, evidence: README.md)
  • Works with 14 MCP clients (a rule-derived fact from the brain’s files, evidence: README.md)
  • Open licence (Apache-2.0) (a rule-derived fact from the brain’s files)

Limitations

  • Needs an API key (ANTHROPIC_API_KEY, API_ROUTE_API_KEY, ATLASCLOUD_API_KEY) (a rule-derived fact from the brain’s files, evidence: README.md)
  • Needs a database (LanceDB, PostgreSQL, SQLite) (a rule-derived fact from the brain’s files, evidence: README.md)
  • Runs code automatically: review what it runs before you open it (a rule-derived fact from the brain’s files)
  • No ZIP download: install it from its source (a rule-derived fact from the brain’s files)

Security

Risk level: Low risk

This brain runs

Agent instructions that run or fetch something (23)

  • CLAUDE.md: CLI fallback: only after MCP is confirmed unavailable, run `memorix context --task "<current task>"` from the shell instead of skipping memory or hand-writing tool calls
  • plugins/claude/memorix/SKILL.md: Run `memorix context --task "<task>" --fallback --brief-json` only after MCP is unavailable, disabled, or not discoverable, and pass the user's real task text.
  • plugins/claude/memorix/skills/memorix-git-memory/SKILL.md: | Situation | Prefer | CLI fallback | |---|---|---| | Search what changed | `memorix_search` with a change-focused query | `memorix memory search --query "what changed <topic>"` | | Inspect a git-backed memory | `memorix_detail` | `memorix memory detail --id <id>` | | Ingest current co …[+257 chars]
  • plugins/claude/memorix/skills/memorix-memory/SKILL.md: Run `memorix context --task "<task>" --fallback --brief-json` from the shell only after MCP is unavailable, disabled, or not discoverable, and pass the user's real task text.
  • plugins/claude/memorix/skills/memorix-orchestrate/SKILL.md: | Situation | Prefer | CLI fallback | |---|---|---| | Run managed subagent execution | CLI | `memorix orchestrate --goal "<goal>" --agents claude:1,codex:1` | | Register coordination identity | `team_manage` action `join` | `memorix team join --agentType <agent>` | | Create or inspect …[+385 chars]
  • plugins/claude/memorix/skills/memorix-troubleshooting/SKILL.md: | Symptom | Check | CLI fallback | |---|---|---| | MCP tools missing | host MCP config and restart | `memorix setup --agent <agent>` | | Unsure project is bound | project status | `memorix status` and `git status` | | HTTP MCP stale or unbound | background health and explicit session bi …[+33 chars]
  • plugins/codebuddy/memorix/skills/memorix-git-memory/SKILL.md: | Situation | Prefer | CLI fallback | |---|---|---| | Search what changed | `memorix_search` with a change-focused query | `memorix memory search --query "what changed <topic>"` | | Inspect a git-backed memory | `memorix_detail` | `memorix memory detail --id <id>` | | Ingest current co …[+257 chars]
  • plugins/codebuddy/memorix/skills/memorix-memory/SKILL.md: Run `memorix context --task "<task>" --fallback --brief-json` from the shell only after MCP is unavailable, disabled, or not discoverable, and pass the user's real task text.
  • plugins/codebuddy/memorix/skills/memorix-orchestrate/SKILL.md: | Situation | Prefer | CLI fallback | |---|---|---| | Run managed subagent execution | CLI | `memorix orchestrate --goal "<goal>" --agents claude:1,codex:1` | | Register coordination identity | `team_manage` action `join` | `memorix team join --agentType <agent>` | | Create or inspect …[+385 chars]
  • plugins/codebuddy/memorix/skills/memorix-troubleshooting/SKILL.md: | Symptom | Check | CLI fallback | |---|---|---| | MCP tools missing | host MCP config and restart | `memorix setup --agent <agent>` | | Unsure project is bound | project status | `memorix status` and `git status` | | HTTP MCP stale or unbound | background health and explicit session bi …[+33 chars]
  • plugins/codex/memorix/skills/memorix-git-memory/SKILL.md: | Situation | Prefer | CLI fallback | |---|---|---| | Search what changed | `memorix_search` with a change-focused query | `memorix memory search --query "what changed <topic>"` | | Inspect a git-backed memory | `memorix_detail` | `memorix memory detail --id <id>` | | Ingest current co …[+257 chars]
  • plugins/codex/memorix/skills/memorix-memory/SKILL.md: Run `memorix context --task "<task>" --fallback --brief-json` only after MCP is unavailable, disabled, or not discoverable, and pass the user's real task text.
  • plugins/codex/memorix/skills/memorix-orchestrate/SKILL.md: | Situation | Prefer | CLI fallback | |---|---|---| | Run managed subagent execution | CLI | `memorix orchestrate --goal "<goal>" --agents claude:1,codex:1` | | Register coordination identity | `team_manage` action `join` | `memorix team join --agentType <agent>` | | Create or inspect …[+385 chars]
  • plugins/codex/memorix/skills/memorix-troubleshooting/SKILL.md: | Symptom | Check | CLI fallback | |---|---|---| | MCP tools missing | host MCP config and restart | `memorix setup --agent <agent>` | | Unsure project is bound | project status | `memorix status` and `git status` | | HTTP MCP stale or unbound | background health and explicit session bi …[+33 chars]
  • plugins/copilot/memorix/skills/memorix-git-memory/SKILL.md: | Situation | Prefer | CLI fallback | |---|---|---| | Search what changed | `memorix_search` with a change-focused query | `memorix memory search --query "what changed <topic>"` | | Inspect a git-backed memory | `memorix_detail` | `memorix memory detail --id <id>` | | Ingest current co …[+257 chars]
  • plugins/copilot/memorix/skills/memorix-memory/SKILL.md: Run `memorix context --task "<task>" --fallback --brief-json` only after MCP is unavailable, disabled, or not discoverable, and pass the user's real task text.
  • plugins/copilot/memorix/skills/memorix-orchestrate/SKILL.md: | Situation | Prefer | CLI fallback | |---|---|---| | Run managed subagent execution | CLI | `memorix orchestrate --goal "<goal>" --agents claude:1,codex:1` | | Register coordination identity | `team_manage` action `join` | `memorix team join --agentType <agent>` | | Create or inspect …[+385 chars]
  • plugins/copilot/memorix/skills/memorix-troubleshooting/SKILL.md: | Symptom | Check | CLI fallback | |---|---|---| | MCP tools missing | host MCP config and restart | `memorix setup --agent <agent>` | | Unsure project is bound | project status | `memorix status` and `git status` | | HTTP MCP stale or unbound | background health and explicit session bi …[+33 chars]
  • plugins/cursor/memorix/skills/memorix-git-memory/SKILL.md: | Situation | Prefer | CLI fallback | |---|---|---| | Search what changed | `memorix_search` with a change-focused query | `memorix memory search --query "what changed <topic>"` | | Inspect a git-backed memory | `memorix_detail` | `memorix memory detail --id <id>` | | Ingest current co …[+257 chars]
  • plugins/cursor/memorix/skills/memorix-memory/SKILL.md: Run `memorix context --task "<task>" --fallback --brief-json` only after MCP is unavailable, disabled, or not discoverable, and pass the user's real task text.
  • plugins/cursor/memorix/skills/memorix-orchestrate/SKILL.md: | Situation | Prefer | CLI fallback | |---|---|---| | Run managed subagent execution | CLI | `memorix orchestrate --goal "<goal>" --agents claude:1,codex:1` | | Register coordination identity | `team_manage` action `join` | `memorix team join --agentType <agent>` | | Create or inspect …[+385 chars]
  • plugins/cursor/memorix/skills/memorix-troubleshooting/SKILL.md: | Symptom | Check | CLI fallback | |---|---|---| | MCP tools missing | host MCP config and restart | `memorix setup --agent <agent>` | | Unsure project is bound | project status | `memorix status` and `git status` | | HTTP MCP stale or unbound | background health and explicit session bi …[+33 chars]
  • plugins/gemini/memorix/GEMINI.md: Run `memorix context --task "<task>" --fallback --brief-json` only after MCP is unavailable, disabled, or not discoverable, and pass the user's real task text.

MCP servers (7)

  • README.md (memorix): memorix serve
  • plugins/claude/memorix/.mcp.json (memorix): memorix serve --mode lite
  • plugins/codebuddy/memorix/.mcp.json (memorix): memorix serve --mode lite
  • plugins/codex/memorix/.mcp.json (memorix): memorix serve --mode lite
  • plugins/copilot/memorix/.mcp.json (memorix): memorix serve --mode lite
  • plugins/gemini/memorix/gemini-extension.json (memorix): memorix serve --mode lite
  • plugins/openclaw/memorix/.mcp.json (memorix): memorix serve --mode lite

Hooks (20)

  • plugins/claude/memorix/hooks/hooks.json (SessionStart): memorix hook
  • plugins/claude/memorix/hooks/hooks.json (PostToolUse): memorix hook
  • plugins/claude/memorix/hooks/hooks.json (UserPromptSubmit): memorix hook
  • plugins/claude/memorix/hooks/hooks.json (PreCompact): memorix hook
  • plugins/claude/memorix/hooks/hooks.json (Stop): memorix hook
  • plugins/codebuddy/memorix/hooks/hooks.json (SessionStart): memorix hook --agent codebuddy
  • plugins/codebuddy/memorix/hooks/hooks.json (UserPromptSubmit): memorix hook --agent codebuddy
  • plugins/codebuddy/memorix/hooks/hooks.json (PostToolUse): memorix hook --agent codebuddy
  • plugins/codebuddy/memorix/hooks/hooks.json (PreCompact): memorix hook --agent codebuddy
  • plugins/codebuddy/memorix/hooks/hooks.json (Stop): memorix hook --agent codebuddy
  • plugins/codex/memorix/hooks/hooks.json (SessionStart): memorix hook --agent codex
  • plugins/codex/memorix/hooks/hooks.json (PostToolUse): memorix hook --agent codex
  • plugins/codex/memorix/hooks/hooks.json (UserPromptSubmit): memorix hook --agent codex
  • plugins/codex/memorix/hooks/hooks.json (PreCompact): memorix hook --agent codex
  • plugins/codex/memorix/hooks/hooks.json (Stop): memorix hook --agent codex
  • plugins/copilot/memorix/hooks/hooks.json (sessionStart): memorix hook --agent copilot
  • plugins/copilot/memorix/hooks/hooks.json (sessionEnd): memorix hook --agent copilot
  • plugins/copilot/memorix/hooks/hooks.json (userPromptSubmitted): memorix hook --agent copilot
  • plugins/copilot/memorix/hooks/hooks.json (postToolUse): memorix hook --agent copilot
  • plugins/copilot/memorix/hooks/hooks.json (preCompact): memorix hook --agent copilot

Binaries (5)

  • packages/memcode/examples/extensions/doom-overlay/doom/build/doom.wasm: ships native binaries
  • packages/tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node: ships native binaries
  • packages/tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node: ships native binaries
  • packages/tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node: ships native binaries
  • packages/tui/native/win32/prebuilds/win32-x64/win32-console-mode.node: ships native binaries
  • Low risk: scripts-present (scripts/benchmark-retrieval.mjs)
  • Low risk: scripts-present (scripts/large-store-gate.mjs)

Attribution and licence

First committed by
GitHub avatar of AVIDS2AVIDS2
Declared authors
  • AVIDS2 (declared in package.json)
Publisher
Le_Ho (Community)
Source
AVIDS2/memorix · commit 6745280
Licence
Apache License 2.0 (files served here)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Contributors
AVIDS2, noirgif, Tom-Ma-Ming, octo-patch, DennyHo0917

AutoGineer is not affiliated with or endorsed by AVIDS2.

Install from source

453 of its files are not served here, so there is no ZIP. AVIDS2/memorix at 6745280