memorix 1.9.4 → 1.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/CHANGELOG.md +75 -1
  2. package/README.md +12 -6
  3. package/README.zh-CN.md +12 -6
  4. package/dist/cli/index.js +2533 -585
  5. package/dist/index.d.ts +15 -8
  6. package/dist/index.js +1201 -284
  7. package/dist/maintenance-runner.js +387 -216
  8. package/dist/media-audio-runner.js +300 -129
  9. package/dist/media-video-runner.js +300 -129
  10. package/dist/memcode-runtime/CHANGELOG.md +75 -1
  11. package/dist/sdk.d.ts +1 -0
  12. package/dist/sdk.js +1882 -998
  13. package/dist/types.d.ts +1 -1
  14. package/dist/vector-backfill-runner.js +300 -129
  15. package/docs/AGENT_OPERATOR_PLAYBOOK.md +47 -3
  16. package/docs/API_REFERENCE.md +39 -1
  17. package/docs/CONFIGURATION.md +58 -1
  18. package/docs/DEVELOPMENT.md +1 -1
  19. package/docs/DOCKER.md +23 -3
  20. package/docs/INTEGRATIONS.md +1 -1
  21. package/docs/KNOWN_ISSUES_AND_ROADMAP.md +61 -1
  22. package/docs/MULTI-DEVICE-SYNC-RESEARCH.md +4 -0
  23. package/docs/PERFORMANCE.md +46 -2
  24. package/docs/README.md +2 -1
  25. package/docs/SETUP.md +56 -1
  26. package/package.json +3 -2
  27. package/plugins/antigravity/memorix/plugin.json +1 -1
  28. package/plugins/claude/memorix/.claude-plugin/plugin.json +1 -1
  29. package/plugins/codebuddy/memorix/.codebuddy-plugin/plugin.json +1 -1
  30. package/plugins/codex/memorix/.codex-plugin/plugin.json +1 -1
  31. package/plugins/copilot/memorix/plugin.json +1 -1
  32. package/plugins/gemini/memorix/gemini-extension.json +1 -1
  33. package/plugins/hermes/memorix/plugin.yaml +1 -1
  34. package/plugins/omp/memorix/package.json +1 -1
  35. package/plugins/openclaw/memorix/.codex-plugin/plugin.json +1 -1
  36. package/plugins/pi/memorix/package.json +1 -1
  37. package/server.json +2 -2
  38. package/src/cli/capability-map.ts +1 -0
  39. package/src/cli/command-guide.ts +15 -3
  40. package/src/cli/commands/agent-integrations.ts +57 -0
  41. package/src/cli/commands/background.ts +11 -2
  42. package/src/cli/commands/context.ts +2 -0
  43. package/src/cli/commands/continuity.ts +155 -0
  44. package/src/cli/commands/init.ts +5 -2
  45. package/src/cli/commands/serve-http.ts +435 -84
  46. package/src/cli/commands/setup.ts +77 -10
  47. package/src/cli/commands/sync-store.ts +47 -12
  48. package/src/cli/commands/sync.ts +26 -0
  49. package/src/cli/index.ts +3 -1
  50. package/src/cli/tui/ConfigureView.tsx +2 -0
  51. package/src/codegraph/auto-context.ts +17 -0
  52. package/src/config/legacy-loader.ts +2 -2
  53. package/src/config/resolved-config.ts +8 -5
  54. package/src/config/yaml-loader.ts +20 -10
  55. package/src/dashboard/server.ts +10 -12
  56. package/src/embedding/api-provider.ts +4 -2
  57. package/src/embedding/fastembed-provider.ts +47 -14
  58. package/src/embedding/transformers-provider.ts +29 -7
  59. package/src/evaluation/memory-quality-gate.ts +90 -0
  60. package/src/hooks/official-skills.ts +2 -0
  61. package/src/integrations/registry.ts +1 -1
  62. package/src/knowledge/context-assembly.ts +1 -0
  63. package/src/knowledge/context-receipt.ts +15 -0
  64. package/src/knowledge/task-continuity.ts +413 -0
  65. package/src/knowledge/workset.ts +77 -0
  66. package/src/llm/provider.ts +2 -1
  67. package/src/memory/graph.ts +10 -8
  68. package/src/memory/session.ts +1 -1
  69. package/src/orchestrate/coordinator.ts +60 -0
  70. package/src/orchestrate/effect-ledger.ts +160 -0
  71. package/src/orchestrate/pipeline-trace.ts +40 -6
  72. package/src/runtime/maintenance-jobs.ts +12 -6
  73. package/src/sdk.ts +24 -0
  74. package/src/server/mcp-binding-store.ts +14 -3
  75. package/src/server/modern-mcp-bridge.ts +153 -27
  76. package/src/server/tool-profile.ts +3 -2
  77. package/src/server.ts +131 -7
  78. package/src/store/file-lock.ts +28 -3
  79. package/src/store/graph-store.ts +178 -46
  80. package/src/store/persistence.ts +14 -9
  81. package/src/store/sqlite-db.ts +150 -7
  82. package/src/store/sqlite-store.ts +32 -27
  83. package/src/sync/engine.ts +9 -7
  84. package/src/sync/namespace.ts +23 -0
  85. package/src/sync/policy.ts +19 -4
  86. package/src/sync/store-port.ts +43 -13
  87. package/src/sync/types.ts +2 -0
  88. package/src/team/team-store.ts +62 -27
  89. package/src/types.ts +1 -1
  90. package/src/workspace/mcp-adapters/grok.ts +32 -0
@@ -41,7 +41,7 @@ For the 1.4 release line, the visible product shape is:
41
41
  - `memorix_project_context` / `memorix context "..."` is the normal black-box entry for non-trivial coding work: it assembles a bounded task Workset instead of injecting a generic memory dump; `memorix resume "..."` is the explicit CLI continuation projection
42
42
  - Code State keeps local snapshots and freshness links; a healthy pre-existing local CodeGraph index can add a bounded semantic outline, but Memorix never initializes or synchronizes that external index itself
43
43
  - `memorix knowledge` is an explicit review path for source-backed Markdown knowledge and canonical workflows. Do not initialize a versioned workspace or apply a proposal unless the user asks for that managed artifact
