superlocalmemory 4.1.21 → 4.1.22

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 (57) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/CHANGELOG.md +111 -0
  3. package/README.md +53 -8
  4. package/package.json +3 -1
  5. package/plugin/.claude-plugin/plugin.json +2 -2
  6. package/plugin/.cursor-plugin/plugin.json +24 -0
  7. package/plugin/CLAUDE.md +3 -3
  8. package/plugin/agents/slm-governance-advisor.md +1 -1
  9. package/plugin/agents/slm-loop-runner.md +1 -1
  10. package/plugin/agents/slm-memory-advisor.md +1 -1
  11. package/plugin/agents/slm-optimize-advisor.md +1 -1
  12. package/plugin/assets/logo.svg +36 -0
  13. package/plugin/cursor-skills/slm-bot-memory/SKILL.md +139 -0
  14. package/plugin/cursor-skills/slm-getting-started-bot/SKILL.md +138 -0
  15. package/plugin/cursor-skills/slm-recall/SKILL.md +333 -0
  16. package/plugin/cursor-skills/slm-remember/SKILL.md +273 -0
  17. package/plugin/cursor-skills/slm-scope/SKILL.md +176 -0
  18. package/plugin/cursor-skills/slm-session/SKILL.md +271 -0
  19. package/plugin/hooks/hooks.json +9 -9
  20. package/plugin/mcp.cursor.json +23 -0
  21. package/plugin/requirements-cpu-torch.txt +13 -0
  22. package/plugin/requirements.txt +1 -1
  23. package/plugin/scripts/ensure-venv.sh +45 -3
  24. package/plugin/scripts/slm-launch +93 -9
  25. package/plugin/scripts/torch-cpu-resolve.sh +86 -0
  26. package/plugin/skills/slm-bot-memory/SKILL.md +139 -0
  27. package/plugin/skills/slm-cache/SKILL.md +1 -1
  28. package/plugin/skills/slm-compress/SKILL.md +1 -1
  29. package/plugin/skills/slm-getting-started-bot/SKILL.md +138 -0
  30. package/plugin/skills/slm-governance/SKILL.md +1 -1
  31. package/plugin/skills/slm-graph/SKILL.md +1 -1
  32. package/plugin/skills/slm-loop/SKILL.md +1 -1
  33. package/plugin/skills/slm-mesh/SKILL.md +1 -1
  34. package/plugin/skills/slm-profile/SKILL.md +3 -2
  35. package/plugin/skills/slm-recall/SKILL.md +1 -1
  36. package/plugin/skills/slm-remember/SKILL.md +1 -1
  37. package/plugin/skills/slm-scope/SKILL.md +1 -1
  38. package/plugin/skills/slm-session/SKILL.md +1 -1
  39. package/plugin/skills/slm-status/SKILL.md +1 -1
  40. package/plugin-src/agents/slm-memory-advisor.md +1 -1
  41. package/plugin-src/agents/slm-optimize-advisor.md +1 -1
  42. package/plugin-src/rules/AGENTS.md +1 -1
  43. package/plugin-src/skills/slm-bot-memory/SKILL.md +139 -0
  44. package/plugin-src/skills/slm-cache/SKILL.md +1 -1
  45. package/plugin-src/skills/slm-compress/SKILL.md +1 -1
  46. package/plugin-src/skills/slm-getting-started-bot/SKILL.md +138 -0
  47. package/plugin-src/skills/slm-governance/SKILL.md +1 -1
  48. package/plugin-src/skills/slm-graph/SKILL.md +1 -1
  49. package/plugin-src/skills/slm-loop/SKILL.md +1 -1
  50. package/plugin-src/skills/slm-mesh/SKILL.md +1 -1
  51. package/plugin-src/skills/slm-profile/SKILL.md +3 -2
  52. package/plugin-src/skills/slm-recall/SKILL.md +1 -1
  53. package/plugin-src/skills/slm-remember/SKILL.md +1 -1
  54. package/plugin-src/skills/slm-scope/SKILL.md +1 -1
  55. package/plugin-src/skills/slm-session/SKILL.md +1 -1
  56. package/plugin-src/skills/slm-status/SKILL.md +1 -1
  57. package/scripts/postinstall.js +107 -0
@@ -9,7 +9,7 @@
9
9
  "author": {
10
10
  "name": "Qualixar"
11
11
  },
12
- "description": "Local-first agent memory + reversible context compression and KV cache, as an MCP server. 38-tool code profile with graph intelligence.",
12
+ "description": "Local-first agent memory + reversible context compression and KV cache, as an MCP server. Serves the 56-tool full profile by default; set SLM_MCP_PROFILE=code for the 38-tool code profile.",
13
13
  "homepage": "https://github.com/qualixar/superlocalmemory",
