superlocalmemory 4.1.20 → 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 +217 -0
  3. package/README.md +258 -58
  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 +5 -4
  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 +3 -3
  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 +5 -4
  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
@@ -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*
@@ -145,4 +145,4 @@ These subcommands control daemon-level cache settings. They do not read or write
145
145
 
146
146
  ---
147
147
 
148
- SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later
148
+ SuperLocalMemory v4.1.22 · 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.1.20 · Qualixar · AGPL-3.0-or-later
150
+ SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
@@ -0,0 +1,138 @@
1
+ ---
2
+ name: slm-getting-started-bot
3
+ description: First-session orientation for SuperLocalMemory on a headless bot host (Grok Bot, or any Cursor-format plugin install with no hooks, no dashboard, and no interactive setup wizard). What is different here vs. Claude Code/Codex, which 18 tools are actually available, and the first three calls to make.
4
+ when_to_use: |
5
+ - The very first session after SLM is installed as a Grok Bot / Cursor plugin
6
+ - "What can I do with SuperLocalMemory here?"
7
+ - A recall or remember call fails and you are not sure why on this host
8
+ - Comparing what works here vs. what the other skills describe for Claude Code
9
+ allowed-tools: session_init, remember, recall, switch_profile
10
+ ---
11
+
12
+ # slm-getting-started-bot — First Session on a Headless Bot Host
13
+
14
+ You are talking to SuperLocalMemory through its MCP server, started as
15
+ `uvx --from superlocalmemory==<version> slm mcp` by the plugin manifest. This
16
+ skill is for the ways that is different from a Claude Code or Codex install —
17
+ read it once per new host, not once per session.
18
+
19
+ ---
20
+
21
+ ## What is NOT available here
22
+
23
+ Grok Bot (and Cursor's plugin host generally) reads only two parts of a
24
+ plugin: `mcpServers` and `skills`. It does not run:
25
+
26
+ - **Hooks** — no automatic session-start context load, no automatic
27
+ checkpoint on session end. Call `session_init` yourself at the start of a
28
+ session if you want prior context; nothing injects it for you.
29
+ - **Slash commands or sub-agents** — the `commands/` and `agents/` components
30
+ other SLM plugins ship are Claude-Code-shaped and are not part of this
31
+ install. Everything you can do here, you do through the MCP tools
32
+ directly.
33
+ - **A dashboard.** There is no browser UI to check on this host. `slm status`
34
+ style information comes back from the tools themselves (`session_init`'s
35
+ response, or asking `recall` for recent memories) — there is nothing to
36
+ click.
37
+ - **`ANTHROPIC_BASE_URL` or any Claude-specific proxy behavior.** SLM does not
38
+ depend on it anywhere; nothing to configure here either way.
39
+
40
+ None of this is a degraded mode — it is the whole surface. Do not tell the
41
+ user a feature is "missing" when it was simply never wired to this host
42
+ format in the first place.
43
+
44
+ ---
45
+
46
+ ## What IS available: the core profile (18 tools)
47
+
48
+ This plugin sets `SLM_MCP_PROFILE=core`, the smallest tool tier, on purpose —
49
+ a shared, memory-tight computer should not load tool descriptions or RAM for
50
+ tiers it will not use. The 18 tools:
51
+
52
+ `remember`, `recall`, `search`, `fetch`, `list_recent`, `update_memory`,
53
+ `forget`, `session_init`, `close_session`, `slm_compress`, `slm_retrieve`,
54
+ `slm_cache_set`, `slm_cache_get`, `slm_optimize_stats`, `review_correction`,
55
+ `list_corrections`, `get_memory_summary`, `switch_profile`.
56
+
57
+ If you are looking at another skill that mentions a tool NOT in this list
58
+ (`build_code_graph`, `mesh_send`, anything governance/compliance-shaped), that
59
+ skill describes a different, larger profile (`code`, `full`, `power`) — it is
60
+ accurate for Claude Code or Codex installs, not for this one, unless someone
61
+ has deliberately reconfigured `SLM_MCP_PROFILE`.
62
+
63
+ ---
64
+
65
+ ## The first three calls on a new host
66
+
67
+ 1. **`session_init`** — nothing runs this automatically here (no hooks), so
68
+ call it yourself at the start of the first real session:
69
+ ```
70
+ session_init(project_path="<where you are working>", query="")
71
+ ```
72
+ Returns recent relevant memories and a session id to pass to later calls.
73
+
74
+ 2. **`remember`** one real fact, before doing anything else, as a smoke test:
75
+ ```
76
+ remember(content="First session on this host, verifying setup.", tags="setup", session_id="<sid>")
77
+ ```
78
+
79
+ 3. **`recall`** it back:
80
+ ```
81
+ recall(query="first session verifying setup", session_id="<sid>")
82
+ ```
83
+ If this returns the fact, the daemon, the embedding path, and the
84
+ CPU-only torch install all worked. If it does not, the result still tells
85
+ you something — see Troubleshooting below.
86
+
87
+ ---
88
+
89
+ ## Cold start is slower here than on a warm laptop
90
+
91
+ The first `remember`/`recall` on a fresh `SLM_DATA_DIR` has to: resolve
92
+ `uvx`'s pinned `superlocalmemory` package, start the daemon, and warm an
93
+ embedding model (and, unless this is the lite profile, a reranker model) —
94
+ tens of seconds, not milliseconds. A `recall` that comes back marked
95
+ `"incomplete"` or with a channel reporting not-ready in that window is not a
96
+ bug; it means the embedding worker had not finished loading yet. Retry once
97
+ rather than assuming something is broken.
98
+
99
+ ---
100
+
101
+ ## This host already runs the lite bot-host profile
102
+
103
+ Unless something overrode it, `mcp.cursor.json` sets `SLM_RERANKER_ENABLED=
104
+ false`, `SLM_RERANKER_IDLE_TIMEOUT=120`, and `SLM_MAX_EMBEDDING_WORKERS=1` —
105
+ the RAM-conscious default for a computer shared by every bot on it. Recall
106
+ still runs every other channel (BM25, semantic, entity graph, temporal,
107
+ spreading activation, Hopfield) and fuses them; it just skips the
108
+ cross-encoder re-ranking pass. If recall quality seems to matter more than
109
+ RAM headroom for your use case, the user can set `SLM_RERANKER_ENABLED=true`
110
+ in the manifest's env block — ask before changing it, since it trades RAM for
111
+ quality on a shared box.
112
+
113
+ ---
114
+
115
+ ## Troubleshooting
116
+
117
+ - **A tool call returns a "profile" or "tool not available" style error** —
118
+ you are probably calling a tool outside the 18-tool core set. Check the
119
+ list above before assuming the server is broken.
120
+ - **Everything times out on the very first call of a session** — likely the
121
+ cold-start warmup described above. Wait and retry once before reporting a
122
+ failure.
123
+ - **You are not sure whether another bot on this computer can see what you
124
+ just stored** — read `slm-bot-memory` before storing anything you would
125
+ not want another bot on this machine to read.
126
+
127
+ ---
128
+
129
+ ## Related skills
130
+
131
+ - `slm-bot-memory` — cross-bot namespacing and what must never be stored
132
+ - `slm-remember` / `slm-recall` — full parameter reference for the two tools
133
+ you will use the most
134
+ - `slm-session` — what `session_init`/`close_session` actually do
135
+
136
+ ---
137
+
138
+ *SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later*
@@ -245,4 +245,4 @@ Before running any destructive operation (`forget`, `compact_memories`):
245
245
 
246
246
  ---
247
247
 
248
- *SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later*
248
+ *SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later*
@@ -312,4 +312,4 @@ profile. See `slm-profile` for the full profile switching workflow.
312
312
 
313
313
  ---
314
314
 
315
- SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later
315
+ SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
@@ -96,4 +96,4 @@ paused, name the approval needed; when errored, quote the short detail.
96
96
 
97
97
  ---
98
98
 
99
- SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later
99
+ SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
@@ -279,4 +279,4 @@ mesh availability.
279
279
 
280
280
  ---
281
281
 
282
- *SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later*
282
+ *SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later*
@@ -32,8 +32,8 @@ project, a client engagement, a production vs staging environment.
32
32
  |---------|-------|-------------|
33
33
  | `core` | 18 tools — remember, recall, search, session, optimize | Minimal footprint, no code tools |
34
34
  | `code` | 38 tools — core + portable Brain evidence + code graph + profile switching + bounded loops + memory-kind management | Default for IDE/coding agents |
35
- | `full` | 54 tools — code + all memory ops + mesh + bounded loops | Multi-session, team workflows |
36
- | `power` | 66 tools — full + governance + behavioral tools | Enterprise, admin, audit use cases |
35
+ | `full` | 56 tools — code + all memory ops + mesh + bounded loops | Multi-session, team workflows |
36
+ | `power` | 68 tools — full + governance + behavioral tools | Enterprise, admin, audit use cases |
37
37
  | `mesh` | 8 tools — mesh coordination only | Lightweight cross-session signalling |
38
38
 
39
39
  The profile is set at MCP server startup via `SLM_MCP_PROFILE` in the MCP config.
@@ -99,7 +99,8 @@ configured MCP server instance.
99
99
 
100
100
  ## Configuring the initial profile
101
101
 
102
- In your `.mcp.json` (Claude Code) or `.codex/config.toml` (Codex):
102
+ Set it where your host defines the MCP server's environment — `.mcp.json` (Claude
103
+ Code), `.codex/config.toml` (Codex), or `mcp.cursor.json` (Cursor / Grok Bot):
103
104
 