44
- - integration surfaces are agent-specific: Claude Code, Codex, GitHub Copilot CLI, Antigravity, and Hermes receive plugin packages; OpenClaw receives a compatible bundle; Pi and Oh-my-Pi receive package entries; Gemini CLI receives an extension package; OpenCode receives a plugin file and skill; Grok Build receives native hooks and `AGENTS.md` guidance while keeping MCP host-owned; DeepSeek Harness receives an MCP patch row, AGENTS.md guidance, and skills; Cursor and other agents receive MCP/rules/hooks where supported
44
+ - integration surfaces are agent-specific: Claude Code, Codex, GitHub Copilot CLI, Antigravity, and Hermes receive plugin packages; OpenClaw receives a compatible bundle; Pi and Oh-my-Pi receive package entries; Gemini CLI receives an extension package; OpenCode receives a plugin file and skill; Grok Build receives native hooks and `AGENTS.md` guidance while keeping MCP host-owned by default (`--mcp http` writes Grok `config.toml`); DeepSeek Harness receives an MCP patch row, AGENTS.md guidance, and skills; Cursor and other agents receive MCP/rules/hooks where supported
45
45
  - privacy-safe diagnostics and receipts avoid raw chat, memory text, query text, tool payloads, and local file paths
46
46
 
47
47
  ---
@@ -257,7 +257,7 @@ What this installs depends on the target agent:
257
257
  - Pi: user Pi package with extension-based hook capture and a Memorix skill, registered through `pi install <path> --approve`; project-local setup uses `-l`.
258
258
  - Gemini CLI: local extension package under `~/.gemini/extensions/memorix`, extension-bundled stdio MCP, `GEMINI.md` context, hooks, commands, and skills. Antigravity CLI has an official Gemini CLI migration path, but Gemini CLI remains a separate target.
259
259
  - OpenCode: local plugin file, `opencode.json` MCP config, OpenCode skill, plus `AGENTS.md` guidance.
260
- - Grok Build: native hooks in `~/.grok/hooks/memorix.json` and guidance in `~/.grok/AGENTS.md`. Global hooks are trusted; project hooks require Grok `/hooks-trust` or `--trust`. Memorix does not write Grok's `config.toml` or MCP entries.
260
+ - Grok Build: native hooks in `~/.grok/hooks/memorix.json` and guidance in `~/.grok/AGENTS.md`. Global hooks are trusted; project hooks require Grok `/hooks-trust` or `--trust`. MCP stays host-owned unless you pass `--mcp http`, which writes `[mcp_servers.memorix]` in Grok `config.toml`.
261
261
  - Antigravity: native plugin under `~/.gemini/config/plugins/memorix` or `.agents/plugins/memorix`, with `plugin.json`, `mcp_config.json`, `hooks.json`, rules, and skills.
262
262
  - OpenClaw: OpenClaw-compatible bundle under `~/.openclaw/extensions/memorix`, bundled `.mcp.json`, skills, and OpenClaw `HOOK.md`/`handler.ts` hook pack.
263
263
  - Hermes Agent: Hermes plugin under Hermes home (`%LOCALAPPDATA%\hermes` on native Windows, `~/.hermes` elsewhere, or `HERMES_HOME`), enabled in `config.yaml`, with plugin hooks, slash command, CLI command, skills, and MCP config.
@@ -404,7 +404,51 @@ memorix background ensure
404
404
  memorix background ensure 2>/dev/null
405
405
  ```
406
406
 
407
- Or use a launchd plist / systemd user service for true boot-time persistence.
407
+ Or supervise `memorix serve-http` directly so a crash or reboot restarts the control plane.
408
+
409
+ Linux systemd user unit (`~/.config/systemd/user/memorix-http.service`):
410
+
411
+ ```ini
412
+ [Unit]
413
+ Description=Memorix HTTP MCP control plane
414
+ After=default.target
415
+
416
+ [Service]
417
+ Type=simple
418
+ ExecStart=/usr/bin/env memorix serve-http --host 127.0.0.1 --port 3211
419
+ Environment=PATH=%h/.local/bin:/usr/local/bin:/usr/bin
420
+ Restart=on-failure
421
+ RestartSec=3
422
+
423
+ [Install]
424
+ WantedBy=default.target
425
+ ```
426
+
427
+ macOS LaunchAgent (`~/Library/LaunchAgents/com.memorix.http.plist`). Point `ProgramArguments` at `which memorix`:
428
+
429
+ ```xml
430
+ <?xml version="1.0" encoding="UTF-8"?>
431
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
432
+ <plist version="1.0">
433
+ <dict>
434
+ <key>Label</key>
435
+ <string>com.memorix.http</string>
436
+ <key>ProgramArguments</key>
437
+ <array>
438
+ <string>/usr/local/bin/memorix</string>
439
+ <string>serve-http</string>
440
+ <string>--host</string>
441
+ <string>127.0.0.1</string>
442
+ <string>--port</string>
443
+ <string>3211</string>
444
+ </array>
445
+ <key>KeepAlive</key>
446
+ <true/>
447
+ <key>RunAtLoad</key>
448
+ <true/>
449
+ </dict>
450
+ </plist>
451
+ ```
408
452
 
409
453
  **Why this matters:** IDEs that use `serverUrl` (Windsurf, Cursor HTTP mode) connect to `http://localhost:3211/mcp` but cannot start the server. If the service is down, the IDE shows an MCP error with no recovery path. The user must run `memorix background start` or `ensure` manually.
410
454
 
@@ -81,6 +81,7 @@ memorix sync workspace --action scan
81
81
  memorix sync store status --json
82
82
  memorix sync store push
83
83
  memorix sync store pull
84
+ memorix sync store push --scope user
84
85
  memorix sync store device rotate
85
86
  memorix ingest image --path ./diagram.png
86
87
  memorix media import --path ./architecture.png
@@ -92,7 +93,8 @@ memorix receipt --json --probe "release blocker"
92
93
  The CLI is for direct terminal use, not a 1:1 mirror of MCP tool names. It does not require an MCP connection. `--cwd` selects a Git project from any shell; an unbound terminal has project-visible access only, including transfer exports. `memorix identity join|use|clear` makes personal/team access and coordination explicit, while `--as <agent-id>` is the one-command equivalent for scripts. The only MCP-only area is the optional graph-compatibility tools (`create_entities`, `read_graph`, and related tools) for workflows that expect the official memory-server style graph API.