14
14
  "keywords": [
15
15
  "memory",
@@ -21,7 +21,7 @@
21
21
  "license": "AGPL-3.0-or-later",
22
22
  "name": "superlocalmemory",
23
23
  "source": "./plugin",
24
- "version": "4.1.21"
24
+ "version": "4.1.22"
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.1.21"
42
+ "version": "4.1.22"
43
43
  }
44
44
  ]
45
45
  }
package/CHANGELOG.md CHANGED
@@ -5,6 +5,117 @@ 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.1.22] — Faster recall from the first second, memories that stay findable, deletes you can trust
9
+
10
+ ### Added
11
+
12
+ - **Filter by exact tags.** `recall`, `search`, `list` and `slm recall/list`
13
+ take a tag filter, over MCP, HTTP and the daemon proxy. A tag filter searches
14
+ inside the tagged memories and says why a result is empty.
15
+ - **Switch the embedding model without losing recall.** `slm embedder`
16
+ re-indexes in the background, keeps the previous vectors, gives way to
17
+ recall while it works, resumes after a crash and can roll back.
18
+ - **Model recommendations for this computer.** A model catalogue with current
19
+ defaults and each local model's result in SLM's extraction test; the setup
20
+ wizard offers your installed Ollama models, best first, and `slm models` and
21
+ the dashboard suggest installed and recommended models.
22
+ - **Every recall says whether its answer was checked**: supported,
23
+ unsupported or unjudged, and why.
24
+ - **`slm db integrity` and `slm db repair`** show store health in five parts
25
+ and fix leftover rows, erased words, unfinished deletes and memories that
26
+ lost their searchable fact, with receipts and undo. A repair never brings
27
+ back anything that was erased, deleted or withheld.
28
+ - **`slm corrections overtaken`** lists corrections SLM had only proposed
29
+ itself that a delete, replace or edit overtook; `restore-overtaken` puts one
30
+ back.
31
+ - Older memories in an upgraded store are classified by kind once, on this
32
+ device, in the background.
33
+ - SuperLocalMemory installs as a Cursor-format plugin for Grok Bot, with a
34
+ low-RAM profile for shared bot hosts and two skills for bots sharing one
35
+ computer.
36
+
37
+ ### Changed
38
+
39
+ - **Recall is about 2.6 times faster, with the same answers.** On a copy of a
40
+ real store, typical recall went from 849 ms to 321 ms (slowest 5%: 1.2 s to
41
+ 0.49 s), and on 124 held-out questions from 923 ms to 340 ms (slowest 5%:
42
+ 2.0 s to 0.77 s). Every speed change returns the same top ten memories as
43
+ before on all 184 test questions.
44
+ - **Fast from the first second after a start, and while you save.** The store
45
+ is read into memory once at start, graph rankings and stored vectors are
46
+ prepared in separate background processes, background work yields to a
47
+ running recall at fine grain, requests no longer open the database to check
48
+ the login setting, and several slow store queries now use indexes. On a
49
+ 22,000-memory store with the answer check on, a recall every second and a
50
+ save every half second: recalls slower than 3 s went from 13 of 318 to 7 of
51
+ 297, with none in the first minute after a start (3 before), and saves slower
52
+ than 1.5 s from 7 of 56 to 1 of 87.
53
+ - **Background enrichment keeps up.** Saved memories finish enrichment while
54
+ you keep recalling, instead of waiting for a quiet moment that never came:
55
+ about six times as many per minute under steady recall.
56
+ - **A stated rule answers a yes/no permission question.** "May the agent
57
+ publish without approval?" is answered by a memory that says "Never publish
58
+ until the owner approves", with the same answer-check threshold as before;
59
+ the answer says it came from a rule. A rule about one named thing does not
60
+ answer a general question.
61
+ - A memory that says it corrects an earlier one keeps that suggestion when the
62
+ model's check is unsure.
63
+ - Local models copy the extraction prompt's example into your memories no
64
+ more, and invent fewer dates and numbers (llama3.2: sources with a fact the
65
+ source did not support went from 36 to 22 of 102; gemma3:4b from 1 to 0;
66
+ qwen2.5:7b 6 before, 7 now).
67
+ - A fresh install (and CI) starts in Mode A.
68
+ - `slm --json` and MCP tool responses are no longer pretty-printed.
69
+
70
+ ### Fixed
71
+
72
+ - **A note that looked like an older one no longer loses its searchable fact.**
73
+ Enrichment deleted a new memory's only fact when it resembled another
74
+ memory's, so notes that differed only in a number or a declared kind could
75
+ not be found a moment after saving. `slm db repair` gives existing ones back.
76
+ - **A question that mentions a time like "recently" still finds an older
77
+ memory it matches**, instead of returning nothing.
78
+ - **A memory you save stays findable while SLM's own guess that it updates an
79
+ older one waits for review.** Approving the guess retires the older memory;
80
+ rejecting it keeps both. In one real store this made 406 saved memories
81
+ findable again; how often the right memory comes first is unchanged.
82
+ - **Saves are not refused when the computer briefly stalls**, and a save
83
+ acknowledged just before the service was killed is enriched as soon as it
84
+ restarts.
85
+ - **Deleting and erasing.** Erasing a memory removes its words everywhere
86
+ (keyword index, journal, event previews, entity summaries, logs, soft-forget
87
+ copies, vectors kept for a model switch). Erasing a person also erases the
88
+ memories they corrected, and erasing a whole profile no longer stops partway.
89
+ A delete refused at the last moment no longer leaves a memory unfindable.
90
+ Deleting a profile moves its memories to default, still findable, linked and
91
+ correctable.
92
+ - A save sees the people and things it just added, so it does not create them
93
+ twice; a cancelled save leaves no trace in recall's lookups.
94
+ - A background computation that times out, or whose service was stopped, no
95
+ longer keeps running.
96
+ - Two recalls at the same moment are both reranked.
97
+ - Measurements like 2004.6 ms are kept as measurements, never turned into
98
+ dates.
99
+ - Bounded Loops runs with a node that never ran (an approval or a join) are no
100
+ longer rejected, and a gate verdict must be a real true or false.
101
+ - The first memory call after a fresh start waits for SLM to finish starting;
102
+ a tool call no longer waits 60 s when two starts race; stopping a daemon
103
+ stuck in start-up no longer hangs.
104
+ - Windows: SLM notices a stopped daemon at once, and Codex and Claude Code
105
+ hooks run SLM's own command.
106
+ - Linux hosts with no GPU install CPU-only torch.
107
+ - The remote listener closes a connection that floods data before its first
108
+ request; which cached answers get re-checked can no longer be predicted from
109
+ outside this install.
110
+ - Plugin listings state the tool counts they really serve; the Hermes plugin
111
+ reaches the new `slm models`, `slm corrections` and `slm embedder` commands.
112
+
113
+ ### Known issues
114
+
115
+ - On very large stores under heavy saving, a few recalls can still take longer
116
+ than 3 s while the store is busy committing a large write.
117
+
118
+
8
119
  ## [4.1.21] — Recall that knows your project, and memories that stay findable
