superlocalmemory 4.2.0 → 4.2.3

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 (146) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +129 -0
  3. package/README.md +48 -9
  4. package/antigravity-plugin/_GENERATED.md +1 -1
  5. package/antigravity-plugin/agents/slm-governance-advisor.md +1 -1
  6. package/antigravity-plugin/agents/slm-loop-runner.md +1 -1
  7. package/antigravity-plugin/agents/slm-memory-advisor.md +1 -1
  8. package/antigravity-plugin/agents/slm-optimize-advisor.md +1 -1
  9. package/antigravity-plugin/plugin.json +1 -1
  10. package/antigravity-plugin/skills/slm-bot-memory/SKILL.md +1 -1
  11. package/antigravity-plugin/skills/slm-cache/SKILL.md +1 -1
  12. package/antigravity-plugin/skills/slm-compress/SKILL.md +1 -1
  13. package/antigravity-plugin/skills/slm-getting-started-bot/SKILL.md +1 -1
  14. package/antigravity-plugin/skills/slm-governance/SKILL.md +1 -1
  15. package/antigravity-plugin/skills/slm-graph/SKILL.md +1 -1
  16. package/antigravity-plugin/skills/slm-loop/SKILL.md +4 -3
  17. package/antigravity-plugin/skills/slm-media/SKILL.md +10 -4
  18. package/antigravity-plugin/skills/slm-mesh/SKILL.md +1 -1
  19. package/antigravity-plugin/skills/slm-profile/SKILL.md +1 -1
  20. package/antigravity-plugin/skills/slm-recall/SKILL.md +1 -1
  21. package/antigravity-plugin/skills/slm-remember/SKILL.md +1 -1
  22. package/antigravity-plugin/skills/slm-scope/SKILL.md +1 -1
  23. package/antigravity-plugin/skills/slm-session/SKILL.md +1 -1
  24. package/antigravity-plugin/skills/slm-status/SKILL.md +1 -1
  25. package/codex-plugin/.claude-plugin/plugin.json +1 -1
  26. package/codex-plugin/.codex-plugin/plugin.json +1 -1
  27. package/codex-plugin/AGENTS.md +1 -1
  28. package/codex-plugin/README.md +2 -2
  29. package/codex-plugin/_GENERATED.md +1 -1
  30. package/codex-plugin/agents/slm-governance-advisor.md +1 -1
  31. package/codex-plugin/agents/slm-loop-runner.md +1 -1
  32. package/codex-plugin/agents/slm-memory-advisor.md +1 -1
  33. package/codex-plugin/agents/slm-optimize-advisor.md +1 -1
  34. package/codex-plugin/skills/slm-bot-memory/SKILL.md +1 -1
  35. package/codex-plugin/skills/slm-cache/SKILL.md +1 -1
  36. package/codex-plugin/skills/slm-compress/SKILL.md +1 -1
  37. package/codex-plugin/skills/slm-getting-started-bot/SKILL.md +1 -1
  38. package/codex-plugin/skills/slm-governance/SKILL.md +1 -1
  39. package/codex-plugin/skills/slm-graph/SKILL.md +1 -1
  40. package/codex-plugin/skills/slm-loop/SKILL.md +4 -3
  41. package/codex-plugin/skills/slm-media/SKILL.md +10 -4
  42. package/codex-plugin/skills/slm-mesh/SKILL.md +1 -1
  43. package/codex-plugin/skills/slm-profile/SKILL.md +1 -1
  44. package/codex-plugin/skills/slm-recall/SKILL.md +1 -1
  45. package/codex-plugin/skills/slm-remember/SKILL.md +1 -1
  46. package/codex-plugin/skills/slm-scope/SKILL.md +1 -1
  47. package/codex-plugin/skills/slm-session/SKILL.md +1 -1
  48. package/codex-plugin/skills/slm-status/SKILL.md +1 -1
  49. package/copilot-plugin/.github/agents/slm-governance-advisor.agent.md +2 -2
  50. package/copilot-plugin/.github/agents/slm-loop-runner.agent.md +2 -2
  51. package/copilot-plugin/.github/agents/slm-memory-advisor.agent.md +2 -2
  52. package/copilot-plugin/.github/agents/slm-optimize-advisor.agent.md +2 -2
  53. package/copilot-plugin/.github/copilot-instructions.md +4 -4
  54. package/copilot-plugin/.github/prompts/slm-bot-memory.prompt.md +2 -2
  55. package/copilot-plugin/.github/prompts/slm-cache.prompt.md +2 -2
  56. package/copilot-plugin/.github/prompts/slm-compress.prompt.md +2 -2
  57. package/copilot-plugin/.github/prompts/slm-getting-started-bot.prompt.md +2 -2
  58. package/copilot-plugin/.github/prompts/slm-governance.prompt.md +2 -2
  59. package/copilot-plugin/.github/prompts/slm-graph.prompt.md +2 -2
  60. package/copilot-plugin/.github/prompts/slm-loop.prompt.md +5 -4
  61. package/copilot-plugin/.github/prompts/slm-media.prompt.md +11 -5
  62. package/copilot-plugin/.github/prompts/slm-mesh.prompt.md +2 -2
  63. package/copilot-plugin/.github/prompts/slm-profile.prompt.md +2 -2
  64. package/copilot-plugin/.github/prompts/slm-recall.prompt.md +2 -2
  65. package/copilot-plugin/.github/prompts/slm-remember.prompt.md +2 -2
  66. package/copilot-plugin/.github/prompts/slm-scope.prompt.md +2 -2
  67. package/copilot-plugin/.github/prompts/slm-session.prompt.md +2 -2
  68. package/copilot-plugin/.github/prompts/slm-status.prompt.md +2 -2
  69. package/copilot-plugin/.github/prompts/slm-web-access.prompt.md +1 -1
  70. package/copilot-plugin/README.md +2 -2
  71. package/copilot-plugin/_GENERATED.md +1 -1
  72. package/hermes-plugin/__init__.py +11 -7
  73. package/hermes-plugin/agents/slm-governance-advisor.md +1 -1
  74. package/hermes-plugin/agents/slm-loop-runner.md +1 -1
  75. package/hermes-plugin/agents/slm-memory-advisor.md +1 -1
  76. package/hermes-plugin/agents/slm-optimize-advisor.md +1 -1
  77. package/hermes-plugin/plugin.yaml +1 -1
  78. package/hermes-plugin/remote.py +25 -4
  79. package/hermes-plugin/skills/slm-bot-memory/SKILL.md +1 -1
  80. package/hermes-plugin/skills/slm-cache/SKILL.md +1 -1
  81. package/hermes-plugin/skills/slm-compress/SKILL.md +1 -1
  82. package/hermes-plugin/skills/slm-getting-started-bot/SKILL.md +1 -1
  83. package/hermes-plugin/skills/slm-governance/SKILL.md +1 -1
  84. package/hermes-plugin/skills/slm-graph/SKILL.md +1 -1
  85. package/hermes-plugin/skills/slm-loop/SKILL.md +4 -3
  86. package/hermes-plugin/skills/slm-media/SKILL.md +10 -4
  87. package/hermes-plugin/skills/slm-mesh/SKILL.md +1 -1
  88. package/hermes-plugin/skills/slm-profile/SKILL.md +1 -1
  89. package/hermes-plugin/skills/slm-recall/SKILL.md +1 -1
  90. package/hermes-plugin/skills/slm-remember/SKILL.md +1 -1
  91. package/hermes-plugin/skills/slm-scope/SKILL.md +1 -1
  92. package/hermes-plugin/skills/slm-session/SKILL.md +1 -1
  93. package/hermes-plugin/skills/slm-status/SKILL.md +1 -1
  94. package/package.json +1 -1
  95. package/plugin/.claude-plugin/plugin.json +1 -1
  96. package/plugin/.cursor-plugin/plugin.json +1 -1
  97. package/plugin/CLAUDE.md +3 -3
  98. package/plugin/agents/slm-governance-advisor.md +1 -1
  99. package/plugin/agents/slm-loop-runner.md +1 -1
  100. package/plugin/agents/slm-memory-advisor.md +1 -1
  101. package/plugin/agents/slm-optimize-advisor.md +1 -1
  102. package/plugin/cursor-skills/slm-bot-memory/SKILL.md +1 -1
  103. package/plugin/cursor-skills/slm-getting-started-bot/SKILL.md +1 -1
  104. package/plugin/cursor-skills/slm-recall/SKILL.md +1 -1
  105. package/plugin/cursor-skills/slm-remember/SKILL.md +1 -1
  106. package/plugin/cursor-skills/slm-scope/SKILL.md +1 -1
  107. package/plugin/cursor-skills/slm-session/SKILL.md +1 -1
  108. package/plugin/mcp.cursor.json +1 -1
  109. package/plugin/requirements.txt +1 -1
  110. package/plugin/skills/slm-bot-memory/SKILL.md +1 -1
  111. package/plugin/skills/slm-cache/SKILL.md +1 -1
  112. package/plugin/skills/slm-compress/SKILL.md +1 -1
  113. package/plugin/skills/slm-getting-started-bot/SKILL.md +1 -1
  114. package/plugin/skills/slm-governance/SKILL.md +1 -1
  115. package/plugin/skills/slm-graph/SKILL.md +1 -1
  116. package/plugin/skills/slm-loop/SKILL.md +4 -3
  117. package/plugin/skills/slm-media/SKILL.md +10 -4
  118. package/plugin/skills/slm-mesh/SKILL.md +1 -1
  119. package/plugin/skills/slm-profile/SKILL.md +1 -1
  120. package/plugin/skills/slm-recall/SKILL.md +1 -1
  121. package/plugin/skills/slm-remember/SKILL.md +1 -1
  122. package/plugin/skills/slm-scope/SKILL.md +1 -1
  123. package/plugin/skills/slm-session/SKILL.md +1 -1
  124. package/plugin/skills/slm-status/SKILL.md +1 -1
  125. package/plugin-src/agents/slm-governance-advisor.md +1 -1
  126. package/plugin-src/agents/slm-loop-runner.md +1 -1
  127. package/plugin-src/agents/slm-memory-advisor.md +1 -1
  128. package/plugin-src/agents/slm-optimize-advisor.md +1 -1
  129. package/plugin-src/rules/AGENTS.md +1 -1
  130. package/plugin-src/rules/CLAUDE.md.fragment +3 -3
  131. package/plugin-src/skills/slm-bot-memory/SKILL.md +1 -1
  132. package/plugin-src/skills/slm-cache/SKILL.md +1 -1
  133. package/plugin-src/skills/slm-compress/SKILL.md +1 -1
  134. package/plugin-src/skills/slm-getting-started-bot/SKILL.md +1 -1
  135. package/plugin-src/skills/slm-governance/SKILL.md +1 -1
  136. package/plugin-src/skills/slm-graph/SKILL.md +1 -1
  137. package/plugin-src/skills/slm-loop/SKILL.md +4 -3
  138. package/plugin-src/skills/slm-media/SKILL.md +10 -4
  139. package/plugin-src/skills/slm-mesh/SKILL.md +1 -1
  140. package/plugin-src/skills/slm-profile/SKILL.md +1 -1
  141. package/plugin-src/skills/slm-recall/SKILL.md +1 -1
  142. package/plugin-src/skills/slm-remember/SKILL.md +1 -1
  143. package/plugin-src/skills/slm-scope/SKILL.md +1 -1
  144. package/plugin-src/skills/slm-session/SKILL.md +1 -1
  145. package/plugin-src/skills/slm-status/SKILL.md +1 -1
  146. package/scripts/postinstall.js +4 -2