93
94
 
94
95
  `memorix sync store` is an explicit, opt-in multi-device observation relay. It
95
- uses the current Git project as its namespace, excludes personal/agent-targeted
96
+ uses the current Git project as its namespace by default (`--scope project`),
97
+ or every local project with `--scope user`. It excludes personal/agent-targeted
96
98
  and unqualified records, keeps a local retry outbox, and stores cursors locally.
97
99
  The default `status` action is preview-only. GitHub stores immutable JSONL event
98
100
  blobs; it does not receive `memorix.db`, `memorix.db-wal`, or `memorix.db-shm`.
@@ -153,6 +155,42 @@ SessionStart hooks keep the default minimal hint lightweight. When memory behavi
153
155
 
154
156
  The intended loop for agents is: get the project brief when it helps, inspect the suggested current files, use stale or unbound memory only as a lead, store durable outcomes after the work changes the project, and resolve obsolete memories.
155
157
 
158
+ ### Task Continuity
159
+
160
+ Task Continuity is a small append-only ledger for one coding task. It keeps
161
+ requirements, decisions, verification states, risks, and the final outcome
162
+ together without copying the underlying observation or source evidence.
163
+
164
+ CLI:
165
+
166
+ ```bash
167
+ memorix continuity start --task "Harden the release path" --requirements "keep 1.9.x,run CI"
168
+ memorix continuity record --task-id <id> --kind decision --content "Use the existing release gate"
169
+ memorix continuity record --task-id <id> --kind verification --verification-status passed --content "Full CI passed"
170
+ memorix continuity record --task-id <id> --kind verification --verification-id ci --verification-status passed --idempotency-key ci-pass-1 --content "Full CI passed"
171
+ memorix context "continue the release path" --task-id <id>
172
+ memorix continuity close --task-id <id> --status completed --content "Ready for release"
173
+ ```
174
+
175
+ MCP uses `memorix_continuity` with actions `start`, `record`, `show`,
176
+ `list`, and `close`. Pass the returned `taskId` to
177
+ `memorix_project_context` to add a bounded `Task continuity` section to the Workset and
178
+ receipt. Entries are project-scoped, sanitized for credentials, append-only, and
179
+ bounded to 200 events per task.
180
+ The ledger also exposes a deterministic outcome projection:
181
+ `validated` means completion has passing verification, `at-risk` means a failure,
182
+ block, or abandonment is present, `in-progress` means the task is still open, and
183
+ `unverified` means it closed without enough passing verification. The numeric score is
184
+ diagnostic-only; it is not used to silently reorder or rewrite memories.
185
+ Use a stable `verificationId` when a verification obligation moves from `pending`
186
+ to `passed`, `failed`, or `skipped`; without one, entries are treated as separate
187
+ evidence. A completed task with passing checks and unresolved risks is reported as
188
+ `validated-with-risks`. `idempotencyKey` makes retries return the original event
189
+ instead of appending a duplicate. Event caps are enforced inside an immediate
190
+ SQLite transaction.
191
+ Continuity does not automatically promote anything to durable memory; verification
192
+ and outcome signals remain explicit.
193
+
156
194
  ### Evidence Cards and Feedback
157
195
 
158
196
  Evidence Cards are the persisted provenance index for project memory. They do
@@ -102,6 +102,15 @@ Memorix resolves configuration in this order:
102
102
  Environment variables stay available for CI, MCP launchers, and temporary shell
103
103
  overrides. They are not the default user-facing setup path.
104
104
 
105
+ For the HTTP control plane, `MEMORIX_HTTP_MAX_BODY_BYTES` bounds JSON request
106
+ bodies at 10 MiB by default and accepts values up to 64 MiB. Keep the default
107
+ unless a trusted local client needs larger payloads; this limit is not an
108
+ authentication boundary. `MEMORIX_HTTP_AUTH_TOKEN` enables Bearer-token
109
+ authentication for every endpoint except `/health`. Non-loopback binds are
110
+ refused unless this token is set or the operator explicitly sets
111
+ `MEMORIX_HTTP_ALLOW_UNAUTHENTICATED_BIND=1` behind a private network or
112
+ authenticated reverse proxy.
113
+
105
114
  If you want the simplest setup, configure `~/.memorix/config.toml` once and stop
106
115
  there. Add `<git-root>/memorix.toml` only when a repository needs different
107
116
  models, memory behavior, or server defaults.
@@ -149,6 +158,49 @@ Memorix uses an explicit provider path as-is: for example,
149
158
  `https://ark.cn-beijing.volces.com/api/v3` remains `/api/v3`. Only a bare host
150
159
  without a versioned path receives the convenience suffix `/v1`.
151
160
 
161
+ Atlas Cloud is also available as a memory LLM preset in `memorix init` and the
162
+ configuration TUI:
163
+
164
+ ```toml
165
+ [memory.llm]
166
+ provider = "atlascloud"
167
+ model = "deepseek-ai/deepseek-v3.2"
168
+ ```
169
+
170
+ The preset uses `https://api.atlascloud.ai/v1` and the existing OpenAI-compatible
171
+ chat completion transport. Set `ATLASCLOUD_API_KEY` or `MEMORIX_LLM_API_KEY` in
172
+ your environment, or store `api_key` in your private global config. Do not put
173
+ credentials in project TOML. Explicit `model` and `base_url` overrides still
174
+ apply; model IDs must be available in your Atlas Cloud account. The Atlas preset
175
+ does not fall back to OpenAI, Anthropic, or OpenRouter environment keys.
176
+
177
+ This is opt-in background memory processing and may incur API charges. Setting
178
+ `ATLASCLOUD_API_KEY` alone does not enable it. Embeddings and memcode's model
179
+ registry are unchanged.
180
+
181
+ OrcaRouter works through the generic OpenAI-compatible gateway path. Keep the
182
+ provider label as `openai`, set its base URL, and use an explicit model ID:
183
+
184
+ ```toml
185
+ [memory.llm]
186
+ provider = "openai"
187
+ base_url = "https://api.orcarouter.ai/v1"
188
+ model = "openai/gpt-4o-mini"
189
+
190
+ [agent]
191
+ provider = "openai"
192
+ base_url = "https://api.orcarouter.ai/v1"
193
+ model = "openai/gpt-4o-mini"
194
+ ```
195
+
196
+ Use `orcarouter/auto` only when per-request routing is intended. For memory
197
+ formation, structured output, and embeddings, a fixed namespaced model is more
198
+ reproducible. Set `MEMORIX_LLM_API_KEY` and, when using an embedding model
199
+ through the same gateway, set `MEMORIX_EMBEDDING_API_KEY` independently.
200
+ When the provider is unavailable, Memorix keeps the durable local write and
201
+ falls back to its documented heuristic/BM25 paths; it does not treat a remote
202
+ provider outage as a storage failure.
203
+
152
204
  ### `[embedding]`