9
120
 
10
121
  ### Added
package/README.md CHANGED
@@ -70,9 +70,9 @@ Real output from a fresh Mode A install, trimmed. Scores rank; they are not prob
70
70
 
71
71
  Five minutes: install, setup, recall, cache and compression.
72
72
 
73
- ### The dashboard, on real 4.1.21
73
+ ### The dashboard
74
74
 
75
- Captured from a 4.1.21 install in Mode A, with Laya running on the Mac and a store of fictional project memories. Nothing is mocked: each verdict, score and timing is what SLM returned.
75
+ Captured from a real install in Mode A, with Laya running on the Mac and a store of fictional project memories. Nothing is mocked: each verdict, score and timing is what SLM returned.
76
76
 
77
77
  | Memories that answer the question | Memories that do not: "I don't have that" |
78
78
  |---|---|
@@ -110,15 +110,58 @@ SLM is part of Qualixar's AI Reliability Engineering work: agent memory that is
110
110
 
111
111
  | Surface | What you get | Docs |
112
112
  |---|---|---|
113
- | Editor plugins | Claude Code, Codex, VS Code / Copilot, Antigravity, Hermes. Each ships 12 skills, 4 sub-agents and session hooks | [IDE setup](docs/ide-setup.md), [Hermes](docs/hermes.md) |
113
+ | Editor plugins | Claude Code, Codex, VS Code / Copilot, Antigravity, Hermes. Each ships 14 skills, 4 sub-agents and session hooks | [IDE setup](docs/ide-setup.md), [Hermes](docs/hermes.md) |
114
114
  | `slm connect <ide>` | Writes the MCP config for 12 IDEs, including Cursor, Windsurf, Zed, JetBrains, Gemini CLI and Claude Desktop | [IDE setup](docs/ide-setup.md) |
115
115
  | MCP | stdio (`slm mcp`) or HTTP at `http://127.0.0.1:8765/mcp/`; profiles from 8 to 103 tools | [MCP tools](docs/mcp-tools.md) |
116
116
  | Framework adapters | LangGraph, LangChain, LlamaIndex, CrewAI, AutoGen, Semantic Kernel, Microsoft Agent Framework, Google ADK, OpenAI Agents | [Framework adapters](docs/framework-adapters.md) |
117
117
  | Python SDK and HTTP API | `MemoryEngine` in your code; the local REST API | [API reference](docs/api-reference.md) |
118
118
  | Auto-capture hooks | `slm hooks install` for Claude Code, `--agent codex` for Codex | [Auto-memory](docs/auto-memory.md) |
119
+ | Cursor-format plugin (Grok Bot, Cursor) | A marketplace-distributed plugin — different from `slm connect cursor` above — that runs on a shared, memory-tight computer with no hooks or dashboard | See below |
119
120
 