@@ -21,7 +21,7 @@
21
21
  "license": "AGPL-3.0-or-later",
22
22
  "name": "superlocalmemory",
23
23
  "source": "./plugin",
24
- "version": "4.2.0"
24
+ "version": "4.2.3"
25
25
  },
26
26
  {
27
27
  "author": {
@@ -39,7 +39,7 @@
39
39
  "license": "AGPL-3.0-or-later",
40
40
  "name": "superlocalmemory-codex",
41
41
  "source": "./codex-plugin",
42
- "version": "4.2.0"
42
+ "version": "4.2.3"
43
43
  }
44
44
  ]
45
45
  }
package/CHANGELOG.md CHANGED
@@ -5,6 +5,135 @@ All notable changes to SuperLocalMemory will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [4.2.3] — Recall answers on large memories from every agent, hook and harness
9
+
10
+ A fix release. Nothing is moved or deleted, and no setting changes.
11
+
12
+ ### Fixes
13
+
14
+ - **A quick look at memory came back empty on large stores.** An agent's
15
+ `recall` at `depth=0` (the cheap one-line glance the tool suggests starting
16
+ with) was treated like the prompt hook and given its three-second limit. On a
17
+ store where full recall takes about 2.5 seconds (27,000 memories), it timed
18
+ out and returned nothing, with every search channel marked "timeout". A
19
+ glance is now a question like any other and waits for the full answer.
20
+ - **`session_init` lost its search on large stores.** The first call every
21
+ agent makes loaded only pinned rules: its search ran under the same short
22
+ limit and timed out. It now gets the full time. It is still never judged by
23
+ the answer check.
24
+ - **When the prompt hook ran out of time it injected nothing.** The keyword
25
+ backup only started after the full search was given up, with about 0.2
26
+ seconds left, so it never finished. Now, when a hook's search is still running
27
+ a second before its limit, the keyword backup starts beside it, and whichever
28
+ is ready first answers. The hook still never holds up a prompt longer than
29
+ before. This is the same for every harness (Claude Code, Codex, Cursor,
30
+ Copilot, Antigravity, Hermes).
31
+ - **Hermes prefetch gave up before recall answered.** Hermes waits 3 seconds
32
+ for the memory it adds to each turn, but asked for a full recall. It now sends
33
+ its time budget (`budget_s`, a new optional `recall` parameter), and recall
34
+ answers inside it.
35
+ - **`prestage_context` always said `recall_error`.** It recalled inside the
36
+ MCP process, which may not; it now recalls through the memory service, as
37
+ `session_init` does.
38
+ - **Smaller tool fixes found by an end-to-end run of every MCP tool:**
39
+ `skill_lineage` reports an empty history instead of an error on a store where
40
+ no skill has evolved; `correct_pattern` refuses a pattern that does not exist
41
+ instead of reporting success; `review_correction` no longer tells an agent to
42
+ retry a review the memory service refused (an unknown or settled case).
43
+ - **Docs:** the `slm-loop` skill and the MCP tool reference now say what
44
+ `slm_loop_run` needs to finish: an operator-registered check
45
+ (`gate_contract`). A matching memory alone never ends a loop.
46
+
47
+ ## [4.2.2] — Recall never refuses answers it has after a model change, and "What am I working on?" answers from your work
48
+
49
+ A fix release. Upgrading never moves or deletes memory. Text stays on the model it uses today.
50
+
51
+ ### Fixes
52
+
53
+ - **Moving text to the newer memory engine could make recall refuse answers it had.**
54
+ Recall decides "this is in your memory" with a check fitted on one text model
55
+ (nomic). After "Upgrade memory engine" (the Settings card, or `slm embedder upgrade`)
56
+ moved text to EmbeddingGemma 2, that check scored correct memories far
57
+ below its bar, and recall said "That isn't in SuperLocalMemory" to questions it
58
+ had answered before. The check is now chosen by the text model in use, and
59
+ SuperLocalMemory no longer moves text to a model the check was not fitted for,
60
+ whichever way it is asked (the Settings card, the embedding picker, the config file,
61
+ the CLI or MCP); only `slm embedder switch --force` does. Measured on the release harness (a synthetic store): with the old check, EmbeddingGemma 2 refused all 203 real questions. A check fitted for it found every real answer on questions it had not seen, but also answered questions with no answer (it refused 69% of made-up questions; nomic refuses 98.5%), so it is not used: text stays on nomic, and Gemma keeps serving pictures and documents.
62
+ - **Two models, one memory.** Text is searched with the text model (nomic); if you
63
+ turn on pictures and documents, EmbeddingGemma 2 reads those, and one recall returns
64
+ both. The picture model unloads after 30 minutes unused. "Upgrade memory engine" is
65
+ no longer offered: the Settings card now appears only for a store whose text already
66
+ moved, the npm installer no longer offers it, and `slm embedder upgrade` is hidden.
67
+ - **Install, three ways, the same result.** The README now has a prompt to paste into
68
+ any agent (Claude Code, Codex, Cursor, …), and the npm and pip commands. The agent
69
+ setup steps ask the person one question, whether to turn on pictures and documents,
70
+ and `npm install -g superlocalmemory --media` turns them on from the start.
71
+ - **If your text already moved,** the Settings card, `slm doctor` (new check
72
+ "Answer check fit") and the MCP `health` tool say so and how to go back: Roll back on the card, or
73
+ `slm embedder rollback`. Your previous vectors are kept, so it takes minutes, and
74
+ the rollback message now says that instead of promising a full re-index.
75
+ - **A model switch kept its hub baselines.** Each memory carries a baseline that
76
+ stops a few "close to everything" memories from looking like answers. A switch
77
+ renamed the vector columns, a trigger followed the old column, and the clean-up
78
+ afterwards deleted every baseline (27,236 to 0 on one store). The trigger is now
79
+ re-bound on every switch, a store an earlier switch damaged is repaired by itself,
80
+ and the new model's baselines are measured before the switch finishes.
81
+ - **`slm embedder calibrate` works on a real install.** It stopped on two settings
82
+ that only its own tests had (`config.profile_id`, `RetrievalEngine._channels`). It
83
+ is now tested against a real engine, and a test checks every setting it reads
84
+ exists.
85
+ - **"What am I working on?" answers from your work.** The newest rows on a busy
86
+ store were the hooks' own bookkeeping ("[project] session ended …",
87
+ "File changed: …", "files: …") and the prompts you typed to an agent, so they
88
+ won a question about the present. Bookkeeping is now recognised in all its shapes,
89
+ flagged when it is saved, and the rows already stored are flagged once on upgrade
90
+ (nothing deleted; they stay listable). Your captured prompts stay searchable but
91
+ rank as requests: below what you and your agents saved, and never as the answer
92
+ to "what am I working on?". Ask "what did I ask for…" and they come back first.
93
+
94
+ ### Upgrading
95
+
96
+ - The store's schema version moves to 62 (a data repair, no new table). Going back
97
+ to 4.2.1 needs `slm db prepare-downgrade` first, as for earlier releases.
98
+
99
+ ## [4.2.1] — Each person sees only their own workspace, and moving to the newer memory engine finishes
100
+
101
+ A fix release. Upgrading never moves or deletes memory.
102
+
103
+ ### Security
104
+
105
+ - **Recall Lab, Memories search and memory chat stay in the signed-in person's
106
+ workspace.** These three dashboard requests checked that a signed-in person could
107
+ read their workspace, then searched the machine's active workspace instead. With
108
+ more than one workspace, someone signed in to one could read another's memories.
109
+ They now search only the workspace that was checked, and a test signs in two people
110
+ in two workspaces and fails if either sees the other's memories. Saved views, the
111
+ REST `/recall` route, MCP and the CLI were not affected.
112
+
113
+ ### Fixes
114
+
115
+ - **Moving to the newer memory engine no longer stops at a long memory.** A memory
116
+ over 8,000 characters made the EmbeddingGemma 2 worker refuse its batch, and the
117
+ whole re-index stopped. It is now embedded from its start (the model reads about
118
+ that much anyway), the same way the previous engine handled it.
119
+ - **Hermes plugin keeps working after an SLM upgrade.** It refused every `/slm`
120
+ command unless SLM was exactly the release it shipped with. It now works with that
121
+ release and every newer one of the same major version, and its message says how to
122
+ move a pinned plugin ([Hermes](docs/hermes.md#upgrade)).
123
+ - **Recall Lab:** clicking a result opens the whole memory, not the shortened text.
124
+ - **Dashboard:** a source opened from "Ask your memory" opens that memory in the
125
+ Memories tab. Settings no longer comes up blank after moving between panes.
126
+ - **Choose folder:** while remote access is on, folders cannot be connected; the page
127
+ now says so next to the button before anyone clicks, instead of after a click below
128
+ the fold.
129
+ - **Sign-in:** when every person must sign in (company mode), a signed-out visitor
130
+ gets one sign-in screen instead of panes that never load, and a signed-in person
131
+ sees who they are, their role and workspace, with Sign out. On a personal computer
132
+ nothing changes: the owner never signs in. Governance says so plainly, and the first
133
+ person you add starts as an admin. There is no default account or password.
134
+ - **README:** the product film follows the twelve superpowers; the architecture
135
+ diagram is redrawn.
136
+
8
137
  ## [4.2.0] — Recall that says "That isn't in SuperLocalMemory", memory that looks after itself, pictures and documents
9
138
 
10
139
  This release changes what recall does when memory cannot answer, adds a Memory
package/README.md CHANGED
@@ -24,10 +24,6 @@
24
24
  <img src="https://raw.githubusercontent.com/qualixar/superlocalmemory/main/docs/assets/gifs/recall-tiers.gif" alt="Recall in the dashboard: a real question gets its answer; a gibberish question gets 'That isn't in SuperLocalMemory.'; a real question memory cannot answer exactly gets the closest memories, labelled" width="820">
25
25
 
26
26
 
27
- ### Watch the four-minute product film
28
-
29
- [![Watch the SuperLocalMemory product film: Claude Code and Codex sharing one memory](https://img.youtube.com/vi/pyAu_vaIYZQ/maxresdefault.jpg)](https://www.youtube.com/watch?v=pyAu_vaIYZQ)
30
-
31
27
  </div>
32
28
 
33
29
  **Agents forget everything between sessions. The usual fix — a vector store with a save button — makes it worse:** it always returns *something*, even when nothing it holds answers the question, and your agent builds on it. This is a memory **brain**, not a bucket: it understands what was saved (who, what, when, which project), keeps it true over time, governs who may see it, and refuses to bluff. Four arXiv papers describe how it works.
@@ -36,18 +32,51 @@ In Mode A, core remember and recall make no model-provider call: no API key, no
36
32
 
37
33
  ## Install
38
34
 
39
- > **AI agents: installing a memory system for your user?** Follow [SETUP_FOR_AGENTS.md](https://github.com/qualixar/superlocalmemory/blob/main/SETUP_FOR_AGENTS.md) — numbered, non-interactive steps with the expected output of each: install, `slm init --auto`, `slm serve start`, `slm warmup`, connect the host, then call `session_init` at the start of every session and `remember` / `recall` as you work.
35
+ > **The easiest way: let your AI agent install it.** Copy the block below into Claude Code, Codex, Cursor or any agent that can run commands. It reads the setup guide, asks you one question, sets everything up and tells you what works. No terminal commands for you to learn.
40
36
 
37
+ ```
38
+ Install SuperLocalMemory on this computer for me. Follow
39
+ https://github.com/qualixar/superlocalmemory/blob/main/SETUP_FOR_AGENTS.md
40
+ step by step and show me what each step printed. Ask me only one question,
41
+ before turning on anything optional: whether I also want to find my pictures,
42
+ screenshots and PDFs by describing them. Connect SuperLocalMemory to the agent
43
+ I am using. When you finish, run slm doctor and tell me in plain words what works.
44
+ ```
45
+
46
+ **No AI agent? One line in Terminal** (macOS and Linux). It brings its own Python, sets everything up, connects the AI tools it finds and opens the dashboard; no Python or npm needed beforehand:
41
47
 
42
48
  ```bash
43
- npm install -g superlocalmemory # primary route; or: pipx install superlocalmemory (Python 3.12+, Node 18+ for npm)
49
+ curl -fsSLo get-slm.sh https://raw.githubusercontent.com/qualixar/superlocalmemory/main/scripts/get-slm.sh && sh get-slm.sh
50
+ ```
51
+
52
+ Add pictures and documents from the start with `sh get-slm.sh --media` at the end. It downloads the script first, so you can read it before it runs. Windows: use the agent prompt above, or npm or pip below.
53
+
54
+ **Prefer the terminal?** Both routes end in the same setup: your text memory on this machine, and, if you say yes, your pictures and documents too.
55
+
56
+ **npm**, the primary route (Node 18+). It installs SLM into a package-owned virtual environment:
57
+
58
+ ```bash
59
+ npm install -g superlocalmemory # add --media to also turn on pictures and documents
44
60
  slm setup # pick Mode A to keep everything on this machine
45
- slm connect cursor # or codex, windsurf, zed, claude-desktop, jetbrains, opencode ...
61
+ slm connect claude-code # or codex, cursor, windsurf, zed, claude-desktop, jetbrains, opencode ...
46
62
  ```
47
63
 
48
- **Claude Code:** `claude plugin marketplace add qualixar/superlocalmemory`, then `claude plugin install superlocalmemory@qualixar`.
64
+ **pip**, the other primary route (Python 3.12 to 3.14), in a Python virtual environment you activate:
49
65
 
50
- npm is the primary route: it installs SLM into a package-owned virtual environment (pipx does the same). The other primary route is pip in a Python virtual environment you activate: `python3 -m venv .venv`, activate it, then `python -m pip install superlocalmemory`. Repository clone: `./scripts/install.sh install` (macOS, Linux) or `.\scripts\install.ps1 -Action Install` (Windows). Runs on Windows, Linux and Apple Silicon macOS ([platforms](#platform-support)).
66
+ ```bash
67
+ python3 -m venv .venv
68
+ source .venv/bin/activate # Windows: .venv\Scripts\activate
69
+ python -m pip install superlocalmemory # or, without a venv: pipx install superlocalmemory
70
+ slm setup
71
+ slm connect claude-code
72
+ slm media enable # optional: pictures and documents (about 1.5 GB; needs 16 GB of memory)
73
+ ```
74
+
75
+ **Claude Code plugin:** `claude plugin marketplace add qualixar/superlocalmemory`, then `claude plugin install superlocalmemory@qualixar`. **Codex:** `slm connect codex`, then `slm codex install`.
76
+
77
+ **Two models, one memory.** Text is searched with a small local text model (nomic). If you turn on pictures and documents, a second local model (Google's EmbeddingGemma 2) reads them, and one recall returns both. The picture model unloads after 30 minutes without use, so it holds no memory while you only work with text. Details: [pictures and documents](https://github.com/qualixar/superlocalmemory/blob/main/docs/pictures-and-documents.md), [getting started](https://github.com/qualixar/superlocalmemory/blob/main/docs/getting-started.md), [agent setup steps](https://github.com/qualixar/superlocalmemory/blob/main/SETUP_FOR_AGENTS.md).
78
+
79
+ Repository clone: `./scripts/install.sh install` (macOS, Linux) or `.\scripts\install.ps1 -Action Install` (Windows). Runs on Windows, Linux and Apple Silicon macOS ([platforms](#platform-support)).
51
80
 
52
81
  ## 30-second example
53
82
 
@@ -98,6 +127,16 @@ Real output from a fresh Mode A install, trimmed. Scores rank memories; they are
98
127
 
99
128
  SuperLocalMemory is part of Qualixar's AI Reliability Engineering work: agent memory that is observable, bounded and honest about what it doesn't know.
100
129
 
130
+ ## Watch it work
131
+
132
+ <div align="center">
133
+
134
+ [![Watch the SuperLocalMemory product film: Claude Code and Codex sharing one memory](https://img.youtube.com/vi/pyAu_vaIYZQ/maxresdefault.jpg)](https://www.youtube.com/watch?v=pyAu_vaIYZQ)
135
+
136
+ *The four-minute product film: Claude Code and Codex sharing one memory.*
137
+
138
+ </div>
139
+
101
140
  ## Works with your agents
102
141
 
103
142
  **Every harness, every bot, one memory.** Any harness that speaks MCP (`slm mcp`, or `http://127.0.0.1:8765/mcp/`) or can run a command (`slm remember`, `slm recall`) can use SuperLocalMemory. The packaged plugins are ready-made examples, not a limit.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Built by `scripts/build-antigravity-plugin.mjs` from `plugin-src/`. Version stamped from `plugin-src/manifest.json`.
4
4
 
5
- Version: **4.2.0**
5
+ Version: **4.2.3**
6
6
 
7
7
  Do not edit by hand — regenerate instead.
8
8
 
@@ -81,4 +81,4 @@ slm-scope · slm-governance · slm-profile · slm-remember · slm-recall · slm-
81
81
  # What NOT to do
82
82
  Never session_init twice; never forget without dry-run preview; never run `slm gdpr erase --yes` unasked; never store secrets; never bypass role checks; never claim an erasure succeeded without verifying via recall.
83
83
 
84
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
84
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -79,4 +79,4 @@ assessment. The gate is the authority.
79
79
 
80
80
  ---
81
81
 
82
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
82
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -51,4 +51,4 @@ slm-recall · slm-remember · slm-session · slm-scope · slm-profile · slm-gov
51
51
  # What NOT to do
52
52
  Never session_init twice; never forget dry_run=False without reporting preview; never switch the active profile unasked; never dump a whole file into remember; never invent a memory; never claim "saved" without success:true / clean CLI exit; never bypass scope or governance restrictions.
53
53
 
54
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
54
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -41,4 +41,4 @@ slm-compress · slm-cache · slm-status · slm-profile
41
41
  # What NOT to do
42
42
  Never compress code-for-edit/JSON-to-parse/<500 chars; never store secrets/ccr_ids; never let optimize failure block/alter the task; never claim a specific savings %; never hand a ccr_id to another agent.
43
43
 
44
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
44
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superlocalmemory",
3
- "version": "4.2.0",
3
+ "version": "4.2.3",
4
4
  "description": "Local-first agent memory with auditable hybrid retrieval. Remember decisions and recall them by asking, entirely on your machine.",
5
5
  "author": {
6
6
  "name": "Qualixar",
@@ -178,4 +178,4 @@ store every local bot on that computer can reach.
178
178
 
179
179
  ---
180
180
 
181
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
181
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -144,4 +144,4 @@ These subcommands control daemon-level cache settings and bulk removal. They do
144
144
 
145
145
  ---
146
146
 
147
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
147
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -147,4 +147,4 @@ Content over 1 MB (1 000 000 bytes UTF-8) is processed but `reversible` is force
147
147
 
148
148
  ---
149
149
 
150
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
150
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -194,4 +194,4 @@ quality on a shared box.
194
194
 
195
195
  ---
196
196
 
197
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
197
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -274,4 +274,4 @@ Before running any destructive or state-changing operation (`forget`,
274
274
 
275
275
  ---
276
276
 
277
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
277
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -324,4 +324,4 @@ All are host-only: a remote caller cannot use them.
324
324
 
325
325
  ---
326
326
 
327
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
327
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: slm-loop
3
- description: Gate-verified bounded loops with SuperLocalMemory as the durable ledger. Use when a task has a checkable acceptance condition and you must iterate until an INDEPENDENT gate passes — never stopping because the agent believes it is done. `slm_loop_run` (MCP) waits, under hard bounds, for a recall gate to pass; `slm loop demo` shows the control flow keyless; `slm loop history` and `slm loop show <run_id>` (or `slm_loop_history` / `slm_loop_show`) inspect past runs, whose every lap is stored as queryable SLM memory (tag `loop:<name>`). Terminal statuses are DONE / HALT / PAUSE / KILLED / ERROR — report them exactly, never converting HALT/PAUSE/ERROR into success.
3
+ description: Gate-verified bounded loops with SuperLocalMemory as the durable ledger. Use when a task has a checkable acceptance condition and you must iterate until an INDEPENDENT gate passes — never stopping because the agent believes it is done. `slm_loop_run` (MCP) waits, under hard bounds, for an independently executed check registered by the operator to pass; `slm loop demo` shows the control flow keyless; `slm loop history` and `slm loop show <run_id>` (or `slm_loop_history` / `slm_loop_show`) inspect past runs, whose every lap is stored as queryable SLM memory (tag `loop:<name>`). Terminal statuses are DONE / HALT / PAUSE / KILLED / ERROR — report them exactly, never converting HALT/PAUSE/ERROR into success.
4
4
  when_to_use: "run a bounded loop, gate-verified task, iterate until tests pass, verify against an independent gate, don't trust the agent's own done claim, slm loop, convergence loop, loop until green, loop ledger, wait for another agent's result"
5
5
  allowed-tools: slm_loop_run, slm_loop_history, slm_loop_show, recall, report_outcome, get_soft_prompts, skill_health, skill_lineage, evolve_skill, observe_bounded_loop_evidence, Bash
6
6
  ---
@@ -26,7 +26,7 @@ subprocess or sandbox machinery. What each surface gives you:
26
26
 
27
27
  | Surface | What it does |
28
28
  |---|---|
29
- | `slm_loop_run` (MCP) | A *watcher*: each lap is a recall of `gate_query`; the loop ends when a confident match appears, or a bound trips. Use it to wait for a verification or coordination memory another agent will write (for example "build passed"). |
29
+ | `slm_loop_run` (MCP) | A *watcher* for a registered check. DONE needs `gate_contract={"job_id": ...}`: a job the operator registered with `superlocalmemory.loops.receipt_jobs.register_job` and executed with `run_registered_check`. Each lap's recall of `gate_query` only locates context; a matching memory alone never passes. Without a registered job the run ends HALT ("operator-registered job_id required"), which is the correct, honest outcome. |
30
30
  | `slm loop demo` (CLI) | A keyless convergence demo: a stub proposer, a deterministic gate that passes on lap 3, every lap recorded. Proves the engine and ledger work end to end. |
31
31
  | `slm loop history`, `slm loop show` / `slm_loop_history`, `slm_loop_show` | Read the ledger of past runs. |
32
32
  | `superlocalmemory.loops.run_bounded_loop` (Python) | The engine itself, for code that supplies its own runner and gate callables. |
@@ -62,6 +62,7 @@ slm_loop_run(
62
62
  max_tokens: int = 0, # optional token budget; 0 disables
63
63
  no_progress_window: int = 0, # halt after N no-change laps; leave 0 for a watcher
64
64
  require_support: bool = False,# pass only if the answer check ran and judged it sufficient
65
+ gate_contract: dict | None = None, # {"job_id": <operator registration>}; required for DONE
65
66
  )
66
67
  ```
67
68
 
@@ -170,4 +171,4 @@ Guides: `docs/skill-evolution.md`, `docs/bounded-loops-bridge.md`.
170
171
 
171
172
  ---
172
173
 
173
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
174
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -245,7 +245,7 @@ Rules for reading them:
245
245
  personal data. Folders connected with `slm sources` are never shown to web
246
246
  apps. A web app cannot change, delete, pin or replace a memory it is not
247
247
  allowed to see: it is answered as if that memory did not exist.
248
- - Pictures saved before 4.2.0 are re-checked in the background and become
248
+ - Pictures saved before picture search arrived are re-checked in the background and become
249
249
  visible to web apps once their text is clean. They stay fully searchable on
250
250
  this computer.
251
251
 
@@ -315,8 +315,14 @@ Settings) re-reads existing memories with the same on-device model that reads
315
315
  pictures, so text and pictures share one search space. It runs in the
316
316
  background, recall keeps working, the previous engine's data stays until the
317
317
  owner frees it (`slm embedder forget-previous`), and `slm embedder rollback`
318
- goes back. It is opt-in and never starts on its own. If it cannot run, the
319
- command prints the reason. Offer it; do not run it unasked.
318
+ goes back. If it cannot run, the command prints the reason.
319
+
320
+ It is not available for text yet: recall's answer check is not calibrated for
321
+ EmbeddingGemma 2 (the best fit so far answered questions that have no answer),
322
+ so the command refuses with that reason. Do not offer it, and never pass `--force` for the user.
323
+ If `slm doctor` reports "Answer check fit" as a warning, the user's text already
324
+ moved in an earlier version: tell them `slm embedder rollback` goes back in
325
+ minutes (previous vectors are kept) and let them decide.
320
326
 
321
327
  ---
322
328
 
@@ -331,4 +337,4 @@ command prints the reason. Offer it; do not run it unasked.
331
337
 
332
338
  ---
333
339
 
334
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
340
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -386,4 +386,4 @@ mesh availability.
386
386
 
387
387
  ---
388
388
 
389
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
389
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -161,4 +161,4 @@ anything but `core` or `mesh`.
161
161
 
162
162
  ---
163
163
 
164
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
164
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -515,4 +515,4 @@ See `slm-profile`.
515
515
 
516
516
  ---
517
517
 
518
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
518
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -372,4 +372,4 @@ sessions on this machine, so use it only when the user asks to move. See
372
372
 
373
373
  ---
374
374
 
375
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
375
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -180,4 +180,4 @@ to review the impact. See `slm-remember` for the full deletion discipline.
180
180
 
181
181
  ---
182
182
 
183
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
183
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -288,4 +288,4 @@ answered. To also surface shared or global facts, call `recall` with
288
288
 
289
289
  ---
290
290
 
291
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
291
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -228,4 +228,4 @@ the memory-engine upgrade is pending.
228
228
 
229
229
  ---
230
230
 
231
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
231
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -15,5 +15,5 @@
15
15
  "mcpServers": "./.mcp.json",
16
16
  "name": "superlocalmemory-codex",
17
17
  "repository": "https://github.com/qualixar/superlocalmemory",
18
- "version": "4.2.0"
18
+ "version": "4.2.3"
19
19
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superlocalmemory-codex",
3
- "version": "4.2.0",
3
+ "version": "4.2.3",
4
4
  "description": "Local-first agent memory with auditable hybrid retrieval. Remember decisions and recall them by asking, entirely on your machine.",
5
5
  "author": {
6
6
  "name": "Qualixar",
@@ -187,4 +187,4 @@ Using this memory from a web assistant or another computer: see the slm-web-acce
187
187
  - **slm-governance-advisor** — scope/role compliance, retention and lifecycle, GDPR
188
188
  - **slm-loop-runner** — bounded, gate-verified loops (the `/slm-loop` command delegates to it)
189
189
 
190
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
190
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -2,7 +2,7 @@
2
2
 
3
3
  Local-first agent memory + reversible context compression for OpenAI Codex CLI.
4
4
 
5
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
5
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
6
6
 
7
7
  ---
8
8
 
@@ -204,4 +204,4 @@ root (not inside a subdirectory), then restart Codex.
204
204
 
205
205
  ---
206
206
 
207
- SuperLocalMemory v4.2.0 · Qualixar · https://github.com/qualixar/superlocalmemory
207
+ SuperLocalMemory v4.2.3 · Qualixar · https://github.com/qualixar/superlocalmemory
@@ -2,7 +2,7 @@
2
2
 
3
3
  Built by `scripts/build-codex-plugin.mjs` from the single source in `plugin-src/`. Version stamped from `plugin-src/manifest.json`.
4
4
 
5
- Version: **4.2.0**
5
+ Version: **4.2.3**
6
6
 
7
7
  ## Derived — do not edit by hand
8
8
 
@@ -81,4 +81,4 @@ slm-scope · slm-governance · slm-profile · slm-remember · slm-recall · slm-
81
81
  # What NOT to do
82
82
  Never session_init twice; never forget without dry-run preview; never run `slm gdpr erase --yes` unasked; never store secrets; never bypass role checks; never claim an erasure succeeded without verifying via recall.
83
83
 
84
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
84
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -79,4 +79,4 @@ assessment. The gate is the authority.
79
79
 
80
80
  ---
81
81
 
82
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
82
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -51,4 +51,4 @@ slm-recall · slm-remember · slm-session · slm-scope · slm-profile · slm-gov
51
51
  # What NOT to do
52
52
  Never session_init twice; never forget dry_run=False without reporting preview; never switch the active profile unasked; never dump a whole file into remember; never invent a memory; never claim "saved" without success:true / clean CLI exit; never bypass scope or governance restrictions.
53
53
 
54
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
54
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -41,4 +41,4 @@ slm-compress · slm-cache · slm-status · slm-profile
41
41
  # What NOT to do
42
42
  Never compress code-for-edit/JSON-to-parse/<500 chars; never store secrets/ccr_ids; never let optimize failure block/alter the task; never claim a specific savings %; never hand a ccr_id to another agent.
43
43
 
44
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
44
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -178,4 +178,4 @@ store every local bot on that computer can reach.
178
178
 
179
179
  ---
180
180
 
181
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
181
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -144,4 +144,4 @@ These subcommands control daemon-level cache settings and bulk removal. They do
144
144
 
145
145
  ---
146
146
 
147
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
147
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -147,4 +147,4 @@ Content over 1 MB (1 000 000 bytes UTF-8) is processed but `reversible` is force
147
147
 
148
148
  ---
149
149
 
150
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
150
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -194,4 +194,4 @@ quality on a shared box.
194
194
 
195
195
  ---
196
196
 
197
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
197
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -274,4 +274,4 @@ Before running any destructive or state-changing operation (`forget`,
274
274
 
275
275
  ---
276
276
 
277
- *SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later*
277
+ *SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later*
@@ -324,4 +324,4 @@ All are host-only: a remote caller cannot use them.
324
324
 
325
325
  ---
326
326
 
327
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
327
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: slm-loop
3
- description: Gate-verified bounded loops with SuperLocalMemory as the durable ledger. Use when a task has a checkable acceptance condition and you must iterate until an INDEPENDENT gate passes — never stopping because the agent believes it is done. `slm_loop_run` (MCP) waits, under hard bounds, for a recall gate to pass; `slm loop demo` shows the control flow keyless; `slm loop history` and `slm loop show <run_id>` (or `slm_loop_history` / `slm_loop_show`) inspect past runs, whose every lap is stored as queryable SLM memory (tag `loop:<name>`). Terminal statuses are DONE / HALT / PAUSE / KILLED / ERROR — report them exactly, never converting HALT/PAUSE/ERROR into success.
3
+ description: Gate-verified bounded loops with SuperLocalMemory as the durable ledger. Use when a task has a checkable acceptance condition and you must iterate until an INDEPENDENT gate passes — never stopping because the agent believes it is done. `slm_loop_run` (MCP) waits, under hard bounds, for an independently executed check registered by the operator to pass; `slm loop demo` shows the control flow keyless; `slm loop history` and `slm loop show <run_id>` (or `slm_loop_history` / `slm_loop_show`) inspect past runs, whose every lap is stored as queryable SLM memory (tag `loop:<name>`). Terminal statuses are DONE / HALT / PAUSE / KILLED / ERROR — report them exactly, never converting HALT/PAUSE/ERROR into success.
4
4
  when_to_use: "run a bounded loop, gate-verified task, iterate until tests pass, verify against an independent gate, don't trust the agent's own done claim, slm loop, convergence loop, loop until green, loop ledger, wait for another agent's result"
5
5
  allowed-tools: slm_loop_run, slm_loop_history, slm_loop_show, recall, report_outcome, get_soft_prompts, skill_health, skill_lineage, evolve_skill, observe_bounded_loop_evidence, Bash
6
6
  ---
@@ -26,7 +26,7 @@ subprocess or sandbox machinery. What each surface gives you:
26
26
 
27
27
  | Surface | What it does |
28
28
  |---|---|
29
- | `slm_loop_run` (MCP) | A *watcher*: each lap is a recall of `gate_query`; the loop ends when a confident match appears, or a bound trips. Use it to wait for a verification or coordination memory another agent will write (for example "build passed"). |
29
+ | `slm_loop_run` (MCP) | A *watcher* for a registered check. DONE needs `gate_contract={"job_id": ...}`: a job the operator registered with `superlocalmemory.loops.receipt_jobs.register_job` and executed with `run_registered_check`. Each lap's recall of `gate_query` only locates context; a matching memory alone never passes. Without a registered job the run ends HALT ("operator-registered job_id required"), which is the correct, honest outcome. |
30
30
  | `slm loop demo` (CLI) | A keyless convergence demo: a stub proposer, a deterministic gate that passes on lap 3, every lap recorded. Proves the engine and ledger work end to end. |
31
31
  | `slm loop history`, `slm loop show` / `slm_loop_history`, `slm_loop_show` | Read the ledger of past runs. |
32
32
  | `superlocalmemory.loops.run_bounded_loop` (Python) | The engine itself, for code that supplies its own runner and gate callables. |
@@ -62,6 +62,7 @@ slm_loop_run(
62
62
  max_tokens: int = 0, # optional token budget; 0 disables
63
63
  no_progress_window: int = 0, # halt after N no-change laps; leave 0 for a watcher
64
64
  require_support: bool = False,# pass only if the answer check ran and judged it sufficient
65
+ gate_contract: dict | None = None, # {"job_id": <operator registration>}; required for DONE
65
66
  )
66
67
  ```
67
68
 
@@ -170,4 +171,4 @@ Guides: `docs/skill-evolution.md`, `docs/bounded-loops-bridge.md`.
170
171
 
171
172
  ---
172
173
 
173
- SuperLocalMemory v4.2.0 · Qualixar · AGPL-3.0-or-later
174
+ SuperLocalMemory v4.2.3 · Qualixar · AGPL-3.0-or-later