153
205
 
154
206
  Used by semantic/vector search. This lane is intentionally separate from
@@ -397,10 +449,15 @@ Common keys:
397
449
  Store sync is disabled unless `MEMORIX_SYNC_PROVIDER` is explicitly set. It
398
450
  replicates approved project-visible observation events, never the live SQLite
399
451
  file or its `-wal` / `-shm` companions. The local SQLite store remains the
400
- canonical read/write store.
452
+ canonical read/write store. Default scope is the current Git project. Pass
453
+ `--scope user` to relay every local project through a separate `user-global`
454
+ named per-user namespace. Set the same stable value on that user's devices;
455
+ the value is required so operators sharing one remote cannot silently share a
456
+ default namespace.
401
457
 
402
458
  ```text
403
459
  MEMORIX_SYNC_PROVIDER=fs|github|s3|postgres
460
+ MEMORIX_SYNC_USER_NAMESPACE=your-stable-user-id # required with --scope user
404
461
  ```
405
462
 
406
463
  The filesystem relay needs `MEMORIX_SYNC_FS_ROOT`. The GitHub relay needs a
@@ -13,7 +13,7 @@ Memorix is a TypeScript project built around:
13
13
 
14
14
  ## Current Development Baseline
15
15
 
16
- The current release line is **1.9.4** and package metadata is kept synchronized
16
+ The current release line is **1.9.6** and package metadata is kept synchronized
17
17
  with the root package and MCP Registry manifest.
18
18
 
19
19
  Contributors should assume the following areas are part of the current release line:
package/docs/DOCKER.md CHANGED
@@ -29,6 +29,22 @@ Then open:
29
29
  - MCP endpoint: `http://localhost:3211/mcp`
30
30
  - health: `http://localhost:3211/health`
31
31
 
32
+ The compose port is bound to `127.0.0.1` by default. Do not expose this
33
+ unauthenticated control plane directly to the public internet. For a hosted
34
+ deployment, put it behind an authenticated reverse proxy or a private network
35
+ boundary before allowing remote clients to connect.
36
+
37
+ Set `MEMORIX_HTTP_AUTH_TOKEN` in the service environment when the control plane
38
+ must accept remote clients. Send it as `Authorization: Bearer <token>`; the
39
+ `/health` endpoint remains unauthenticated for readiness checks. The supplied
40
+ compose file uses an explicit unauthenticated-bind opt-in because its published
41
+ host port is loopback-only.
42
+
43
+ HTTP JSON bodies are limited to 10 MiB by default (dashboard maintenance
44
+ requests use a 1 MiB sub-limit). Operators can set
45
+ `MEMORIX_HTTP_MAX_BODY_BYTES`, up to 64 MiB, when a trusted local client needs
46
+ larger media or tool payloads.
47
+
32
48
  Stop it with:
33
49
 
34
50
  ```bash
@@ -50,7 +66,9 @@ If you prefer `docker run`:
50
66
 
51
67
  ```bash
52
68
  docker build -t memorix:local .