104
105
  ```json
105
106
  "env": {
@@ -146,4 +147,4 @@ Name them differently in your MCP config (e.g. `superlocalmemory-personal` and
146
147
 
147
148
  ---
148
149
 
149
- *SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later*
150
+ *SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later*
@@ -330,4 +330,4 @@ before recalling, then switch back. See `slm-profile` for workspace switching.
330
330
 
331
331
  ---
332
332
 
333
- *SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later*
333
+ *SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later*
@@ -270,4 +270,4 @@ different workspace, use `switch_profile` first. See `slm-profile`.
270
270
 
271
271
  ---
272
272
 
273
- *SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later*
273
+ *SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later*
@@ -173,4 +173,4 @@ to review the impact. See `slm-remember` for the full deletion discipline.
173
173
 
174
174
  ---
175
175
 
176
- *SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later*
176
+ *SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later*
@@ -268,4 +268,4 @@ explicitly and call `recall` with `include_global`/`include_shared` after
268
268
 
269
269
  ---
270
270
 
271
- *SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later*
271
+ *SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later*
@@ -163,4 +163,4 @@ multi-profile setup. To switch the active profile, see `slm-profile`.
163
163
 
164
164
  ---
165
165
 
166
- SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later
166
+ 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.20 · 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.20 · Qualixar · AGPL-3.0-or-later
44
+ SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
@@ -85,7 +85,7 @@ When the SLM MCP server is unavailable, use these CLI equivalents:
85
85
 
86
86
  > The MCP config ships only `SLM_AGENT_ID=claude_code` — no `SLM_MCP_PROFILE` —
87
87
  > so it falls back to the same no-profile default every install gets: the
88
- > 54-tool `full` surface. That is the 18 core tools below **plus** mesh
88
+ > 56-tool `full` surface. That is the 18 core tools below **plus** mesh
89
89
  > coordination (8: `mesh_summary`, `mesh_peers`, `mesh_send`, `mesh_inbox`,
90
90
  > `mesh_state`, `mesh_lock`, `mesh_events`, `mesh_status`), portable-evidence
91
91
  > tools (5: `get_brain_evidence_status`, `record_agent_experience`,
@@ -102,7 +102,7 @@ When the SLM MCP server is unavailable, use these CLI equivalents:
102
102
  > which trades mesh and administration tools for 6 code-graph tools
103
103
  > (`build_code_graph`, `get_blast_radius`, `query_graph`,
104
104
  > `semantic_search_code`, `get_review_context`, `detect_changes`). Use
105
- > `power` (66 tools) for governance and audit tools. See slm-profile for
105
+ > `power` (68 tools) for governance and audit tools. See slm-profile for
106
106
  > profile switching.
107
107
 
108
108
  | Tool | Signature (key params) | Notes |
@@ -149,4 +149,4 @@ When the SLM MCP server is unavailable, use these CLI equivalents:
149
149
  - **slm-optimize-advisor** — context compression and KV cache
150
150
  - **slm-governance-advisor** — scope/role compliance, retention policies, GDPR
151
151
 
152
- SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later
152
+ SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later
@@ -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*
@@ -145,4 +145,4 @@ These subcommands control daemon-level cache settings. They do not read or write
145
145
 
146
146
  ---
147
147
 
148
- SuperLocalMemory v4.1.20 · Qualixar · AGPL-3.0-or-later
148
+ SuperLocalMemory v4.1.22 · 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.1.20 · Qualixar · AGPL-3.0-or-later
150
+ SuperLocalMemory v4.1.22 · Qualixar · AGPL-3.0-or-later