120
121
  Claude Code memory in two commands: `claude plugin marketplace add qualixar/superlocalmemory`, then `claude plugin install superlocalmemory@qualixar`.
121
122
 
123
+ ### Grok Bot (and other Cursor-format plugin hosts)
124
+
125
+ Grok Bot runs plugins in Cursor's format: a `.cursor-plugin/plugin.json` manifest, not the
126
+ `.claude-plugin/` one Claude Code reads. SuperLocalMemory ships both from one source, so the
127
+ plugin works on Grok Bot's shared, memory-constrained computer without any manual MCP setup.
128
+
129
+ **Install:** add the `qualixar` marketplace (`.cursor-plugin/marketplace.json` at this repo's
130
+ root) in Grok Bot's Plugins screen, then add `superlocalmemory`. No API key, no sign-in step —
131
+ the server runs locally on the Grok Bot computer, so nothing goes to a memory SaaS.
132
+ *(The MCP server starts as `uvx --from superlocalmemory==<version> slm mcp`: a pinned,
133
+ on-PATH command, with `UV_TORCH_BACKEND=cpu` so a GPU-less Linux box never pulls PyTorch's CUDA
134
+ wheel stack. The first start resolves the package once; the first recall downloads the local
135
+ embedding model once.)*
136
+
137
+ **Try it:** tell any bot *"Remember that our Q4 theme is agent reliability."* Then open a
138
+ different bot and ask *"What's our Q4 theme?"*
139
+
140
+ **What's shared and what isn't:** every write is attributed to `SLM_AGENT_ID=cursor_plugin` —
141
+ that is attribution, not an access boundary. If your bots share one `SLM_DATA_DIR` (the default
142
+ on one Grok Bot computer), they share one memory store: anything stored without an explicit
143
+ `scope` is visible to any bot that can reach that store, the same way two terminal sessions on
144
+ one laptop would see each other's files. Mark a fact `scope=global` only when every bot on that
145
+ computer should see it; a bot that genuinely needs private memory needs its own `SLM_DATA_DIR`.
146
+ See the `slm-bot-memory` skill (ships with this plugin) for the full model, including what
147
+ should never be stored on a computer shared with other bots (secrets, keys, other people's
148
+ personal data).
149
+
150
+ **Tools:** this plugin sets `SLM_MCP_PROFILE=core` — 18 tools (`remember`, `recall`, `search`,
151
+ session lifecycle, compression/cache, corrections) — deliberately smaller than the 56-tool
152
+ default profile every other host gets, so a shared computer is not listing tool descriptions
153
+ for tiers it will not use.
154
+
155
+ **Resources — the lite bot-host profile:** this plugin also sets `SLM_RERANKER_ENABLED=false`,
156
+ `SLM_RERANKER_IDLE_TIMEOUT=120` and `SLM_MAX_EMBEDDING_WORKERS=1` by default, because the box is
157
+ "shared by every bot on it" with as little as 1.8-3.5 GiB free. Measured on macOS, warm, after
158
+ one remember and one recall: about 390 MB resident with the reranker on (daemon + reranker
159
+ worker + embedding worker) vs. about 190 MB with it off — recall still runs every other channel
160
+ (BM25, semantic, entity graph, temporal, spreading activation, Hopfield) and fuses them, just
161
+ without the cross-encoder re-ordering pass. Set `SLM_RERANKER_ENABLED=true` in the plugin's env
162
+ block to trade that RAM back for ranking precision, or run `slm serve stop` when a bot is done
163
+ with it.
164
+
122
165
  ## What developers use it for
123
166
 
124
167
  - **Persistent memory for Claude Code, Codex and Cursor.** Decisions, conventions, fixes and project context carry across sessions and across tools; confirmed rules and decisions load at session start.