53
- docker run --rm -p 3211:3211 -v memorix-data:/data memorix:local
69
+ docker run --rm -p 127.0.0.1:3211:3211 \
70
+ -e MEMORIX_HTTP_ALLOW_UNAUTHENTICATED_BIND=1 \
71
+ -v memorix-data:/data memorix:local
54
72
  ```
55
73
 
56
74
  ---
@@ -60,9 +78,11 @@ docker run --rm -p 3211:3211 -v memorix-data:/data memorix:local
60
78
  `memorix serve-http` accepts a `--host` flag:
61
79
 
62
80
  - **Local** (default): binds to `127.0.0.1` — only accessible from the host machine
63
- - **Docker**: the Dockerfile sets `--host 0.0.0.0` — accessible from outside the container, which is required for port mapping (`-p 3211:3211`) to work
81
+ - **Docker**: the Dockerfile sets `--host 0.0.0.0` — accessible from outside the container, which is required for port mapping (`-p 3211:3211`) to work. Set `MEMORIX_HTTP_AUTH_TOKEN`, or explicitly opt into an unauthenticated private-network bind with `MEMORIX_HTTP_ALLOW_UNAUTHENTICATED_BIND=1`.
64
82
 
65
- If you run `serve-http` manually inside a container, make sure to pass `--host 0.0.0.0` or the port will not be reachable from the host.
83
+ If you run `serve-http` manually inside a container, make sure to pass
84
+ `--host 0.0.0.0` plus one of those explicit security settings, or the server
85
+ will refuse to start.
66
86
 
67
87
  ---
68
88
 
@@ -53,7 +53,7 @@ Generated guidance also has scope:
53
53
  | CodeBuddy Code | `memorix setup --agent codebuddy --global` | CodeBuddy local marketplace plugin | `~/.codebuddy/memorix-local` marketplace with `.codebuddy-plugin`, bundled stdio MCP, skills, and hooks | Setup attempts `codebuddy plugin marketplace add` then user-scope install. It does not alter existing CodeBuddy settings, permissions, or model configuration; review third-party hooks in CodeBuddy's `/hooks` flow before enabling them. |
54
54
  | GitHub Copilot CLI | `memorix setup --agent copilot --global` | Copilot CLI plugin package | Local plugin under `~/.copilot/plugins/local/memorix` with MCP, skills, and hooks | Setup attempts `copilot plugin install <local-path>` when Copilot CLI is available. |
55
55
  | Cursor | `memorix setup --agent cursor --global` | Cursor MCP and rules config | Cursor MCP config, `.cursor/rules/memorix.mdc`, skills, and hook guidance | Reload Cursor after setup so it can pick up project config changes. |
56
- | Grok Build | `memorix setup --agent grok --global` | `~/.grok/hooks/memorix.json` + `~/.grok/AGENTS.md` | Lifecycle hooks on SessionStart, SessionEnd, UserPromptSubmit, PostToolUse, PostToolUseFailure, PreCompact, PostCompact, Stop, and StopFailure, plus Grok project/global guidance | Uses Grok's own JSON hook directory and never writes `~/.grok/config.toml` or MCP entries. Global hooks are trusted; project hooks require Grok `/hooks-trust`. Set `GROK_HOME` to use a custom Grok home. The command is `memorix hook --agent grok`. |
56
+ | Grok Build | `memorix setup --agent grok --global` | `~/.grok/hooks/memorix.json` + `~/.grok/AGENTS.md` | Lifecycle hooks on SessionStart, SessionEnd, UserPromptSubmit, PostToolUse, PostToolUseFailure, PreCompact, PostCompact, Stop, and StopFailure, plus Grok project/global guidance | Uses Grok's own JSON hook directory. MCP stays host-owned unless you pass `--mcp http`, which writes `[mcp_servers.memorix]` with `url = "http://localhost:3211/mcp"` in Grok `config.toml`. Global hooks are trusted; project hooks require Grok `/hooks-trust`. Set `GROK_HOME` to use a custom Grok home. The command is `memorix hook --agent grok`. |
57
57
  | Gemini CLI | `memorix setup --agent gemini-cli --global` | Gemini CLI extension | Extension under `~/.gemini/extensions/memorix` with MCP, `GEMINI.md` context, hooks, commands, and skills | Antigravity CLI has an official Gemini CLI migration path, but Gemini CLI remains an active standalone Google CLI target. |
58
58
  | OpenCode | `memorix setup --agent opencode --global` | OpenCode local plugin file | Global setup writes `~/.config/opencode/plugins/memorix.js`, `~/.config/opencode/opencode.json`, skills, and `AGENTS.md` guidance; repo-local setup writes the `.opencode/` equivalents. | OpenCode loads local plugin and skill files from its config scope. |
59
59
  | OpenClaw | `memorix setup --agent openclaw --global` | OpenClaw compatible bundle | `~/.openclaw/extensions/memorix` with `.mcp.json`, skills, and OpenClaw `HOOK.md`/`handler.ts` hook pack | Setup attempts `openclaw plugins install <path> --force` and `openclaw hooks enable memorix` when OpenClaw is available. |
@@ -1,6 +1,6 @@
1
1
  # Memorix 已知边界与路线图
2
2
 
3
- > 最后审阅:2026-08-14(对照 v1.4.3)
3
+ > 最后审阅:2026-09-22(对照 v1.9.6 发布内容)
4
4
 
5
5
  这份文档说明仍然成立的产品边界、风险和方向;它不是发布流水账。
6
6
 
@@ -10,6 +10,66 @@
10
10
 
11
11
  ---
12
12
 
13
+ ## 1.9.6 基础设施收口
14
+
15
+ > 本节记录随 v1.9.6 合并并发布的基础设施整改及其验收边界。版本号仍保持
16
+ > 在 1.9.x,不跳跃到 1.10。
17
+
18
+ ### 已完成并通过回归
19
+
20
+ - SQLite 数据库句柄采用 lease + 有上限的 LRU registry;HTTP session 有硬上限、
21
+ pending admission、过期回收和关闭释放;health 暴露 SQLite、session、runtime
22
+ 与 event-loop 指标。
23
+ - MCP modern bridge 按请求创建协议 server,按项目复用有界 business runtime;
24
+ legacy business store 入口有串行门,避免跨项目并发切换污染。
25
+ - Task Continuity 采用 `requirement -> verification -> evidence -> outcome` 的
26
+ 可更新验证项语义,支持 `validated-with-risks`、幂等键、状态替换和 immediate
27
+ transaction 上限保护。
28
+ - Orchestrator 记录脱敏的 effect ledger 与结构化 trace,标记成功、失败、未知和
29
+ 重放要求;Memory Quality Gate 覆盖命中、精度、隔离、过期拒绝、延迟、RSS、
30
+ token 预算和失败归因。
31
+ - `npm run lint`、`npm run build`、`npm run gate:memory-quality`、全量 Vitest
32
+ 与现代 MCP/HTTP 集成回归均通过;本轮没有待处理的发布阻塞缺口。
33
+
34
+ ### 明确保留的产品边界
35
+
36
+ - SQLite 底层仍是同步 API;本轮通过 runtime 串行门、资源上限、event-loop 指标和
37
+ quality gate 控制风险,没有虚假宣称已经异步化。
38
+ - 协议层 modern MCP 保持 stateless;官方 SDK 的每请求 server 生命周期与业务
39
+ runtime 复用是两个不同层次,Durable Tasks 仍按既有契约不支持。
40
+ - Memory Quality Gate 是确定性本地基准和回归门,不把一次通过误报成所有模型、
41
+ 所有项目规模下的检索质量保证。
42
+
43
+ ---
44
+
45
+ ## 1.9.5 历史发布结论与剩余后续项
46
+
47
+ > `v1.9.5` 已发布,版本标签为 `658231f`;1.9.x 容量维护已通过 #306
48
+ > 合入当前主线 `3a3dd49`。本节保留发布证据和仍有外部依赖的事项,不再把
49
+ > 已完成的门槛伪装成未完成工作。
50
+
51
+ ### 发布门槛
52
+
53
+ | 优先级 | 项目 | 当前结论 | 1.9.5 完成标准 |
54
+ |---|---|---|---|
55
+ | P1 | HTTP 控制面安全与生命周期 | 已完成并随 v1.9.5 发布。 | 回环默认、非回环显式安全策略、请求体上限、监听失败、后台清理、HTTP/SQLite 关闭和真实 smoke 均通过。 |
56
+ | P1 | 项目隔离 | 已完成并随 v1.9.5 发布。 | 图谱实体/边按项目存储,Dashboard/MCP 查询、替换、删除和旧 JSONL 迁移测试通过。 |
57
+ | P1 | 迁移失败语义 | 已完成并随 v1.9.5 发布。 | legacy observations/subdirectories 具备锁和原子写入;坏 JSON fail-closed,不伪装成空库。 |
58
+ | P1 | Store / SQLite 生命周期 | 已完成;本轮容量切片补齐了缓存、查询和维护保留边界,没有已知发布阻塞。 | SDK 同目录引用计数、sync ID/tombstone、活锁保护、关闭路径、多实例与容量回归通过。 |
59
+ | P2 | 内存与容量边界 | 已完成并通过 #306 合入主线;压力验证也纳入本轮回归。 | TeamStore SQL 查询上限、failed job 30 天保留、三类 embedding cache 字节预算、HTTP project/store cache 驱逐均已有代码和回归覆盖。 |
60
+ | P1 | 发布契约 | 已完成并随 v1.9.5 发布。 | tag/version/commit 校验、npm 传播等待、check-only prepublish、npm 和 MCP Registry 发布均已验证。 |
61
+
62
+ ### 新 issue / PR 处置
63
+
64
+ - [#301](https://github.com/AVIDS2/memorix/issues/301) / [#303](https://github.com/AVIDS2/memorix/pull/303):已通过 #305 合并并随 v1.9.5 发布;原 PR 已标记为 superseded。
65
+ - [#302](https://github.com/AVIDS2/memorix/issues/302) / [#304](https://github.com/AVIDS2/memorix/pull/304):已通过 #305 合并并随 v1.9.5 发布;原 PR 已标记为 superseded。
66
+ - [#300](https://github.com/AVIDS2/memorix/pull/300):Atlas Cloud 是可选 provider;当前收口分支补齐了配置隔离和完整 CI,确认后合入 1.9.x,不改变默认 provider。
67
+ - [#297](https://github.com/AVIDS2/memorix/issues/297):外部 awesome-list 收录请求,需按对方仓库的贡献流程处理,不是 Memorix 代码阻塞。
68
+ - [#283](https://github.com/AVIDS2/memorix/issues/283):已完成文档收口;OrcaRouter 通过现有 OpenAI-compatible `base_url` 配置使用,不需要新 provider 枚举。
69
+ - [#49](https://github.com/AVIDS2/memorix/issues/49) 与 [#3](https://github.com/AVIDS2/memorix/issues/3):外部集成提案;当前没有可验证的宿主身份/Hook 契约,不纳入本轮维护代码。
70
+
71
+ ---
72
+
13
73
  ## 当前产品边界
14
74
 
15
75
  Memorix 是本地优先、可插拔的 Agent Memory 系统。它给不同 Agent 或同一 Agent 的新会话提供同一个项目记忆层,并把 CLI 作为最完整、最稳定的控制面;MCP 是面向 Agent 的受控入口,而不是唯一入口。
@@ -89,6 +89,10 @@ backup is not a merge input.
89
89
  version/audit record.
90
90
  - [x] Personal, agent-targeted, candidate, ephemeral, and other-project rows
91
91
  are excluded by default.
92
+ - [x] `--scope user` is an explicit opt-in that relays every local project's
93
+ eligible rows through a separate `user-global` namespace. Privacy
94
+ filters still drop personal, agent-targeted, candidate, and ephemeral
95
+ rows. The live SQLite file is still never copied.
92
96
  - [x] Copying a data directory produces a clear device-clone error and a
93
97
  documented `device rotate` recovery path.
94
98
  - [x] GitHub relay protocol smoke proves only JSONL/snapshot artifacts are uploaded;
@@ -39,9 +39,17 @@ user is allowed to remember.
39
39
  budget is large and can be raised with `MEMORIX_EMBEDDING_CACHE_MAX_BYTES`,
40
40
  but it is deliberately separate from the durable memory corpus. Cache
41
41
  eviction never deletes a memory; a later vector backfill can regenerate it.
42
+ - FastEmbed and Transformers caches use the same byte budget and reject cache
43
+ files above a bounded load size. A high-dimensional or unusually large
44
+ vector is skipped instead of exceeding the configured budget.
45
+ - Coordination lists are SQL-limited: agents, locks, tasks, and inboxes return
46
+ at most 100 rows by default and 500 rows at most per request. Maintenance
47
+ history keeps completed jobs for 7 days and failed diagnostics for 30 days.
42
48
  - `serve-http` `/health` exposes `rss`, V8 heap, external memory, array-buffer
43
49
  memory, and the V8 heap limit so a real saturation report can distinguish
44
- JavaScript retention from native/model memory.
50
+ JavaScript retention from native/model memory. It also exposes SQLite handle
51
+ cache/lease counts, modern runtime pool counts, HTTP session admission counts,
52
+ and event-loop lag percentiles.
45
53
 
46
54
  ## SQLite Storage Reliability Contract
47
55
 
@@ -129,13 +137,15 @@ On the release development machine used for this check, the healthy HTTP service
129
137
  | Knob | Default | Use When |
130
138
  | --- | --- | --- |
131
139
  | `MEMORIX_SESSION_TIMEOUT_MS` | `43200000` (12 h) | Set a shorter GC window for supervised clients, or `0` to disable idle session GC |
140
+ | `MEMORIX_MAX_HTTP_SESSIONS` | `64` (max `512`) | Bound concurrent stateful HTTP MCP sessions; excess initialization requests receive `429` |
132
141
  | `MEMORIX_FORMATION_TIMEOUT_MS` | `12000` (12 s) | Raise when LLM-backed formation should outlive slow proxy/provider hops |
133
142
  | `MEMORIX_LLM_API_KEY` / `OPENAI_API_KEY` | unset | Enable LLM-backed enrichment, extraction, rerank, or skill generation |
134
143
  | `MEMORIX_LLM_TIMEOUT_MS` | `30000` (30 s) | Bound a single LLM-backed extraction/resolve call |
135
144
  | `MEMORIX_RERANK_TIMEOUT_MS` | 30000 | Bound HTTP and LLM rerank calls |
136
145
  | `MEMORIX_RERANK_PROVIDER` | `off` | Set `http` to enable optional HTTP rerank |
137
146
  | `MEMORIX_RERANK_BASE_URL` | `[memory.llm].base_url` | Compatible `/rerank` API root (path `/rerank` is appended) |
138
- | `MEMORIX_EMBEDDING_CACHE_MAX_BYTES` | `268435456` | Disposable in-process API-vector cache budget; raise for large warm caches, or lower when the host is memory constrained |
147
+ | `MEMORIX_EMBEDDING_CACHE_MAX_BYTES` | `268435456` API / `67108864` local providers | Disposable embedding-vector cache budget; raise for large warm caches, or lower when the host is memory constrained |
148
+ | Team coordination list APIs | `100` default / `500` maximum | Bound agent, lock, task, and inbox result sets; use task/agent detail endpoints for individual records |
139
149
  | `MEMORIX_ORAMA_HYDRATION_THRESHOLD` | `10000` | Above this durable corpus size, skip full Orama hydration and use persistent SQLite/semantic indexes; this is a working-set threshold, not a memory quota |
140
150
  | `MEMORIX_SEMANTIC_INDEX` | `auto` | `auto` uses the optional local LanceDB shadow index when installed; `off` or `orama` keeps the legacy semantic path |
141
151
  | `MEMORIX_SEMANTIC_INDEX_THRESHOLD` | `10000` | Minimum vectors before the optional HNSW/SQ index is trained; vectors remain searchable before training |
@@ -147,6 +157,19 @@ On the release development machine used for this check, the healthy HTTP service
147
157
  | `memorix retention archive` | explicit | Archive expired memories when the project gets noisy |
148
158
  | `memorix memory deduplicate` / `consolidate` | explicit | Reduce duplicate or scattered memory records |
149
159
 
160
+ Modern stateless MCP creates a fresh protocol server per request as required by
161
+ the official SDK. Memorix reuses the project business runtime behind that shell,
162
+ with a bounded pool and a reference count. The pool key includes both the shared
163
+ SQLite `dataDir` and the verified project root because the default storage layout
164
+ is flat across projects. Before a pooled tool call, Memorix restores the project
165
+ configuration and legacy store context; requests pass through a single runtime
166
+ gate to preserve project isolation. Long-lived SSE GET streams bypass the gate.
167
+
168
+ Orchestrator runs persist redacted effect records for observed tool calls. The
169
+ ledger stores tool name, risk tier, replay policy, a fingerprint, and settlement
170
+ status, never raw tool arguments or output. An effect marked `unknown` after a
171
+ crash must be reconciled before a dangerous retry.
172
+
150
173
  ## Operator Guidance
151
174
 
152
175
  - For memory-only use, prefer stdio MCP or a lightweight `memorix_session_start`; do not join orchestration coordination state by default.
@@ -191,6 +214,27 @@ Results are machine-specific and should be compared on the same OS and Node
191
214
  version. The release gate is an integrity and regression check, not a public
192
215
  latency guarantee.
193
216
 
217
+ ### 1.9.x Capacity Closeout Evidence (2026-09-21)
218
+
219
+ The 40,000-record gate passed on Windows with Node `v22.22.3`, SQLite-backed
220
+ storage, and embeddings disabled after the capacity guardrails landed:
221
+
222
+ | Measurement | Result |
223
+ | --- | ---: |
224
+ | Seed and index | 51.4 s |
225
+ | Steady-state write p50 / p95 | 0.87 / 1.51 ms |
226
+ | SDK lexical search | 25.4 ms |
227
+ | HTTP ready | 2.20 s |
228
+ | MCP initialize / bind | 160 / 344 ms |
229
+ | MCP context / search / store | 768 / 428 / 556 ms |
230
+ | Hook write | 3.75 s |
231
+ | SDK reopen | 129.8 ms |
232
+ | Service peak RSS | 408.7 MiB |
233
+ | Durable records after MCP and hook writes | 40,002 |
234
+
235
+ The planted record remained searchable, the HTTP/MCP and hook writes were
236
+ durable, and the reopened SDK observed the project-visible records.
237
+
194
238
  ### 1.9.3 Release Evidence (2026-09-14)
195
239
 
196
240
  The 40,000-record gate passed on Windows with Node `v22.22.3`, SQLite-backed
package/docs/README.md CHANGED
@@ -32,6 +32,7 @@ The public docs are organized by user intent:
32
32
  | --- | --- |
33
33
  | CLI commands and MCP tools | [API_REFERENCE.md](API_REFERENCE.md) |
34
34
  | Memory Autopilot, Code State, and context packs | [API_REFERENCE.md § Memory Autopilot, Code State, and Context Packs](API_REFERENCE.md#memory-autopilot-code-state-and-context-packs), [1.2 Code State](1.2.0-CODE-STATE.md), and [1.2 Workset Retrieval](1.2.0-WORKSET-RETRIEVAL.md) |
35
+ | Requirement, decision, and verification continuity | [API_REFERENCE.md § Task Continuity](API_REFERENCE.md#task-continuity) |
35
36
  | Reviewed episodic, semantic, and procedural long-term memory | [1.3 Memory Architecture](1.3-MEMORY-ARCHITECTURE.md) |
36
37
  | Browse memory, maintenance, and read-only Coordination Status | [Dashboard](DASHBOARD.md) |
37
38
  | Reviewable knowledge pages and workflow inheritance | [API_REFERENCE.md § Knowledge Workspace and Workflows](API_REFERENCE.md#knowledge-workspace-and-workflows), [1.2 Knowledge Workspace](1.2.0-KNOWLEDGE-WORKSPACE.md), and [1.2 Workflow Inheritance](1.2.0-WORKFLOW-INHERITANCE.md) |
@@ -125,7 +126,7 @@ Historical/deep-reference documents may describe older designs. If they conflict
125
126
 
126
127
  ## Current Product Line
127
128
 
128
- The current product line is **1.9.4**. Multi-device store sync is opt-in and
129
+ The current product line is **1.9.6**. Multi-device store sync is opt-in and
129
130
  keeps local SQLite canonical; existing users do not upload anything until they
130
131
  configure a relay provider explicitly.
131
132
  The authoritative acceptance contract for the current implementation is
package/docs/SETUP.md CHANGED
@@ -151,7 +151,7 @@ memorix serve
151
151
 
152
152
  Use this when your agent only needs a raw local stdio MCP process or you are debugging a manual config. The agent starts `memorix serve` and communicates with it over stdio.
153
153
 
154
- A bare `memorix serve` defaults to `--mode micro`, which exposes 9 high-signal tools so agent context is not crowded by rarely used schemas. Use `memorix serve --mode lite` for the 20-tool solo memory surface, `--mode team` for the 28-tool coordination surface, or `--mode full` for all 47 advanced and MCP Memory compatibility tools.
154
+ A bare `memorix serve` defaults to `--mode micro`, which exposes 9 high-signal tools so agent context is not crowded by rarely used schemas. Use `memorix serve --mode lite` for the 21-tool solo memory surface, `--mode team` for the 29-tool coordination surface, or `--mode full` for all 48 advanced and MCP Memory compatibility tools.
155
155
 
156
156
  `memorix setup` writes `--mode lite` into the installed MCP config: the generated guidance teaches the extended surface (sessions, timeline, reasoning, retention), so the installed server must actually expose it. Override with `MEMORIX_MODE` if you prefer a different profile.
157
157
 
@@ -237,6 +237,61 @@ Use foreground HTTP mode for debugging or custom launch supervision:
237
237
  memorix serve-http --port 3211
238
238
  ```
