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.
- package/CHANGELOG.md +75 -1
- package/README.md +12 -6
- package/README.zh-CN.md +12 -6
- package/dist/cli/index.js +2533 -585
- package/dist/index.d.ts +15 -8
- package/dist/index.js +1201 -284
- package/dist/maintenance-runner.js +387 -216
- package/dist/media-audio-runner.js +300 -129
- package/dist/media-video-runner.js +300 -129
- package/dist/memcode-runtime/CHANGELOG.md +75 -1
- package/dist/sdk.d.ts +1 -0
- package/dist/sdk.js +1882 -998
- package/dist/types.d.ts +1 -1
- package/dist/vector-backfill-runner.js +300 -129
- package/docs/AGENT_OPERATOR_PLAYBOOK.md +47 -3
- package/docs/API_REFERENCE.md +39 -1
- package/docs/CONFIGURATION.md +58 -1
- package/docs/DEVELOPMENT.md +1 -1
- package/docs/DOCKER.md +23 -3
- package/docs/INTEGRATIONS.md +1 -1
- package/docs/KNOWN_ISSUES_AND_ROADMAP.md +61 -1
- package/docs/MULTI-DEVICE-SYNC-RESEARCH.md +4 -0
- package/docs/PERFORMANCE.md +46 -2
- package/docs/README.md +2 -1
- package/docs/SETUP.md +56 -1
- package/package.json +3 -2
- package/plugins/antigravity/memorix/plugin.json +1 -1
- package/plugins/claude/memorix/.claude-plugin/plugin.json +1 -1
- package/plugins/codebuddy/memorix/.codebuddy-plugin/plugin.json +1 -1
- package/plugins/codex/memorix/.codex-plugin/plugin.json +1 -1
- package/plugins/copilot/memorix/plugin.json +1 -1
- package/plugins/gemini/memorix/gemini-extension.json +1 -1
- package/plugins/hermes/memorix/plugin.yaml +1 -1
- package/plugins/omp/memorix/package.json +1 -1
- package/plugins/openclaw/memorix/.codex-plugin/plugin.json +1 -1
- package/plugins/pi/memorix/package.json +1 -1
- package/server.json +2 -2
- package/src/cli/capability-map.ts +1 -0
- package/src/cli/command-guide.ts +15 -3
- package/src/cli/commands/agent-integrations.ts +57 -0
- package/src/cli/commands/background.ts +11 -2
- package/src/cli/commands/context.ts +2 -0
- package/src/cli/commands/continuity.ts +155 -0
- package/src/cli/commands/init.ts +5 -2
- package/src/cli/commands/serve-http.ts +435 -84
- package/src/cli/commands/setup.ts +77 -10
- package/src/cli/commands/sync-store.ts +47 -12
- package/src/cli/commands/sync.ts +26 -0
- package/src/cli/index.ts +3 -1
- package/src/cli/tui/ConfigureView.tsx +2 -0
- package/src/codegraph/auto-context.ts +17 -0
- package/src/config/legacy-loader.ts +2 -2
- package/src/config/resolved-config.ts +8 -5
- package/src/config/yaml-loader.ts +20 -10
- package/src/dashboard/server.ts +10 -12
- package/src/embedding/api-provider.ts +4 -2
- package/src/embedding/fastembed-provider.ts +47 -14
- package/src/embedding/transformers-provider.ts +29 -7
- package/src/evaluation/memory-quality-gate.ts +90 -0
- package/src/hooks/official-skills.ts +2 -0
- package/src/integrations/registry.ts +1 -1
- package/src/knowledge/context-assembly.ts +1 -0
- package/src/knowledge/context-receipt.ts +15 -0
- package/src/knowledge/task-continuity.ts +413 -0
- package/src/knowledge/workset.ts +77 -0
- package/src/llm/provider.ts +2 -1
- package/src/memory/graph.ts +10 -8
- package/src/memory/session.ts +1 -1
- package/src/orchestrate/coordinator.ts +60 -0
- package/src/orchestrate/effect-ledger.ts +160 -0
- package/src/orchestrate/pipeline-trace.ts +40 -6
- package/src/runtime/maintenance-jobs.ts +12 -6
- package/src/sdk.ts +24 -0
- package/src/server/mcp-binding-store.ts +14 -3
- package/src/server/modern-mcp-bridge.ts +153 -27
- package/src/server/tool-profile.ts +3 -2
- package/src/server.ts +131 -7
- package/src/store/file-lock.ts +28 -3
- package/src/store/graph-store.ts +178 -46
- package/src/store/persistence.ts +14 -9
- package/src/store/sqlite-db.ts +150 -7
- package/src/store/sqlite-store.ts +32 -27
- package/src/sync/engine.ts +9 -7
- package/src/sync/namespace.ts +23 -0
- package/src/sync/policy.ts +19 -4
- package/src/sync/store-port.ts +43 -13
- package/src/sync/types.ts +2 -0
- package/src/team/team-store.ts +62 -27
- package/src/types.ts +1 -1
- 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`.
|
|
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
|
|
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
|
|
package/docs/API_REFERENCE.md
CHANGED
|
@@ -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
|
|
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
|
package/docs/CONFIGURATION.md
CHANGED
|
@@ -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
|
package/docs/DEVELOPMENT.md
CHANGED
|
@@ -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.
|
|
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
|
|
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
|
|
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
|
|
package/docs/INTEGRATIONS.md
CHANGED
|
@@ -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
|
|
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-
|
|
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;
|
package/docs/PERFORMANCE.md
CHANGED
|
@@ -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
|
|
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.
|
|
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
|
|
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
|
+
"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
|
|
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",
|