@@ -133,7 +176,7 @@ Claude Code memory in two commands: `claude plugin marketplace add qualixar/supe
133
176
 
134
177
  ## Architecture
135
178
 
136
- ![SuperLocalMemory 4.1.21 architecture: modes, eight-layer pipeline, governance, Scale Engine, SLM-Mesh, bounded loops](docs/assets/slm-4.1.21-architecture.svg)
179
+ ![SuperLocalMemory architecture: modes, eight-layer pipeline, governance, Scale Engine, SLM-Mesh, bounded loops](docs/assets/slm-4.1.21-architecture.svg)
137
180
 
138
181
  *SQLite + sqlite-vec are canonical; CozoDB and LanceDB are parity-gated projections; SLM-Mesh coordinates trusted peers rather than replicating a distributed database; connectors are opt-in.* [Architecture docs](docs/ARCHITECTURE.md).
139
182
 
@@ -148,12 +191,13 @@ Claude Code memory in two commands: `claude plugin marketplace add qualixar/supe
148
191
  | Standing rules | Confirmed rules (up to 10) and decisions (up to 5) load into every new agent session | [Memory kinds](docs/memory-kinds.md#standing-rules-at-session-start) |
149
192
  | Replace and correct | `--replaces <id>` retires an old fact, kept and undoable. Edits go through reviewed corrections with rollback | [Corrections](docs/reviewed-corrections.md) |
150
193
  | Time travel | `--as-of`, `--known-as-of`, `--valid-at`, and `--window 7d` or a date range | [Recall](docs/recall.md#time-travel) |
151
- | Recall filters | `--project`, `--saved-by`, `--about`, `--kind`; applied before the answer check | [Recall](docs/recall.md#narrowing-a-recall) |
152
- | Project-aware recall | New in 4.1.21: memories from your current project rank first, hiding nothing. `--project` narrows and says when nothing matched | [Recall](docs/recall.md) |
153
- | Summaries and saved views | New in 4.1.21: `slm summary session`, `day` or `project`, each citing its memory ids; `slm view create "Work log" "what did I ship" --window 7d`, then `slm view run` | [Summaries](docs/recall.md#summaries), [Views](docs/recall.md#saved-views) |
194
+ | Recall filters | `--project`, `--saved-by`, `--about`, `--kind`, and exact tags with `--tag` (repeat it; `--tags-match all` or `any`); applied before the answer check, and an empty result says why | [Recall](docs/recall.md#narrowing-a-recall) |
195
+ | Project-aware recall | Memories from your current project rank first, hiding nothing. `--project` narrows and says when nothing matched | [Recall](docs/recall.md) |
196
+ | Summaries and saved views | `slm summary session`, `day` or `project`, each citing its memory ids; `slm view create "Work log" "what did I ship" --window 7d`, then `slm view run` | [Summaries](docs/recall.md#summaries), [Views](docs/recall.md#saved-views) |
154
197
  | Knowledge graph | Entities, aliases, scenes and timelines; Entity Explorer in the dashboard | [Architecture](docs/ARCHITECTURE.md) |
155
198
  | Code graph | Index a repo, then ask for blast radius, callers, review context and code search by meaning | [MCP tools](docs/mcp-tools.md) |
156
- | Modes and providers | A: no model calls. B: a model on this machine (Ollama by default, or another local OpenAI-compatible server). C: your own endpoint or a cloud provider. Multilingual embedders work | [Configuration](docs/configuration.md) |
199
+ | Modes and providers | A: no model calls. B: a model on this machine (Ollama by default, or another local OpenAI-compatible server). C: your own endpoint or a cloud provider. Multilingual embedders work. `slm models` recommends models that fit this computer | [Configuration](docs/configuration.md) |
200
+ | Switch the embedding model | `slm embedder switch MODEL` re-indexes every memory in the background while recall keeps working, then changes over in one step; `status`, `cancel` and `rollback` | [CLI reference](docs/cli-reference.md#embedding-models-and-store-health) |
157
201
 
158
202
  Recalled text is untrusted evidence: before it reaches a prompt, secrets are redacted, forged boundary markers neutralised and provenance attached, a defence against prompt injection through memory.
159
203
 
@@ -221,6 +265,7 @@ All of it fails open. [Optimize](docs/optimize-overview.md), [Proxy setup](docs/
221
265
  - **[Dashboard](docs/DASHBOARD-COVERAGE.md):** `slm dashboard`, 16 panes including Answer Check, Brain, Knowledge Graph, Governance, Optimize and Mesh Peers.
222
266
  - **Durable writes:** each save moves raw → queryable → enriching → complete with a receipt; a failed step keeps the raw evidence and retries. Saves under heavy load are queued, never refused.
223
267
  - **[Operations](docs/troubleshooting.md):** `slm doctor`, `status`, `health`, `restart`, `ops`; stuck operations are listed and resolved.
268
+ - **Store health:** `slm db integrity` reports the store's health; `slm db repair` previews fixes for leftover rows, erased words, unfinished deletes and memories that lost their searchable fact, applies them with `--apply`, and undoes a run with `--undo`. It never brings back anything erased, deleted or withheld. [CLI reference](docs/cli-reference.md#embedding-models-and-store-health)
224
269
 
225
270
  ## MCP memory server: tool profiles
226
271
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superlocalmemory",
3
- "version": "4.1.21",
3
+ "version": "4.1.22",
4
4
  "description": "Local-first agent memory with MCP and an agent-native CLI. Documented clients include Claude Code, Cursor, and Windsurf.",
5
5
  "keywords": [
6
6
  "ai-memory",
@@ -78,8 +78,10 @@
78
78
  "scripts/preuninstall.js",
79
79
  ".claude-plugin/",
80
80
  "plugin/",
81
+ "plugin-src/skills/slm-bot-memory/SKILL.md",
81
82
  "plugin-src/skills/slm-cache/SKILL.md",
82
83
  "plugin-src/skills/slm-compress/SKILL.md",
84
+ "plugin-src/skills/slm-getting-started-bot/SKILL.md",
83
85
  "plugin-src/skills/slm-governance/SKILL.md",
84
86
  "plugin-src/skills/slm-graph/SKILL.md",
85
87
  "plugin-src/skills/slm-loop/SKILL.md",
@@ -3,7 +3,7 @@
3
3
  "name": "Qualixar",
4
4
  "url": "https://github.com/qualixar/superlocalmemory"
5
5
  },
6
- "description": "Local-first agent memory + reversible context compression and KV cache, as an MCP server. 38-tool code profile with graph intelligence.",
6
+ "description": "Local-first agent memory + reversible context compression and KV cache, as an MCP server. Serves the 56-tool full profile by default; set SLM_MCP_PROFILE=code for the 38-tool code profile.",
7
7
  "displayName": "SuperLocalMemory",
8
8
  "keywords": [
9
9
  "memory",
@@ -15,5 +15,5 @@
15
15
  "mcpServers": "./.mcp.json",
16
16
  "name": "superlocalmemory",
17
17
  "repository": "https://github.com/qualixar/superlocalmemory",
18
- "version": "4.1.21"
18
+ "version": "4.1.22"
19
19
  }
@@ -0,0 +1,24 @@
1
+ {
2
+ "author": {
3
+ "name": "Qualixar"
4
+ },
5
+ "description": "Local-first long-term memory for your agents and bots: remember, recall and session context stored on your own computer, with reversible compression and a cache for large tool outputs.",
6
+ "homepage": "https://github.com/qualixar/superlocalmemory",
7
+ "hooks": {
8
+ "hooks": {}
9
+ },
10
+ "keywords": [
11
+ "memory",
12
+ "long-term-memory",
13
+ "local-first",
14
+ "mcp",
15
+ "agents"
16
+ ],
17
+ "license": "AGPL-3.0-or-later",
18
+ "logo": "assets/logo.svg",
19
+ "mcpServers": "./mcp.cursor.json",
20
+ "name": "superlocalmemory",
21
+ "repository": "https://github.com/qualixar/superlocalmemory",
22
+ "skills": "./cursor-skills/",
23
+ "version": "4.1.22"
24
+ }
package/plugin/CLAUDE.md CHANGED
@@ -1,4 +1,4 @@
1
- <!-- BEGIN SuperLocalMemory v4.1.21 -->
1
+ <!-- BEGIN SuperLocalMemory v4.1.22 -->
2
2
 
3
3
  ## SuperLocalMemory (SLM) — Agent Rules
4
4
 
@@ -40,6 +40,6 @@ slm-recall · slm-remember · slm-session · slm-status · slm-cache · slm-comp
40
40
  ### Subagents
41
41
  slm-memory-advisor (memory decisions, session hygiene, scope/profile guidance) · slm-optimize-advisor (context compression + KV cache) · slm-governance-advisor (scope/roles/compliance/GDPR)
42
42
 
43
- <!-- END SuperLocalMemory v4.1.21 -->
43
+ <!-- END SuperLocalMemory v4.1.22 -->
44
44
 
45
- SuperLocalMemory v4.1.21 · Qualixar · AGPL-3.0-or-later
45
+ SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
@@ -77,4 +77,4 @@ slm-scope · slm-governance · slm-profile · slm-remember · slm-recall
77
77
  # What NOT to do
78
78
  Never session_init twice; never forget without dry-run preview; never store secrets; never bypass role checks; never claim an erasure succeeded without verifying via recall.
79
79
 
80
- SuperLocalMemory v4.1.21 · Qualixar · AGPL-3.0-or-later
80
+ SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
@@ -68,4 +68,4 @@ assessment. The gate is the authority.
68
68
 
69
69
  ---
70
70
 
71
- SuperLocalMemory v4.1.21 · Qualixar · AGPL-3.0-or-later
71
+ SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
@@ -47,4 +47,4 @@ slm-recall · slm-remember · slm-session · slm-scope · slm-profile · slm-gov
47
47
  # What NOT to do
48
48
  Never session_init twice; never forget dry_run=False without reporting preview; 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.
49
49
 
50
- SuperLocalMemory v4.1.21 · Qualixar · AGPL-3.0-or-later
50
+ SuperLocalMemory v4.1.22 · 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 carry ccr_ids across profile switches.
43
43
 
44
- SuperLocalMemory v4.1.21 · Qualixar · AGPL-3.0-or-later
44
+ SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
@@ -0,0 +1,36 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-labelledby="title desc">
2
+ <title id="title">SuperLocalMemory mark</title>
3
+ <desc id="desc">A local memory core represented by connected evidence nodes in a cyan and violet ring.</desc>
4
+ <defs>
5
+ <linearGradient id="slm-ring" x1="18" y1="18" x2="110" y2="110" gradientUnits="userSpaceOnUse">
6
+ <stop stop-color="#22d3ee"/>
7
+ <stop offset=".52" stop-color="#60a5fa"/>
8
+ <stop offset="1" stop-color="#a78bfa"/>
9
+ </linearGradient>
10
+ <linearGradient id="slm-core" x1="39" y1="37" x2="91" y2="91" gradientUnits="userSpaceOnUse">
11
+ <stop stop-color="#d9fbff"/>
12
+ <stop offset="1" stop-color="#c4b5fd"/>
13
+ </linearGradient>
14
+ </defs>
15
+ <circle cx="64" cy="64" r="58" fill="#07111f" stroke="url(#slm-ring)" stroke-width="4"/>
16
+ <path d="M33 51c4-15 16-25 31-25 20 0 35 16 35 36 0 17-12 31-28 35" fill="none" stroke="url(#slm-ring)" stroke-linecap="round" stroke-width="4"/>
17
+ <path d="M35 78c6 15 22 24 38 20 9-2 16-8 20-16" fill="none" stroke="url(#slm-ring)" stroke-linecap="round" stroke-width="4" opacity=".82"/>
18
+ <g fill="none" stroke="url(#slm-ring)" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5">
19
+ <path d="M43 55 58 45l14 10 13-8"/>
20
+ <path d="M43 55v18l15 9 14-9 13 8"/>
21
+ <path d="M58 45v37"/>
22
+ <path d="M72 55v18"/>
23
+ </g>
24
+ <g fill="url(#slm-core)" stroke="#07111f" stroke-width="2">
25
+ <circle cx="43" cy="55" r="6"/>
26
+ <circle cx="58" cy="45" r="6"/>
27
+ <circle cx="72" cy="55" r="6"/>
28
+ <circle cx="85" cy="47" r="6"/>
29
+ <circle cx="43" cy="73" r="6"/>
30
+ <circle cx="58" cy="82" r="6"/>
31
+ <circle cx="72" cy="73" r="6"/>
32
+ <circle cx="85" cy="81" r="6"/>
33
+ </g>
34
+ <circle cx="64" cy="64" r="8" fill="url(#slm-ring)"/>
35
+ <circle cx="64" cy="64" r="3" fill="#f8fafc"/>
36
+ </svg>
@@ -0,0 +1,139 @@
1
+ ---
2
+ name: slm-bot-memory
3
+ description: Cross-bot memory on a shared computer (Grok Bot, Cursor plugin, any host where several agents share one machine). Explains agent_id attribution vs. profile/scope access, how to namespace by agent_id + profile + scope, and what must never be written to memory. Read this before the first remember/recall on a new Grok-Bot-style host.
4
+ when_to_use: |
5
+ - First session on a Grok Bot computer or any shared-bot host
6
+ - "Will my other bots see this memory?"
7
+ - "How do I keep this bot's notes separate from that one?"
8
+ - Deciding whether to store something that looks like a secret or personal data
9
+ - Setting up a second bot on a computer that already has SLM configured
10
+ allowed-tools: remember, recall, search, session_init, switch_profile
11
+ ---
12
+
13
+ # slm-bot-memory — Cross-Bot Memory on a Shared Host
14
+
15
+ SuperLocalMemory ships as an MCP server. On a single-user laptop, one bot is
16
+ the only thing talking to it. On a **shared-bot host** — Grok Bot's "one
17
+ computer, shared by all your Bots" model, several Cursor windows, or any
18
+ setup where more than one agent process points at the same install — several
19
+ agents can reach the same memory store at once. This skill is about that
20
+ case: what is actually isolated, what is not, and what must never be written
21
+ regardless.
22
+
23
+ ---
24
+
25
+ ## Three things that sound like isolation and are not the same
26
+
27
+ | Setting | What it controls | Does it hide memories from another bot? |
28
+ |---|---|---|
29
+ | `SLM_AGENT_ID` | **Attribution** — who gets credit for a memory in logs and summaries | **No.** It is metadata, never an authenticated principal (verified in `mcp/agent_context.py`'s own docstring). Any bot that can query the same store can read a memory written under a different `agent_id`. |
30
+ | `SLM_DATA_DIR` (profile root) | **Which database file** the daemon opens | **Yes.** Two bots pointed at different `SLM_DATA_DIR` values have fully separate, independent memory stores — nothing is shared unless you explicitly configure sharing. |
31
+ | `scope` (`personal` / `shared` / `global`, see `slm-scope`) | **Visibility inside one store**, between profiles that share that store | Only the way you set it. `personal` (the default) stays within the writing profile; `shared`/`global` are explicit, user-initiated opt-ins. |
32
+
33
+ The practical rule: **`SLM_AGENT_ID` tells you who wrote something; `SLM_DATA_DIR`
34
+ and `scope` decide who can read it.** If two bots on the same Grok Bot computer
35
+ use the same `SLM_DATA_DIR` (the common case — it is a shared filesystem, and
36
+ nothing in Grok Bot's plugin model points different bots at different data
37
+ directories by default), they see each other's `personal`-scope memories too,
38
+ the same way two terminal sessions on one laptop would. Giving two bots
39
+ different `SLM_AGENT_ID` values does not change that — it only changes whose
40
+ name shows up on the memory.
41
+
42
+ If you need one bot's memories genuinely unreachable from another, that bot
43
+ needs its **own `SLM_DATA_DIR`** (or its own profile within a store that has
44
+ governance/roles configured — see `slm-governance`), not just its own
45
+ `SLM_AGENT_ID`.
46
+
47
+ ---
48
+
49
+ ## Namespacing that actually works
50
+
51
+ Use all three dimensions together, each for what it is good at:
52
+
53
+ 1. **`agent_id`** (`SLM_AGENT_ID` env, or the `agent_id` parameter on
54
+ `remember`/`recall` directly) — so a human or another agent reading
55
+ `get_memory_summary` or the stored facts later can tell which bot said
56
+ what. Set it to something stable and specific: `grok_bot_support`,
57
+ `grok_bot_release_notes`, not a generic `bot`.
58
+ 2. **`profile_id`** / `SLM_DATA_DIR` — the real isolation boundary. One
59
+ store per bot that genuinely needs privacy from the others.
60
+ 3. **`scope`** (see `slm-scope`) — inside a store two or more bots
61
+ legitimately share, keep writes `personal` by default and only promote to
62
+ `shared`/`global` when a fact is meant for every bot on that store.
63
+
64
+ ```
65
+ remember(
66
+ content="Deploy window for the support bot is Tue/Thu 14:00-16:00 UTC",
67
+ tags="ops,schedule",
68
+ agent_id="grok_bot_support",
69
+ session_id="<sid>",
70
+ )
71
+ ```
72
+
73
+ ```
74
+ recall(
75
+ query="deploy window",
76
+ agent_id="grok_bot_support",
77
+ session_id="<sid>",
78
+ )
79
+ ```
80
+
81
+ Recall is not filtered by `agent_id` automatically — it is attribution on the
82
+ written record, not a query filter. If you need "only what this bot wrote",
83
+ say so in the query text or check the `saved_by`/attribution field on the
84
+ results, the same way you would read any shared log.
85
+
86
+ ---
87
+
88
+ ## What never goes into memory, on any host
89
+
90
+ This is not Grok-Bot-specific — it is the baseline for every SLM host — but
91
+ it matters more here because a shared computer means a shared blast radius if
92
+ it is violated:
93
+
94
+ - **Secrets, API keys, tokens, passwords, certificates.** Never pass them to
95
+ `remember`, even "just this once" or "temporarily." If a fact needs to
96
+ reference that a credential exists, store the *fact of its existence and
97
+ where to rotate it*, never the value.
98
+ - **Personal data about identifiable people** that was not already something
99
+ the user explicitly asked to be remembered about themselves (names,
100
+ emails, addresses, health, financial details of third parties).
101
+ - **Anything from Grok Bot's shared filesystem you did not write yourself**
102
+ and were not asked to remember. "Files are visible to every Bot" on that
103
+ computer (Grok Bot's own docs) — a file being readable is not the same as
104
+ having permission to copy its contents into long-term memory that other
105
+ bots and later sessions will see.
106
+ - **Command-line credentials.** Grok Bot's own docs note these are shared
107
+ across bots on the computer; SLM must not become a second, more durable
108
+ copy of them.
109
+
110
+ If you are unsure whether something is a secret, treat it as one and ask the
111
+ user before storing anything derived from it.
112
+
113
+ ---
114
+
115
+ ## Checklist for a new bot on an existing shared host
116
+
117
+ 1. Confirm `SLM_DATA_DIR` — is this bot meant to share the existing store, or
118
+ does it need its own? (`slm status` or `session_init` shows the active
119
+ store's identity.)
120
+ 2. Set a specific `SLM_AGENT_ID` for this bot before the first `remember`.
121
+ 3. Read `slm-scope` before writing anything with `scope="shared"` or
122
+ `scope="global"` — those are machine-wide, not just cross-bot.
123
+ 4. Read the "never goes into memory" list above once, out loud if you are
124
+ unsure, before the first write on this host.
125
+
126
+ ---
127
+
128
+ ## Related skills
129
+
130
+ - `slm-getting-started-bot` — first-session setup for a headless bot host
131
+ - `slm-scope` — the personal/shared/global visibility model this skill
132
+ namespaces on top of
133
+ - `slm-profile` — switching the active workspace/tool-tier within one store
134
+ - `slm-governance` — role-based access when a store has multiple human/bot
135
+ members and real access control, not just convention
136
+
137
+ ---
138
+
139
+ *SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later*