239
239
 
240
+ `memorix background start` survives the terminal but not logout or reboot. For a supervised control plane that only execs `memorix serve-http`, use an OS unit. Keep the bind address loopback-only.
241
+
242
+ Linux systemd user unit (`~/.config/systemd/user/memorix-http.service`):
243
+
244
+ ```ini
245
+ [Unit]
246
+ Description=Memorix HTTP MCP control plane
247
+ After=default.target
248
+
249
+ [Service]
250
+ Type=simple
251
+ ExecStart=/usr/bin/env memorix serve-http --host 127.0.0.1 --port 3211
252
+ Environment=PATH=%h/.local/bin:/usr/local/bin:/usr/bin
253
+ Restart=on-failure
254
+ RestartSec=3
255
+
256
+ [Install]
257
+ WantedBy=default.target
258
+ ```
259
+
260
+ ```bash
261
+ systemctl --user daemon-reload
262
+ systemctl --user enable --now memorix-http.service
263
+ ```
264
+
265
+ macOS LaunchAgent (`~/Library/LaunchAgents/com.memorix.http.plist`). Replace the `memorix` path with the output of `which memorix`:
266
+
267
+ ```xml
268
+ <?xml version="1.0" encoding="UTF-8"?>
269
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
270
+ <plist version="1.0">
271
+ <dict>
272
+ <key>Label</key>
273
+ <string>com.memorix.http</string>
274
+ <key>ProgramArguments</key>
275
+ <array>
276
+ <string>/usr/local/bin/memorix</string>
277
+ <string>serve-http</string>
278
+ <string>--host</string>
279
+ <string>127.0.0.1</string>
280
+ <string>--port</string>
281
+ <string>3211</string>
282
+ </array>
283
+ <key>KeepAlive</key>
284
+ <true/>
285
+ <key>RunAtLoad</key>
286
+ <true/>
287
+ </dict>
288
+ </plist>
289
+ ```
290
+
291
+ ```bash
292
+ launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.memorix.http.plist
293
+ ```
294
+
240
295
  Generic HTTP MCP config:
241
296
 
242
297
  ```json
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "memorix",
3
3
  "mcpName": "io.github.AVIDS2/memorix",
4
- "version": "1.9.4",
4
+ "version": "1.9.6",
5
5
  "description": "Local-first shared memory layer for AI coding agents across MCP clients, Git history, reasoning context, and project sessions.",
6
6
  "type": "module",
7
7
  "sideEffects": false,
@@ -76,6 +76,7 @@
76
76
  "benchmark:codegraph": "node scripts/benchmark-codegraph-provider.cjs",
77
77
  "benchmark:codegraph:scale": "node scripts/benchmark-codegraph-scale.mjs",
78
78
  "benchmark:retrieval": "npm run build && node scripts/benchmark-retrieval.mjs",
79
+ "gate:memory-quality": "vitest run tests/evaluation/memory-quality-gate.test.ts tests/evaluation/session-replay-evaluation.test.ts",
79
80
  "gate:large-store": "npm run build && node scripts/large-store-gate.mjs",
80
81
  "sync:mcp-registry": "node scripts/sync-mcp-registry-manifest.mjs",
81
82
  "check:mcp-registry": "node scripts/check-mcp-registry-manifest.mjs",
@@ -83,7 +84,7 @@
83
84
  "check:plugin-release": "node scripts/sync-plugin-release-manifests.mjs --check",
84
85
  "audit:pi-upstream": "node scripts/pi-upstream-audit.mjs",
85
86
  "lint": "tsc --noEmit",
86
- "prepublishOnly": "npm run sync:mcp-registry && npm run sync:plugin-release && npm run check:mcp-registry && npm run check:plugin-release && npm run build && npm test"
87
+ "prepublishOnly": "npm run check:mcp-registry && npm run check:plugin-release && npm run build && npm test"
87
88
  },
88
89
  "keywords": [
89
90
  "mcp",
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "memorix",
3
- "version": "1.9.4"
3
+ "version": "1.9.6"
4
4
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://anthropic.com/claude-code/plugin.schema.json",
3
3
  "name": "memorix",
4
- "version": "1.9.4",
4
+ "version": "1.9.6",
5
5
  "description": "Shared workspace memory for Claude Code and other AI coding agents.",
6
6
  "author": {
7
7
  "name": "AVIDS2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memorix",
3
- "version": "1.9.4",
3
+ "version": "1.9.6",
4
4
  "description": "Local-first project memory for CodeBuddy Code and other coding agents.",
5
5
  "author": {
6
6
  "name": "AVIDS2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memorix",
3
- "version": "1.9.4",
3
+ "version": "1.9.6",
4
4
  "description": "Shared workspace memory for Codex and other AI coding agents.",
5
5
  "author": {
6
6
  "name": "AVIDS2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memorix",
3
- "version": "1.9.4",
3
+ "version": "1.9.6",
4
4
  "description": "Shared local workspace memory for GitHub Copilot CLI and other AI coding agents.",
5
5
  "author": {
6
6
  "name": "AVIDS2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memorix",
3
- "version": "1.9.4",
3
+ "version": "1.9.6",
4
4
  "mcpServers": {
5
5
  "memorix": {
6
6
  "command": "memorix",
@@ -1,5 +1,5 @@
1
1
  name: memorix
2
- version: "1.9.4"
2
+ version: "1.9.6"
3
3
  description: Shared workspace memory bridge for Hermes Agent.
4
4
  author: AVIDS2
5
5
  license: Apache-2.0