superlocalmemory 3.7.7 → 3.8.0

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 (262) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/ATTRIBUTION.md +1 -3
  3. package/CHANGELOG.md +85 -0
  4. package/README.md +199 -29
  5. package/package.json +4 -2
  6. package/plugin/.claude-plugin/plugin.json +2 -2
  7. package/plugin/CLAUDE.md +8 -8
  8. package/plugin/agents/slm-governance-advisor.md +80 -0
  9. package/plugin/agents/slm-loop-runner.md +71 -0
  10. package/plugin/agents/slm-memory-advisor.md +10 -5
  11. package/plugin/agents/slm-optimize-advisor.md +9 -3
  12. package/plugin/commands/slm-loop.md +31 -0
  13. package/plugin/hooks/hooks.json +79 -0
  14. package/plugin/requirements.txt +1 -1
  15. package/plugin/scripts/slm-launch +46 -7
  16. package/plugin/settings.json +9 -0
  17. package/plugin/skills/slm-cache/SKILL.md +9 -1
  18. package/plugin/skills/slm-compress/SKILL.md +8 -1
  19. package/plugin/skills/slm-governance/SKILL.md +248 -0
  20. package/plugin/skills/slm-graph/SKILL.md +17 -3
  21. package/plugin/skills/slm-loop/SKILL.md +99 -0
  22. package/plugin/skills/slm-mesh/SKILL.md +282 -0
  23. package/plugin/skills/slm-profile/SKILL.md +148 -0
  24. package/plugin/skills/slm-recall/SKILL.md +46 -10
  25. package/plugin/skills/slm-remember/SKILL.md +48 -1
  26. package/plugin/skills/slm-scope/SKILL.md +176 -0
  27. package/plugin/skills/slm-session/SKILL.md +24 -1
  28. package/plugin/skills/slm-status/SKILL.md +18 -1
  29. package/plugin-src/agents/slm-governance-advisor.md +80 -0
  30. package/plugin-src/agents/slm-loop-runner.md +71 -0
  31. package/plugin-src/agents/slm-memory-advisor.md +10 -5
  32. package/plugin-src/agents/slm-optimize-advisor.md +9 -3
  33. package/plugin-src/commands/slm-loop.md +31 -0
  34. package/plugin-src/hooks/hooks.json +79 -0
  35. package/plugin-src/manifest.json +7 -2
  36. package/plugin-src/requirements.txt +1 -1
  37. package/plugin-src/rules/AGENTS.md +57 -18
  38. package/plugin-src/rules/CLAUDE.md.fragment +8 -8
  39. package/plugin-src/scripts/slm-launch +46 -7
  40. package/plugin-src/settings.json +9 -0
  41. package/plugin-src/skills/slm-cache/SKILL.md +9 -1
  42. package/plugin-src/skills/slm-compress/SKILL.md +8 -1
  43. package/plugin-src/skills/slm-governance/SKILL.md +248 -0
  44. package/plugin-src/skills/slm-graph/SKILL.md +17 -3
  45. package/plugin-src/skills/slm-loop/SKILL.md +99 -0
  46. package/plugin-src/skills/slm-mesh/SKILL.md +282 -0
  47. package/plugin-src/skills/slm-profile/SKILL.md +148 -0
  48. package/plugin-src/skills/slm-recall/SKILL.md +46 -10
  49. package/plugin-src/skills/slm-remember/SKILL.md +48 -1
  50. package/plugin-src/skills/slm-scope/SKILL.md +176 -0
  51. package/plugin-src/skills/slm-session/SKILL.md +24 -1
  52. package/plugin-src/skills/slm-status/SKILL.md +18 -1
  53. package/pyproject.toml +1 -2
  54. package/scripts/postinstall/validation.js +2 -0
  55. package/scripts/postinstall-interactive.js +74 -2
  56. package/src/superlocalmemory/__init__.py +1 -1
  57. package/src/superlocalmemory/access/__init__.py +3 -0
  58. package/src/superlocalmemory/access/rbac.py +477 -0
  59. package/src/superlocalmemory/cli/commands.py +96 -12
  60. package/src/superlocalmemory/cli/compress_cmd.py +17 -7
  61. package/src/superlocalmemory/cli/loop_cmd.py +192 -0
  62. package/src/superlocalmemory/cli/main.py +39 -4
  63. package/src/superlocalmemory/cli/mesh_cmd.py +38 -0
  64. package/src/superlocalmemory/cli/optimize_cmd.py +3 -0
  65. package/src/superlocalmemory/cli/pending_store.py +49 -13
  66. package/src/superlocalmemory/cli/proxy_cmd.py +4 -0
  67. package/src/superlocalmemory/cli/scale_engine_cmd.py +6 -0
  68. package/src/superlocalmemory/cli/setup_wizard.py +22 -13
  69. package/src/superlocalmemory/compliance/audit.py +6 -0
  70. package/src/superlocalmemory/compliance/gdpr.py +128 -138
  71. package/src/superlocalmemory/compliance/retention.py +176 -45
  72. package/src/superlocalmemory/core/backend_orchestrator.py +5 -43
  73. package/src/superlocalmemory/core/community_summary.py +267 -0
  74. package/src/superlocalmemory/core/config.py +216 -3
  75. package/src/superlocalmemory/core/consolidation_engine.py +95 -22
  76. package/src/superlocalmemory/core/context_cache.py +61 -18
  77. package/src/superlocalmemory/core/embedding_worker.py +17 -2
  78. package/src/superlocalmemory/core/embeddings.py +12 -1
  79. package/src/superlocalmemory/core/engine.py +17 -1
  80. package/src/superlocalmemory/core/engine_ingestion.py +29 -0
  81. package/src/superlocalmemory/core/engine_wiring.py +13 -0
  82. package/src/superlocalmemory/core/entity_community.py +178 -0
  83. package/src/superlocalmemory/core/graph_analyzer.py +39 -2
  84. package/src/superlocalmemory/core/graph_pruner.py +13 -8
  85. package/src/superlocalmemory/core/key_expander.py +138 -0
  86. package/src/superlocalmemory/core/maintenance.py +23 -0
  87. package/src/superlocalmemory/core/modes.py +1 -1
  88. package/src/superlocalmemory/core/mutations.py +2 -2
  89. package/src/superlocalmemory/core/pii.py +105 -0
  90. package/src/superlocalmemory/core/progressive_abstraction.py +208 -0
  91. package/src/superlocalmemory/core/recall_pipeline.py +2 -0
  92. package/src/superlocalmemory/core/recall_worker.py +20 -6
  93. package/src/superlocalmemory/core/scale_engine.py +60 -1
  94. package/src/superlocalmemory/core/security_primitives.py +40 -2
  95. package/src/superlocalmemory/core/store_pipeline.py +35 -11
  96. package/src/superlocalmemory/core/worker_pool.py +21 -6
  97. package/src/superlocalmemory/encoding/entity_reflexion.py +200 -0
  98. package/src/superlocalmemory/encoding/entity_resolver.py +34 -24
  99. package/src/superlocalmemory/encoding/fact_extractor.py +26 -1
  100. package/src/superlocalmemory/encoding/temporal_validator.py +64 -1
  101. package/src/superlocalmemory/evolution/evolution_store.py +122 -45
  102. package/src/superlocalmemory/evolution/llm_dispatch.py +12 -1
  103. package/src/superlocalmemory/evolution/model_selection.py +160 -0
  104. package/src/superlocalmemory/evolution/mutation_generator.py +16 -0
  105. package/src/superlocalmemory/evolution/skill_evolver.py +127 -42
  106. package/src/superlocalmemory/evolution/triggers.py +22 -13
  107. package/src/superlocalmemory/graph/cozo_backend.py +43 -20
  108. package/src/superlocalmemory/hooks/adapter_base.py +5 -1
  109. package/src/superlocalmemory/hooks/auto_recall.py +13 -1
  110. package/src/superlocalmemory/hooks/claude_code_hooks.py +11 -0
  111. package/src/superlocalmemory/hooks/codex_assets.py +64 -5
  112. package/src/superlocalmemory/hooks/hook_daemon.py +20 -3
  113. package/src/superlocalmemory/hooks/memory_protocol.py +54 -0
  114. package/src/superlocalmemory/hooks/portable_kit.py +114 -1
  115. package/src/superlocalmemory/infra/auth_middleware.py +28 -0
  116. package/src/superlocalmemory/infra/backup.py +12 -1
  117. package/src/superlocalmemory/infra/daemon_identity.py +40 -4
  118. package/src/superlocalmemory/infra/data_root.py +43 -4
  119. package/src/superlocalmemory/infra/event_bus.py +107 -24
  120. package/src/superlocalmemory/infra/rate_limiter.py +93 -0
  121. package/src/superlocalmemory/ingestion/adapter_manager.py +4 -1
  122. package/src/superlocalmemory/ingestion/credentials.py +1 -1
  123. package/src/superlocalmemory/learning/cross_project.py +28 -19
  124. package/src/superlocalmemory/learning/reward_proxy.py +42 -9
  125. package/src/superlocalmemory/loops/__init__.py +56 -0
  126. package/src/superlocalmemory/loops/budget.py +58 -0
  127. package/src/superlocalmemory/loops/engine.py +164 -0
  128. package/src/superlocalmemory/loops/ledger.py +243 -0
  129. package/src/superlocalmemory/loops/models.py +152 -0
  130. package/src/superlocalmemory/loops/rules.py +52 -0
  131. package/src/superlocalmemory/mcp/_daemon_proxy.py +3 -0
  132. package/src/superlocalmemory/mcp/_pool_adapter.py +2 -0
  133. package/src/superlocalmemory/mcp/profiles.py +103 -0
  134. package/src/superlocalmemory/mcp/server.py +21 -49
  135. package/src/superlocalmemory/mcp/tools_active.py +4 -7
  136. package/src/superlocalmemory/mcp/tools_code_graph.py +51 -5
  137. package/src/superlocalmemory/mcp/tools_core.py +50 -5
  138. package/src/superlocalmemory/mcp/tools_evolution.py +6 -3
  139. package/src/superlocalmemory/mcp/tools_loops.py +300 -0
  140. package/src/superlocalmemory/mcp/tools_mesh.py +140 -4
  141. package/src/superlocalmemory/mcp/tools_optimize.py +15 -8
  142. package/src/superlocalmemory/mesh/broker.py +237 -129
  143. package/src/superlocalmemory/mesh/remote_sync.py +50 -8
  144. package/src/superlocalmemory/optimize/NOTICE +1 -6
  145. package/src/superlocalmemory/optimize/adapters/anthropic_adapter.py +1 -4
  146. package/src/superlocalmemory/optimize/adapters/openai_adapter.py +1 -4
  147. package/src/superlocalmemory/optimize/cache/semantic.py +27 -19
  148. package/src/superlocalmemory/optimize/compress/align.py +32 -26
  149. package/src/superlocalmemory/optimize/compress/ccr.py +14 -71
  150. package/src/superlocalmemory/optimize/compress/router.py +105 -22
  151. package/src/superlocalmemory/optimize/config/defaults.py +1 -1
  152. package/src/superlocalmemory/optimize/config/schema.py +87 -4
  153. package/src/superlocalmemory/optimize/metrics/counters.py +13 -4
  154. package/src/superlocalmemory/optimize/metrics/estimator.py +0 -3
  155. package/src/superlocalmemory/optimize/proxy/_helpers.py +31 -4
  156. package/src/superlocalmemory/optimize/storage/db.py +38 -9
  157. package/src/superlocalmemory/optimize/storage/schema.py +10 -0
  158. package/src/superlocalmemory/parameterization/pattern_extractor.py +6 -3
  159. package/src/superlocalmemory/retrieval/agentic.py +1 -1
  160. package/src/superlocalmemory/retrieval/bm25_channel.py +68 -10
  161. package/src/superlocalmemory/retrieval/engine.py +168 -26
  162. package/src/superlocalmemory/retrieval/entity_channel.py +7 -5
  163. package/src/superlocalmemory/retrieval/hopfield_channel.py +9 -2
  164. package/src/superlocalmemory/retrieval/semantic_channel.py +114 -21
  165. package/src/superlocalmemory/retrieval/spreading_activation.py +11 -2
  166. package/src/superlocalmemory/retrieval/temporal_channel.py +48 -9
  167. package/src/superlocalmemory/retrieval/temporal_frame.py +102 -0
  168. package/src/superlocalmemory/retrieval/temporal_validity_filter.py +135 -0
  169. package/src/superlocalmemory/retrieval/time_window.py +181 -0
  170. package/src/superlocalmemory/server/api.py +21 -4
  171. package/src/superlocalmemory/server/profile_runtime.py +125 -8
  172. package/src/superlocalmemory/server/rbac_enforce.py +142 -0
  173. package/src/superlocalmemory/server/recall_health.py +24 -3
  174. package/src/superlocalmemory/server/recall_serializer.py +19 -1
  175. package/src/superlocalmemory/server/routes/abstraction.py +115 -0
  176. package/src/superlocalmemory/server/routes/agents.py +128 -38
  177. package/src/superlocalmemory/server/routes/backup.py +34 -10
  178. package/src/superlocalmemory/server/routes/behavioral.py +13 -12
  179. package/src/superlocalmemory/server/routes/brain.py +21 -5
  180. package/src/superlocalmemory/server/routes/chat.py +72 -16
  181. package/src/superlocalmemory/server/routes/compliance.py +171 -21
  182. package/src/superlocalmemory/server/routes/config_api.py +436 -0
  183. package/src/superlocalmemory/server/routes/data_io.py +30 -8
  184. package/src/superlocalmemory/server/routes/entity.py +9 -4
  185. package/src/superlocalmemory/server/routes/events.py +24 -8
  186. package/src/superlocalmemory/server/routes/evolution.py +135 -17
  187. package/src/superlocalmemory/server/routes/helpers.py +16 -1
  188. package/src/superlocalmemory/server/routes/ingest.py +7 -4
  189. package/src/superlocalmemory/server/routes/insights.py +3 -3
  190. package/src/superlocalmemory/server/routes/learning.py +14 -14
  191. package/src/superlocalmemory/server/routes/lifecycle.py +59 -8
  192. package/src/superlocalmemory/server/routes/memories.py +221 -49
  193. package/src/superlocalmemory/server/routes/mesh.py +95 -15
  194. package/src/superlocalmemory/server/routes/optimize.py +33 -1
  195. package/src/superlocalmemory/server/routes/prewarm.py +2 -0
  196. package/src/superlocalmemory/server/routes/profiles.py +63 -17
  197. package/src/superlocalmemory/server/routes/ratelimit.py +124 -0
  198. package/src/superlocalmemory/server/routes/rbac.py +367 -0
  199. package/src/superlocalmemory/server/routes/stats.py +13 -6
  200. package/src/superlocalmemory/server/routes/tiers.py +11 -9
  201. package/src/superlocalmemory/server/routes/v3_api.py +194 -81
  202. package/src/superlocalmemory/server/routes/ws.py +5 -2
  203. package/src/superlocalmemory/server/security_middleware.py +12 -5
  204. package/src/superlocalmemory/server/ui.py +30 -5
  205. package/src/superlocalmemory/server/unified_daemon.py +431 -75
  206. package/src/superlocalmemory/server/write_identity.py +38 -8
  207. package/src/superlocalmemory/storage/database.py +265 -53
  208. package/src/superlocalmemory/storage/migration_runner.py +53 -0
  209. package/src/superlocalmemory/storage/migrations/M021_ingestion_log_profile.py +108 -0
  210. package/src/superlocalmemory/storage/migrations/M022_entity_aliases_profile.py +86 -0
  211. package/src/superlocalmemory/storage/migrations/M023_mesh_profile_isolation.py +194 -0
  212. package/src/superlocalmemory/storage/migrations/M024_rbac_users_roles.py +87 -0
  213. package/src/superlocalmemory/storage/migrations/M025_perf_indexes.py +90 -0
  214. package/src/superlocalmemory/storage/migrations/M026_rbac_memberships_fk.py +136 -0
  215. package/src/superlocalmemory/storage/migrations/M027_transferable_patterns_profile.py +163 -0
  216. package/src/superlocalmemory/storage/models.py +4 -0
  217. package/src/superlocalmemory/storage/schema.py +87 -0
  218. package/src/superlocalmemory/storage/schema_v32.py +0 -9
  219. package/src/superlocalmemory/storage/schema_v343.py +24 -12
  220. package/src/superlocalmemory/trust/gate.py +49 -8
  221. package/src/superlocalmemory/ui/assets/slm-icon-white.svg +64 -0
  222. package/src/superlocalmemory/ui/assets/slm-icon.svg +36 -0
  223. package/src/superlocalmemory/ui/css/design-system.css +621 -0
  224. package/src/superlocalmemory/ui/css/neural-glass.css +6 -0
  225. package/src/superlocalmemory/ui/css/od-bridge.css +158 -0
  226. package/src/superlocalmemory/ui/favicon.svg +35 -4
  227. package/src/superlocalmemory/ui/index.html +306 -173
  228. package/src/superlocalmemory/ui/js/brain.js +5 -20
  229. package/src/superlocalmemory/ui/js/core.js +47 -31
  230. package/src/superlocalmemory/ui/js/dashboard.js +314 -63
  231. package/src/superlocalmemory/ui/js/event-delegation.js +102 -0
  232. package/src/superlocalmemory/ui/js/knowledge-graph.js +11 -11
  233. package/src/superlocalmemory/ui/js/math-health.js +1 -1
  234. package/src/superlocalmemory/ui/js/memories.js +15 -4
  235. package/src/superlocalmemory/ui/js/memory-chat.js +7 -7
  236. package/src/superlocalmemory/ui/js/ng-entities.js +6 -8
  237. package/src/superlocalmemory/ui/js/ng-ingestion.js +4 -4
  238. package/src/superlocalmemory/ui/js/ng-mesh.js +4 -9
  239. package/src/superlocalmemory/ui/js/ng-shell.js +8 -8
  240. package/src/superlocalmemory/ui/js/ng-skills.js +54 -2
  241. package/src/superlocalmemory/ui/js/od-agents.js +544 -0
  242. package/src/superlocalmemory/ui/js/od-auth-gate.js +257 -0
  243. package/src/superlocalmemory/ui/js/od-backup.js +780 -0
  244. package/src/superlocalmemory/ui/js/od-brain.js +779 -0
  245. package/src/superlocalmemory/ui/js/od-entities.js +579 -0
  246. package/src/superlocalmemory/ui/js/od-graph.js +593 -0
  247. package/src/superlocalmemory/ui/js/od-health.js +539 -0
  248. package/src/superlocalmemory/ui/js/od-mcp.js +508 -0
  249. package/src/superlocalmemory/ui/js/od-memories.js +887 -0
  250. package/src/superlocalmemory/ui/js/od-mesh.js +539 -0
  251. package/src/superlocalmemory/ui/js/od-operations.js +1250 -0
  252. package/src/superlocalmemory/ui/js/od-optimize.js +787 -0
  253. package/src/superlocalmemory/ui/js/od-settings.js +1053 -0
  254. package/src/superlocalmemory/ui/js/od-shell.js +593 -0
  255. package/src/superlocalmemory/ui/js/od-skills.js +573 -0
  256. package/src/superlocalmemory/ui/js/od-team.js +258 -0
  257. package/src/superlocalmemory/ui/js/profiles.js +159 -46
  258. package/src/superlocalmemory/ui/js/settings.js +2 -2
  259. package/src/superlocalmemory/ui/js/timeline.js +34 -5
  260. package/src/superlocalmemory/ui/js/trust-dashboard.js +2 -2
  261. package/src/superlocalmemory/vector/lancedb_backend.py +8 -6
  262. package/src/superlocalmemory/learning/behavioral_listener.py +0 -94
@@ -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. 20-tool code profile with graph intelligence.",
12
+ "description": "Local-first agent memory + reversible context compression and KV cache, as an MCP server. 21-tool code profile with graph intelligence.",
13
13
  "name": "superlocalmemory",
14
14
  "source": "./plugin"
15
15
  }
package/ATTRIBUTION.md CHANGED
@@ -74,10 +74,8 @@ The Implementer verified each arXiv ID against arxiv.org before citation.
74
74
  | **CacheAttack** (86% response hijack, 90.6% agentic) | arXiv:2601.23088 | Threat model. The 90.6% figure is [UNVERIFIED — body-only, RA-18]; the 86% figure is verified from the abstract. |
75
75
  | **SAFE-CACHE** (centroid-based adversarial defense) | Nature Scientific Reports 2026 | [CITATION-NEEDED-ONLINE — exact paper verified, but exact defense figures are body-only.] Defense reduced attack success from 52.77% to 14.27% per the paper. |
76
76
  | **ContextCache** (multi-turn context-aware keys) | arXiv:2506.22791 | §3 — context-aware cache keys prevent false reuse across semantically overlapping but conversationally distinct turns. |
77
- | **LLMLingua-2** (prose compression) | arXiv:2403.12968 (Microsoft Research) | MIT license. Models: `microsoft/llmlingua-2-bert-base-multilingual-cased-meetingbank` (default) and `microsoft/llmlingua-2-xlm-roberta-large-meetingbank`. Off by default, opt-in via `compress_prose=True` + `compress_mode="aggressive"`. **Originals always stored in CCR before lossy compression — reversible via `headroom_retrieve`.** |
77
+ | **LLMLingua-2** (prose compression) | arXiv:2403.12968 (Microsoft Research) | MIT license. Models: `microsoft/llmlingua-2-bert-base-multilingual-cased-meetingbank` (default) and `microsoft/llmlingua-2-xlm-roberta-large-meetingbank`. Off by default, opt-in via `compress_prose=True` + `compress_mode="aggressive"`. **Originals always stored in CCR before lossy compression — reversible via `slm_ccr_retrieve`.** |
78
78
  | **LongLLMLingua** (RAG compression) | arXiv:2310.06839 | Not used in Phase 3. Documented for Phase 4 RAG integration. |
79
- | **Headroom** (router, JSON handler, code handler, aligner) | github.com/qualixar/headroom (Apache-2.0) | Patterns adapted with attribution: `ContentRouter`, `JSONStructureHandler`, `CodeLanguage` enum, `CacheAligner._classify_token`. |
80
- | **omnicache-ai** (test fixture patterns) | github.com/qualixar/omnicache-ai (Apache-2.0) | Deterministic hash-to-vector embedding fixture for tests. |
81
79
 
82
80
  **Two fabricated arXiv IDs were caught and fixed during the LLD-10 audit:**
83
81
  `2501.05064` and `2404.12693` (both previously wrong vCache labels). The
package/CHANGELOG.md CHANGED
@@ -5,6 +5,91 @@ All notable changes to SuperLocalMemory V3 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
+ ## [3.8.0] - 2026-07-23 — Teams, bounded loops, and nine framework adapters
9
+
10
+ ### Added
11
+
12
+ - **Team & company memory with real access control.** A workspace (profile) can
13
+ now have multiple users, each with a role — **admin**, **member**, or
14
+ **viewer**. Admins manage people and settings, members read and write, viewers
15
+ read only. Everything is managed from the dashboard's new **Team & access**
16
+ panel: add a person, set their role, sign in, or remove them — no config files
17
+ or command line needed.
18
+ - **Sign-in for shared workspaces.** Turn on *"require sign-in"* (company mode)
19
+ and everyone must log in before reading or writing memory, so every action is
20
+ attributable to a person. Single-user setups are unchanged and need no login.
21
+ - **Private, shared, and global memories across a mesh.** Memories keep their
22
+ personal / shared / global visibility consistently when several SuperLocalMemory
23
+ instances are connected, and one team's coordination never bleeds into another's.
24
+ - **Optional personal-data scrubbing on save.** Enable PII redaction and emails,
25
+ phone numbers, national IDs, payment cards, and IP addresses are stripped from
26
+ content before it is ever stored.
27
+ - **Bounded loops — gate-verified iteration.** A loop terminates only when an
28
+ independent gate passes (a test exit code, a linter, a JSON-schema check, or
29
+ an SLM-recall condition) — never when the agent reports completion. Every lap
30
+ is persisted to SLM memory under the tag `loop:<name>`, making runs auditable
31
+ and resumable across sessions. Ships on three surfaces: the `slm loop` CLI
32
+ (`demo` / `history` / `show`), the `/slm-loop` skill with the
33
+ `slm-loop-runner` agent, and the MCP tools `slm_loop_run` /
34
+ `slm_loop_history` / `slm_loop_show` (available in the `code` and `full`
35
+ profiles).
36
+ - **Nine framework adapters.** SLM now ships adapters under `ide/integrations/`
37
+ for LangGraph, Semantic Kernel, Microsoft Agent Framework, LangChain,
38
+ LlamaIndex, CrewAI, AutoGen, Google ADK, and OpenAI Agents. Each adapter
39
+ wires SLM as the memory and history provider without replacing the framework's
40
+ agent runtime. Pydantic AI is intentionally not included — it does not expose
41
+ a formal memory interface for external providers.
42
+ - **Multi-Agent Memory dashboard page.** A new dashboard workspace shows
43
+ per-agent write activity and attribution for environments where multiple
44
+ agents share one SLM deployment. Memory entries are stamped via
45
+ `SLM_AGENT_ID`; the page surfaces per-agent write counts, recent activity,
46
+ and agent trust signals.
47
+
48
+ ### Changed / Fixed
49
+
50
+ - **Strict tenant isolation across the whole product.** Coordination between
51
+ agents (peers, messages, shared state, file locks, activity log) is now scoped
52
+ per workspace, so different teams or companies sharing one deployment can never
53
+ see each other's activity.
54
+ - **A person can only enter a workspace they belong to.** Switching into a
55
+ workspace now requires membership.
56
+ - **Tighter file permissions.** Memory, audit, and learning databases are now
57
+ owner-only on disk.
58
+
59
+ ## [3.7.9] - 2026-07-20 — Dashboard, skill-evolution, and security hardening
60
+
61
+ ### Fixed
62
+
63
+ - **Skill evolution now produces output.** A token-limit mismatch made every evolution attempt fail silently and produce nothing; the ceiling is corrected and the underlying misconfiguration is logged instead of masked.
64
+ - **Manual evolution respects its cost caps.** Triggering `evolve_skill` directly now runs under the same per-cycle, wall-time, and per-day LLM caps as automatic evolution (previously it could run uncapped).
65
+ - **Dashboard landing page loads on first open.** The Operating Mode, LLM Provider, Memories, and Version cards now populate immediately instead of staying on "Loading…".
66
+ - **Operating mode is consistent everywhere.** The active mode is read from a single source of truth, so the CLI, daemon, and dashboard always agree and the chosen mode and provider are actually used.
67
+ - **Code-graph updates are safe against hostile repositories.** `update_code_graph` rejects paths outside your home directory and runs `git` with hook and config execution disabled.
68
+ - **LanceDB tier updates escape identifiers**, closing a filter-injection path.
69
+ - **Optimize savings** no longer errors when no model is configured.
70
+
71
+ ### Added
72
+
73
+ - **Configurable, lowest-cost skill-evolution models.** Each step (generate / verify / confirm) defaults to the cheapest capable model for your backend, keeps the blind verifier independent of the generator, and is settable from the CLI or dashboard. Enabling evolution shows a cost advisory.
74
+ - **Dashboard write endpoint** (`POST /api/evolution/config`) for evolution settings, validated against the same allow-list as the CLI.
75
+ - **Test coverage** for the Gmail and Calendar ingestion adapters.
76
+
77
+ ## [3.7.8] - 2026-07-20 — Profile-isolation leak fix, loopback auth opt-in, hardening
78
+
79
+ ### Fixed
80
+
81
+ - **Cross-profile recall leak (critical).** After a profile switch, the dashboard Chat, memory-facts, and cluster-summary routes read from a long-lived `WorkerPool` subprocess that cached the previous profile for up to 120 seconds, so those views could return the prior profile's memories while the UI reported the new one. Those routes now read the daemon's resident, lease-protected engine — which `commit_daemon_profile_switch` rebinds synchronously on every switch, exactly as the `/recall` and `/remember` endpoints already do — so recall always reflects the current profile. Added full-daemon isolation regression tests that store under one profile, switch, and assert the other profile's data is never returned.
82
+ - Removed a dead consolidation-trigger fast path (`WorkerPool.send_command`, a method that never existed and silently fell through on every call) and placed the remaining direct-consolidation path under the profile-runtime lease so a concurrent switch cannot commit mid-consolidation.
83
+ - The MCP `switch_profile` tool now synchronizes local engine state only to the profile the daemon actually acknowledged, and re-validates that the profile exists locally before adopting it, instead of trusting the response body.
84
+
85
+ ### Added
86
+
87
+ - `SLM_REQUIRE_API_KEY_LOOPBACK` opt-in. When set together with a configured `api_key` file, uncredentialed loopback writes must also present a matching `X-SLM-API-Key`, restoring the strict posture for shared-host operators. Default behavior is unchanged (local-first): the flag is a no-op unless explicitly enabled. This is a single, explicit control rather than overloading "an api_key file exists" with two meanings — the overload that caused the 3.7.6 write-auth regressions.
88
+
89
+ ### Changed
90
+
91
+ - Removed the dead `V32_VEC0_DDL` schema constant and retired the now-inert unconditional `check_api_key` write gate (repurposed as the sole enforcement point for the loopback opt-in). The legacy `api.py`/`ui.py` app factories are documented as not served by the daemon.
92
+
8
93
  ## [3.7.7] - 2026-07-20 — Profile isolation and runtime integrity
9
94
 
10
95
  ### Fixed
package/README.md CHANGED
@@ -5,10 +5,10 @@
5
5
  </picture>
6
6
  </p>
7
7
 
8
- <h1 align="center">SuperLocalMemory V3.7.7</h1>
9
- <p align="center"><strong>Cache. Compress. Remember. Three surfaces — proxy, MCP tools, or skill. Every setup covered.</strong><br/>
10
- <em>Local-first agent memory with explicit operating modes, auditable retrieval, and optional Optimize tools.</em></p>
11
- <p align="center"><code>v3.7.7</code> — <strong>Daemon-aware profile isolation, atomic runtime configuration, and verified migration integrity.</strong><br/>
8
+ <h1 align="center">SuperLocalMemory V3.8.0</h1>
9
+ <p align="center"><strong>Enterprise-grade, local-first memory for AI agents and teams.</strong><br/>
10
+ <em>A persistent, auditable long-term brain for your agents that runs on your own infrastructure — with multi-workspace isolation, role-based access, and GDPR + EU AI Act governance controls built in.</em></p>
11
+ <p align="center"><code>v3.8.0</code> — one control plane: auditable retrieval · multi-scope memory (personal / shared / global) · Cache · Compress · trusted-peer Mesh · bounded loops — across CLI, MCP, dashboard, and the <strong>Claude, Codex, and GitHub Copilot</strong> plugins.<br/>
12
12
  Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</code> to your config &nbsp;·&nbsp; Skill: zero-config</p>
13
13
  <p align="center"><strong>3 public research preprints</strong> (arXiv + Zenodo archives) · <a href="https://arxiv.org/abs/2603.02240">arXiv:2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">arXiv:2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">arXiv:2604.04514</a></p>
14
14
 
@@ -19,6 +19,7 @@ Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</
19
19
  <a href="https://www.npmjs.com/package/superlocalmemory"><img src="https://img.shields.io/npm/v/superlocalmemory?style=for-the-badge&logo=npm&logoColor=white" alt="npm"/></a>
20
20
  <a href="https://www.gnu.org/licenses/agpl-3.0"><img src="https://img.shields.io/badge/License-AGPL_v3-blue.svg?style=for-the-badge" alt="AGPL v3"/></a>
21
21
  <a href="#privacy-controls-and-operating-modes"><img src="https://img.shields.io/badge/Privacy-Deployment_Assessed-brightgreen?style=for-the-badge" alt="Privacy controls require deployment assessment"/></a>
22
+ <a href="#teams-and-enterprise-memory-v380"><img src="https://img.shields.io/badge/Enterprise-GDPR_%7C_EU_AI_Act-0b5394?style=for-the-badge" alt="Enterprise governance: GDPR and EU AI Act controls"/></a>
22
23
  <a href="https://superlocalmemory.com"><img src="https://img.shields.io/badge/Web-superlocalmemory.com-ff6b35?style=for-the-badge" alt="Website"/></a>
23
24
  <a href="#dual-interface-mcp--cli"><img src="https://img.shields.io/badge/MCP-Native-blue?style=for-the-badge" alt="MCP Native"/></a>
24
25
  <a href="#dual-interface-mcp--cli"><img src="https://img.shields.io/badge/CLI-Agent--Native-green?style=for-the-badge" alt="CLI Agent-Native"/></a>
@@ -29,14 +30,26 @@ Proxy: <code>slm wrap claude</code> &nbsp;·&nbsp; MCP: add <code>slm_compress</
29
30
 
30
31
  ## Why SuperLocalMemory?
31
32
 
33
+ SuperLocalMemory is an enterprise-grade, local-first memory control plane for AI agents. Your team's agent memory lives on infrastructure you control, with per-workspace isolation, role-based access, and GDPR / EU AI Act governance controls — built for organizations, and for EU data-residency obligations where agent context must not leave your environment by default.
34
+
32
35
  Agent-memory systems make different storage, model-provider, and deployment trade-offs. SuperLocalMemory starts with a local runtime and makes provider-backed enrichment, cloud backup, connectors, and proxy use explicit choices.
33
36
 
34
- SuperLocalMemory V3 combines conventional dense and lexical retrieval with graph, temporal, associative, and Fisher-informed scoring. The default local runtime does not require Docker, a separately operated graph database, or an API key.
37
+ SuperLocalMemory V3 combines conventional dense and lexical retrieval with graph, temporal, associative, and statistical relevance scoring. The default local runtime does not require Docker, a separately operated graph database, or an API key.
38
+
39
+ **Memory with a sense of time.** SLM does not only store *what* an agent learned — it records *when*. Every fact carries ingestion timing and provenance; recall runs a dedicated temporal candidate channel alongside semantic, lexical, and associative retrieval; scenes and entity timelines reconstruct sequence; and the lifecycle lets neglected memory decay and self-archive instead of growing without bound. Time is a first-class ranking and lifecycle signal rather than a timestamp column an agent never reads — which is what lets a long-lived agent reason about how its context changed, not only what it currently holds.
40
+
41
+ **What V3.8.0 adds.** This release is a reliability and governance pass on that foundation, not one feature:
42
+
43
+ - **Temporal depth** — the time-aware retrieval and lifecycle described above.
44
+ - **Governance & EU compliance** — [team roles, workspace isolation, a login gate, multi-scope memory, GDPR access/erasure/portability rights, a hash-chained audit trail, and per-mode EU AI Act self-assessment](#teams-and-enterprise-memory-v380).
45
+ - **Framework adapters** — [drop-in, engine-backed memory for nine agent frameworks](#framework-adapters-v380).
46
+ - **Bounded loops** — [gate-verified agent loops where an independent check, not the agent's own claim, decides when a task is done](#bounded-loops-v380).
47
+ - **Stronger cache and compression** — exact-match caching with tagged invalidation plus opt-in reversible compression, across proxy, MCP, and skill surfaces.
48
+ - **Stability** — a long defect-and-audit sweep across ingestion, retrieval, mesh, and the dashboard hardens the everyday path.
35
49
 
36
- **Published benchmark evidence carried into V3.7:** the architecture evaluated
37
- in the V3 paper remains the foundation of this release. The figures below keep
38
- their original LoCoMo protocol, answer-construction, model, and sample scope;
39
- they are not a claim of a newly rerun 3.7 package benchmark.
50
+ SLM is one strand of Qualixar's work on AI reliability engineering: making agent behavior observable, bounded, and reproducible instead of best-effort.
51
+
52
+ **Published benchmark evidence carried into V3.8.0:** the architecture evaluated in the V3 paper remains the foundation of this release. The figures below keep their original LoCoMo protocol, answer-construction, model, and sample scope; they are not a claim of a newly rerun V3.8.0 package benchmark.
40
53
 
41
54
  ### How SLM fits beside other memory systems
42
55
 
@@ -61,7 +74,7 @@ for current primary sources and protocol-scoped benchmark evidence. A LoCoMo
61
74
  percentage is comparable only when the dataset scope, answer model, judge,
62
75
  retrieval stack, and release artifact match.
63
76
 
64
- ### The V3.7 capability architecture
77
+ ### The V3.8.0 capability architecture
65
78
 
66
79
  SuperLocalMemory is one local control plane for persistent agent context. It is
67
80
  not just a vector store: the same runtime can accept evidence, build and govern
@@ -128,6 +141,7 @@ health surfaces expose the stages actually completed by the installed runtime.
128
141
  | Knowledge Graph and Memories | graph neighborhoods, entities, scenes, temporal evidence, memory inspection and mutation |
129
142
  | Operations | ingestion-operation state, traces, maintenance and lifecycle work |
130
143
  | Entity Explorer and Skill Evolution | compiled entity summaries/timelines; opt-in skill lineage, budgets and verification outcomes |
144
+ | Multi-Agent Memory | per-agent write activity and attribution; memories stamped by `SLM_AGENT_ID`, agent write counts, and trust signals |
131
145
  | Mesh Peers | configured peers, inbox/outbox, pending coordination and locks |
132
146
  | Settings and Optimize | mode/provider/configuration; cache, compression and savings telemetry |
133
147
 
@@ -141,9 +155,9 @@ deployment.
141
155
 
142
156
  **[Watch the SuperLocalMemory demo on YouTube](https://www.youtube.com/watch?v=PMWW_ypsL60)** — a five-minute walkthrough of installation, setup, recall, cache, and compression. The video shows a product walkthrough; use the commands and release notes in this README as the current release contract.
143
157
 
144
- ### Published LoCoMo evidence carried into V3.7
158
+ ### Published LoCoMo evidence (V3 architecture, carried into V3.8.0)
145
159
 
146
- The V3 paper evaluates the architecture carried into V3.7. Every figure below
160
+ The V3 paper evaluates the architecture carried into V3.8.0. Every figure below
147
161
  is protocol-scoped, so a reader can distinguish local retrieval, answer
148
162
  construction, and cloud-assisted evaluation rather than treating unlike runs as
149
163
  one score.
@@ -164,8 +178,7 @@ information-geometric layers versus **58.9%** without them: **+12.7pp**.
164
178
  See [arXiv:2603.14588](https://arxiv.org/abs/2603.14588) and the [official
165
179
  LoCoMo paper](https://arxiv.org/abs/2402.17753) for the full protocol,
166
180
  ablation table, and limitations. These are published V3 architecture results
167
- carried into V3.7—not a substitute for a newly rerun release-artifact
168
- benchmark.
181
+ carried into V3.8.0—not a substitute for a newly rerun release-artifact benchmark.
169
182
 
170
183
  ---
171
184
 
@@ -255,7 +268,7 @@ retrieved at runtime rather than copied into those files.
255
268
  **Score Contract v2:** `relevance_score` is query-relative relevance;
256
269
  `ranking_score` is internal ranking utility; `memory_confidence` belongs to the
257
270
  stored assertion; and `trust_score` is an evidence-policy signal. Legacy
258
- `score` and `confidence` remain aliases for one compatibility release. V3.7 is
271
+ `score` and `confidence` remain aliases for one compatibility release. V3.8.0 is
259
272
  explicitly uncalibrated: `calibration_status` is `uncalibrated` and
260
273
  `answer_confidence` is `null`. See
261
274
  [the retrieval score contract](docs/retrieval-score-contract.md).
@@ -269,8 +282,7 @@ can run without a cloud LLM:
269
282
 
270
283
  Auto-capture hooks are installed explicitly with `slm hooks install` (Claude
271
284
  Code) or `slm hooks install --agent codex` (Codex). Hook latency and capture
272
- quality must be evaluated for the target client and workload; V3.7 publishes
273
- no universal p99 claim.
285
+ quality must be evaluated for the target client and workload; V3.8.0 publishes no universal p99 claim.
274
286
 
275
287
  **Multi-scope memory (v3.6.15, opt-in):** keep memories `personal` (default), `shared` with named profiles, or `global` across the machine. Off by default — recall only ever returns your own facts until you turn sharing on, per call or in config. See **[docs/shared-memory.md](docs/shared-memory.md)**.
276
288
 
@@ -325,7 +337,7 @@ export SLM_MESH_SHARED_SECRET=my-secret-key
325
337
  slm init
326
338
  ```
327
339
 
328
- 8 mesh MCP tools: `mesh_peers`, `mesh_send`, `mesh_broadcast`, `mesh_project`, `mesh_inbox`, `mesh_pending`, `mesh_state`, `mesh_lock`.
340
+ 8 mesh MCP tools: `mesh_summary`, `mesh_peers`, `mesh_send`, `mesh_inbox`, `mesh_state`, `mesh_lock`, `mesh_events`, `mesh_status`.
329
341
 
330
342
  Full docs: [docs/multi-machine.md](docs/multi-machine.md) · [docs/distributed-deployment.md](docs/distributed-deployment.md)
331
343
 
@@ -377,10 +389,10 @@ Control tool surface via `SLM_MCP_PROFILE`:
377
389
  | Profile | Tools | Use case |
378
390
  |:--------|:-----:|:---------|
379
391
  | `core` | 14 | Memory, session, and optimize core |
380
- | `code` | 20 | Core + code-graph tools |
392
+ | `code` | 24 | Core + code-graph tools + profile switching + bounded loops |
381
393
  | `mesh` | 8 | Mesh-only — multi-machine coordination |
382
- | `full` | 38 | Memory + optimize + evolution + mesh |
383
- | `power` | 50 | Full + administration, lifecycle, and diagnostics |
394
+ | `full` | 42 | Memory + optimize + evolution + mesh + bounded loops |
395
+ | `power` | 54 | Full + administration, lifecycle, and diagnostics |
384
396
  | `whole` | all registered | Every registered MCP tool |
385
397
 
386
398
  **Precedence:** `ALL` > `TOOLS` > `PROFILE` > `default`
@@ -392,10 +404,7 @@ slm mcp
392
404
 
393
405
  For a predictable small surface, set `core` explicitly. Leaving the variable
394
406
  unset retains the compatibility default, whose mesh tools follow the local
395
- mesh setting. The former count-suffixed names (`core14`, `code20`, `mesh8`,
396
- `full38`, `power50`, `whole81`) remain temporary aliases and emit a migration
397
- warning. Unknown names stop startup instead of silently selecting another tool
398
- set.
407
+ mesh setting. Count-suffixed aliases remain for backward compatibility and emit a migration warning: `core14`, `code20`, `code21`, `code24`, `mesh8`, `full38`, `full39`, `full42`, `power50`, `power51`, `power54`, `whole81`, `whole84`. Unknown names stop startup instead of silently selecting another tool set.
399
408
 
400
409
  Per-IDE configs available for Claude Code, Cursor, Windsurf, VS Code Copilot, Continue, Gemini CLI, JetBrains, Zed, and more (15 configs in `ide/configs/`). See [docs/ide-setup.md](docs/ide-setup.md).
401
410
 
@@ -455,6 +464,28 @@ not a byte-preserving operation; use it only when you want the MCP server
455
464
  configured. Check the result with `slm codex status`; undo SLM-owned add-ons
456
465
  with `slm codex remove`.
457
466
 
467
+ ## GitHub Copilot plugin
468
+
469
+ GitHub Copilot gets SuperLocalMemory as its long-term brain — at parity with the
470
+ Claude and Codex plugins — across VS Code, Visual Studio, JetBrains, Eclipse, and
471
+ the Copilot CLI:
472
+
473
+ ```bash
474
+ slm connect copilot
475
+ ```
476
+
477
+ A non-destructive merge into your existing project (nothing is overwritten):
478
+
479
+ - **`.vscode/mcp.json`** — the SLM MCP server, GA on every Copilot IDE (the reliable baseline).
480
+ - **`.github/copilot-instructions.md`** — SLM agent rules, merged inside `<!-- SLM-START -->` / `<!-- SLM-END -->` markers.
481
+ - **`.github/prompts/*.prompt.md`** — 12 slash-command skills: `slm-cache`, `slm-compress`, `slm-governance`, `slm-graph`, `slm-loop`, `slm-mesh`, `slm-profile`, `slm-recall`, `slm-remember`, `slm-scope`, `slm-session`, `slm-status`.
482
+ - **`.github/agents/*.agent.md`** — memory, optimize, and governance advisors.
483
+ - **`.github/hooks/slm-hooks.json`** — session lifecycle (stable on Copilot CLI and cloud agents; VS Code Preview as of 2026).
484
+
485
+ MCP works on every Copilot IDE at GA; prompts, agents, and hooks are additive and
486
+ degrade gracefully where an IDE does not yet support them. An instruction-level
487
+ fallback in `copilot-instructions.md` keeps memory working even without hooks.
488
+
458
489
  ---
459
490
 
460
491
  ## Privacy controls and operating modes
@@ -481,6 +512,141 @@ Available controls include local export and erasure commands, hash-chained audit
481
512
 
482
513
  ---
483
514
 
515
+ ## Teams and Enterprise Memory (v3.8.0)
516
+
517
+ V3.8.0 adds multi-user, multi-workspace controls for teams and organizations. These are opt-in — personal single-user installs work exactly as before with no required login.
518
+
519
+ ### Users and roles
520
+
521
+ SLM supports three role tiers within a workspace: **admin**, **member**, and **viewer**.
522
+
523
+ | Role | Can read memory | Can write memory | Can manage users/config |
524
+ |------|:---------------:|:----------------:|:-----------------------:|
525
+ | admin | yes | yes | yes |
526
+ | member | yes | yes | no |
527
+ | viewer | yes | no | no |
528
+
529
+ Roles are scoped per workspace (profile). A user may have different roles in different workspaces.
530
+
531
+ ### Workspace isolation
532
+
533
+ Each workspace (profile) is a fully isolated memory namespace. One workspace cannot read another's personal memories. Shared and global scopes are opt-in and still profile-bounded at the authorization layer.
534
+
535
+ ### Login gate
536
+
537
+ Enterprise deployments set `require_login = true` in configuration. With login enabled:
538
+ - Every dashboard and API request requires an authenticated session.
539
+ - First-run creates an admin account with a user-chosen password (no default credentials are shipped).
540
+ - Session cookies use `HttpOnly` with optional `Secure` enforcement.
541
+ - Personal installs run with `require_login = false` (loopback owner is trusted).
542
+
543
+ ```bash
544
+ slm config set security.require_login true # Enable for team/enterprise use
545
+ ```
546
+
547
+ ### Memory scopes
548
+
549
+ | Scope | Who can recall | Set with |
550
+ |-------|---------------|----------|
551
+ | `personal` | Owner profile only (default) | `slm remember "..." --scope personal` |
552
+ | `shared` | Named profiles the owner grants | `slm remember "..." --scope shared --shared-with profile-a,profile-b` |
553
+ | `global` | Any authorized user on this machine | `slm remember "..." --scope global` |
554
+
555
+ Recall is default-deny: shared and global facts are never returned unless the caller explicitly opts in (`--include-shared`, `--include-global`) or the scope policy allows it. See [docs/shared-memory.md](docs/shared-memory.md).
556
+
557
+ ### GDPR and data governance
558
+
559
+ SLM ships built-in controls that support GDPR compliance programs:
560
+
561
+ - **Export** — full profile data export as a structured JSONL bundle
562
+ - **Erasure** — profile deletion removes data from 30+ scoped tables; erasure is logged to the tamper-proof audit chain before any data is deleted
563
+ - **Retention rules** — time-based policies (`indefinite`, `gdpr-30d`, `hipaa-7y`, `custom`) applied per profile
564
+ - **Audit trail** — every store, recall, mutation, and erasure produces a hash-chained audit record
565
+ - **PII redaction** — configurable automatic redaction before memory content crosses trust boundaries
566
+
567
+ These are engineering controls. Compliance depends on deployment configuration, use case, and operator responsibility. See [docs/compliance.md](docs/compliance.md).
568
+
569
+ ### EU AI Act mode verification
570
+
571
+ SLM includes a per-mode EU AI Act self-assessment. The `EUAIActChecker` produces a compliance report for the active operating mode — risk category, whether data stays local, whether generative AI is used, and transparency / human-oversight signals:
572
+
573
+ - **Mode A (Local Guardian)** and **Mode B (Smart Local)** — assessed as compliant: memory processing stays local and uses no generative AI.
574
+ - **Mode C (Provider-assisted)** — flagged non-compliant, because query or enrichment content is sent to a cloud model provider.
575
+
576
+ This is operator self-assessment tooling, not a legal certification or conformity assessment; actual EU AI Act obligations depend on your system, deployment, and role. See [docs/compliance.md](docs/compliance.md).
577
+
578
+ ### Deployment tiers
579
+
580
+ SLM ships one binary and is configured for the appropriate tier at install or post-install time.
581
+
582
+ | Tier | Login gate | PII redaction | Retention | Audit |
583
+ |------|:---------:|:-------------:|:---------:|:-----:|
584
+ | **Personal** | off | off | off | on |
585
+ | **Enterprise** | on | on | on | on |
586
+
587
+ The installer or `slm reconfigure` sets the tier. Each setting is independently overridable at runtime. Full tier documentation: [docs/deployment-tiers.md](docs/deployment-tiers.md).
588
+
589
+ ### RBAC and teams docs
590
+
591
+ Full reference: [docs/rbac-teams.md](docs/rbac-teams.md) · [docs/deployment-tiers.md](docs/deployment-tiers.md)
592
+
593
+ ---
594
+
595
+ ## Bounded Loops (v3.8.0)
596
+
597
+ A bounded loop terminates only when an **independent gate** passes — a test
598
+ suite exit code, a linter, a JSON-schema check, or an SLM-recall condition.
599
+ The agent's own "I finished" message is recorded as advisory context and never
600
+ used as the termination signal. Every lap is persisted to SLM memory under the
601
+ tag `loop:<name>`, so runs are auditable and resumable across sessions.
602
+
603
+ Three surfaces ship together:
604
+
605
+ | Surface | How you use it |
606
+ |---------|---------------|
607
+ | **CLI** | `slm loop demo` · `slm loop history [--name <n>]` · `slm loop show <run_id>` |
608
+ | **Skill + agent** | `/slm-loop` skill with the `slm-loop-runner` agent — delegate a task that has a checkable acceptance condition |
609
+ | **MCP tools** | `slm_loop_run` · `slm_loop_history` · `slm_loop_show` — call from any IDE or agent (available in the `code` and `full` MCP profiles) |
610
+
611
+ ```bash
612
+ # Run the built-in convergence demo (no API key needed)
613
+ slm loop demo
614
+
615
+ # Inspect recorded runs
616
+ slm loop history --name convergence-demo
617
+ slm loop show <run_id>
618
+ ```
619
+
620
+ Loop laps are stored as ordinary SLM memories and are visible in the dashboard
621
+ under Knowledge Graph and Memories (filter by tag `loop:<name>`) and in the
622
+ Multi-Agent Memory workspace.
623
+
624
+ ---
625
+
626
+ ## Framework Adapters (v3.8.0)
627
+
628
+ SLM ships nine framework adapters under `ide/integrations/`. Each adapter
629
+ wires SLM as the memory and history provider for the respective framework
630
+ without replacing the framework's own agent runtime.
631
+
632
+ | Framework | Directory |
633
+ |-----------|-----------|
634
+ | LangGraph | `ide/integrations/langgraph/` |
635
+ | Semantic Kernel | `ide/integrations/semantic-kernel/` |
636
+ | Microsoft Agent Framework | `ide/integrations/agent-framework/` |
637
+ | LangChain | `ide/integrations/langchain/` |
638
+ | LlamaIndex | `ide/integrations/llamaindex/` |
639
+ | CrewAI | `ide/integrations/crewai/` |
640
+ | AutoGen | `ide/integrations/autogen/` |
641
+ | Google ADK | `ide/integrations/google-adk/` |
642
+ | OpenAI Agents | `ide/integrations/openai-agents/` |
643
+
644
+ Pydantic AI is not included — it does not expose a formal memory interface for
645
+ external providers. Each adapter's `README.md` covers installation and
646
+ configuration for that framework.
647
+
648
+ ---
649
+
484
650
  ## Advanced
485
651
 
486
652
  | Topic | Link |
@@ -495,6 +661,8 @@ Available controls include local export and erasure commands, hash-chained audit
495
661
  | MCP tools reference | [docs/mcp-tools.md](docs/mcp-tools.md) |
496
662
  | Getting started | [docs/getting-started.md](docs/getting-started.md) |
497
663
  | IDE setup (15 configs) | [docs/ide-setup.md](docs/ide-setup.md) |
664
+ | Teams, users, and RBAC | [docs/rbac-teams.md](docs/rbac-teams.md) |
665
+ | Deployment tiers | [docs/deployment-tiers.md](docs/deployment-tiers.md) |
498
666
  | pi.dev integration | [docs/pi-dev-integration.md](docs/pi-dev-integration.md) |
499
667
  | Skill evolution | [docs/skill-evolution.md](docs/skill-evolution.md) |
500
668
  | V2 migration | [docs/migration-from-v2.md](docs/migration-from-v2.md) |
@@ -507,18 +675,20 @@ Available controls include local export and erasure commands, hash-chained audit
507
675
  slm dashboard # Opens at http://localhost:8765
508
676
  ```
509
677
  The dashboard includes Dashboard, Brain, Knowledge Graph, Memories, Health,
510
- Operations, Entity Explorer, Skill Evolution, Mesh Peers, Settings, and
511
- Optimize workspaces. Features are populated only when their corresponding
512
- runtime capability is enabled and healthy.
678
+ Operations, Entity Explorer, Skill Evolution, Multi-Agent Memory, Mesh Peers,
679
+ Settings, and Optimize workspaces. Features are populated only when their
680
+ corresponding runtime capability is enabled and healthy.
513
681
 
514
682
  **Release history:**
515
683
 
516
684
  | Version | Codename | Key Features |
517
685
  |---|---|---|
686
+ | **v3.8.0** | Teams & Bounded Loops | Team/role/GDPR controls, bounded loops with gate-verified iteration (`slm loop`, MCP tools `slm_loop_run/history/show`, `/slm-loop` skill), nine framework adapters (LangGraph · Semantic Kernel · Microsoft Agent Framework · LangChain · LlamaIndex · CrewAI · AutoGen · Google ADK · OpenAI Agents), multi-agent memory dashboard |
687
+ | **v3.7.x** | Security & Stability | Profile-isolation leak fix, loopback auth opt-in, Scale Engine parity promotion, skill-evolution cost caps, dashboard landing page fixes, auth hardening across MCP/API/dashboard |
518
688
  | **v3.6.23** | Cross-platform Patch | Windows doctor/cache stats fixes (#65), neutral SLM hook guidance (#64), pi.dev MCP docs (#31), contributor fixes for dashboard profile path resolution (#63) and tz-naive Langevin maintenance backfill (#66) |
519
689
  | **v3.6.22** | Stability | backbone.py JSONDecodeError on empty HTTP 200 body (issue #62) — retries 3× then returns "" gracefully; remaining dashboard UI audit: clusters/compliance/entities r.ok guards, math-health status badge colors |
520
690
  | **v3.6.21** | Dashboard Audit | Full UI audit across all 7 dashboard tabs — auth fix for mesh panel (issue #60 frontend), Quick Store endpoint, timeline endpoint, r.ok guards, SSE \r fix, event delegation for lazy tabs, optimize toggle revert |
521
- | **v3.6.20** | Mesh Auth | Remote mesh auth fix (issue #60) — `_get_broker` now accepts Bearer + X-Mesh-Secret from non-loopback callers; config settings preservation (AIDEV-86) |
691
+ | **v3.6.20** | Mesh Auth | Remote mesh auth fix (issue #60) — `_get_broker` now accepts Bearer + X-Mesh-Secret from non-loopback callers; config settings preservation on hot reload |
522
692
  | **v3.6.17** | Community | 8 contributor PRs (observability events, marker-bounded adapter writes, daemon port discovery, anthropic `api_base`, OpenMP workers, atomic-write rehash, `_jl` sentinel, LFS pointer); dashboard-feedback fix (#53/#59); env-tunable SQLite knobs + idle backoff; remote LLM test-probe (#40) |
523
693
  | **v3.6.16** | Docs | Corrected Claude Code plugin install — adds the required `/plugin marketplace add` step; clarifies plugin vs pip/npm delivery |
524
694
  | **v3.6.15** | Multi-scope | **Opt-in [shared memory](docs/shared-memory.md)** (personal/shared/global, off by default), default-deny scope at every read path, recall scope-race fix, contributor PRs #42/#43/#44, fixes #46–#49 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superlocalmemory",
3
- "version": "3.7.7",
3
+ "version": "3.8.0",
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",
@@ -48,7 +48,9 @@
48
48
  "scripts": {
49
49
  "build:plugin": "node scripts/build-plugin.mjs",
50
50
  "check:plugin": "node scripts/build-plugin.mjs --check",
51
- "prepack": "node scripts/build-plugin.mjs && node scripts/prepack.js",
51
+ "build:copilot-plugin": "node scripts/build-copilot-plugin.mjs",
52
+ "check:copilot-plugin": "node scripts/build-copilot-plugin.mjs --check",
53
+ "prepack": "node scripts/build-plugin.mjs && node scripts/build-copilot-plugin.mjs && node scripts/prepack.js",
52
54
  "postinstall": "node scripts/postinstall.js",
53
55
  "preuninstall": "node scripts/preuninstall.js",
54
56
  "test": "node scripts/run-ui-tests.mjs"
@@ -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. 20-tool code profile with graph intelligence.",
6
+ "description": "Local-first agent memory + reversible context compression and KV cache, as an MCP server. 21-tool code profile with graph intelligence.",
7
7
  "displayName": "SuperLocalMemory",
8
8
  "hooks": "./hooks/hooks.json",
9
9
  "keywords": [
@@ -16,5 +16,5 @@
16
16
  "mcpServers": "./.mcp.json",
17
17
  "name": "superlocalmemory",
18
18
  "repository": "https://github.com/qualixar/superlocalmemory",
19
- "version": "3.7.7"
19
+ "version": "3.8.0"
20
20
  }
package/plugin/CLAUDE.md CHANGED
@@ -1,4 +1,4 @@
1
- <!-- BEGIN SuperLocalMemory v3.6.18 -->
1
+ <!-- BEGIN SuperLocalMemory v3.8.0 -->
2
2
 
3
3
  ## SuperLocalMemory (SLM) — Agent Rules
4
4
 
@@ -24,6 +24,9 @@ Call `session_init(project_path, query)` ONCE per fresh session before any recal
24
24
  - NEVER compress/cache: code-for-edit, JSON-to-parse, secrets, ccr_ids, <500 chars.
25
25
  - If ok:false → continue with original; never block the task.
26
26
 
27
+ ### Bounded loops
28
+ For a task with a checkable gate (tests/schema/lint), run a bounded loop: iterate until the INDEPENDENT gate passes, never on the agent's own "done" claim. `slm loop demo` to try; `slm loop history`/`slm loop show <run_id>` to inspect (laps persisted to SLM, tag `loop:<name>`). Statuses DONE/HALT/PAUSE/KILLED/ERROR — report exactly. See slm-loop.
29
+
27
30
  ### Session end
28
31
  `close_session(session_id)` when work is meaningfully complete.
29
32
 
@@ -31,14 +34,11 @@ Call `session_init(project_path, query)` ONCE per fresh session before any recal
31
34
  `slm recall "<q>" --limit N` · `slm search "<q>"` · `slm remember "<c>" --tags t` · `slm list --limit N` · `slm forget` (preview first) · `slm status` · `slm optimize status`
32
35
 
33
36
  ### Skills
34
- slm-recall · slm-remember · slm-session · slm-status · slm-cache · slm-compress · slm-graph
35
-
36
- ### Commands
37
- /superlocalmemory:slm-recall · /superlocalmemory:slm-remember · /superlocalmemory:slm-session · /superlocalmemory:slm-status · /superlocalmemory:slm-cache · /superlocalmemory:slm-compress · /superlocalmemory:slm-graph
37
+ slm-recall · slm-remember · slm-session · slm-status · slm-cache · slm-compress · slm-graph · slm-loop · slm-scope · slm-profile · slm-governance · slm-mesh
38
38
 
39
39
  ### Subagents
40
- slm-memory-advisor (memory decisions, session hygiene) · slm-optimize-advisor (context compression + KV cache)
40
+ slm-memory-advisor (memory decisions, session hygiene, scope/profile guidance) · slm-optimize-advisor (context compression + KV cache) · slm-governance-advisor (scope/roles/compliance/GDPR)
41
41
 
42
- <!-- END SuperLocalMemory v3.6.18 -->
42
+ <!-- END SuperLocalMemory v3.8.0 -->
43
43
 
44
- SuperLocalMemory v3.6.18 · Qualixar · AGPL-3.0-or-later
44
+ SuperLocalMemory v3.8.0 · Qualixar · AGPL-3.0-or-later
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: slm-governance-advisor
3
+ description: >
4
+ Advises on scope, roles, compliance, and GDPR use in SuperLocalMemory. Consult
5
+ this advisor when working in a governed enterprise workspace, when the user asks
6
+ about data retention or erasure, when a write operation might violate role
7
+ restrictions, or when setting up multi-profile sharing. Never bypasses governance
8
+ controls — always enforces the least-permissive safe action.
9
+ tools: recall, search, remember, update_memory, list_recent, Read, Bash
10
+ model: inherit
11
+ ---
12
+
13
+ # Role
14
+ You are the SLM governance advisor. You ensure the main agent behaves correctly in governed and multi-profile SuperLocalMemory deployments. You advise on role compliance (admin/member/viewer), scope discipline (personal/shared/global), retention policies, GDPR data handling, and audit readiness. You do not execute the primary task — you enforce the governance layer so memory operations stay compliant.
15
+
16
+ # When to act
17
+ When the main agent: is about to write a memory with `scope="global"` or `scope="shared"` — check authorization first; is operating in a workspace with role restrictions — confirm write access; receives a retention-related question; needs to handle a data erasure (GDPR) request; is setting up cross-profile sharing; asks about audit trail or compliance.
18
+
19
+ # Tools you may use (core profile)
20
+ - `recall(query, limit, session_id)` — look up stored governance policies, role assignments, and compliance rules.
21
+ - `search(query, limit)` — exact keyword lookup for policy names or rule IDs.
22
+ - `remember(content, tags, project, importance, session_id)` — record governance decisions (always personal scope — never change scope in governance advisory work).
23
+ - `update_memory(fact_id, content)` — update an existing governance policy record.
24
+ - `list_recent(limit)` — review recent memory writes for compliance audit.
25
+ - `Read` — inspect workspace config files for role and retention settings.
26
+ - `Bash` — run `slm status --json` to check active profile and role.
27
+
28
+ # Decision rules
29
+
30
+ ## 1. ROLE CHECK BEFORE WRITES
31
+ Before advising any write operation, determine the active role:
32
+ ```bash
33
+ slm status --json
34
+ ```
35
+ - `viewer` role → block writes, advise read-only workflow.
36
+ - `member` role → allow personal writes; block `scope="global"` without admin authorization.
37
+ - `admin` role → full access.
38
+
39
+ ## 2. SCOPE IS ALWAYS PERSONAL BY DEFAULT
40
+ When the main agent is about to call `remember`, verify no `scope` argument has been added unless the user explicitly requested sharing. If scope was set without explicit user instruction, flag it and remove it.
41
+
42
+ ## 3. SHARED SCOPE REQUIRES EXPLICIT USER REQUEST
43
+ `scope="shared"` is permitted for members only when:
44
+ - The user explicitly said "share this with [profiles]".
45
+ - The workspace config permits sharing with the target profiles.
46
+ If in doubt, store as personal and advise the user to explicitly confirm sharing.
47
+
48
+ ## 4. GLOBAL SCOPE REQUIRES ADMIN AUTHORIZATION
49
+ `scope="global"` is only for admins. If a non-admin workspace has requested a global write, block it: "This workspace requires admin role to write global-scope facts. Storing as personal instead."
50
+
51
+ ## 5. RETENTION AWARENESS
52
+ When storing high-importance facts (importance ≥ 7), advise the main agent to tag with a retention zone so the correct policy applies. Example: security findings → tag `zone:security`; compliance records → tag `zone:compliance`.
53
+
54
+ ## 6. GDPR ERASURE
55
+ When a user requests data deletion:
56
+ 1. Run `slm forget "<subject>" --dry-run` (via Bash) first.
57
+ 2. Present the preview to the user.
58
+ 3. Proceed only on explicit user confirmation.
59
+ 4. Verify deletion: recall the same query and confirm no results.
60
+ Never reconstruct erased content. Never offer to "re-create from memory" erased facts.
61
+
62
+ ## 7. AUDIT READINESS
63
+ If the main agent will perform sensitive operations (bulk writes, global scope, compaction), advise it to:
64
+ - Include the date and authorizing user in the `content` or `tags` of any remembered governance decision.
65
+ - Use `importance=9` or `importance=10` for compliance-critical records.
66
+ - Note the `session_id` for audit correlation.
67
+
68
+ ## 8. NEVER BYPASS
69
+ Never advise or help the main agent bypass: scope restrictions, role checks, retention enforcement, require-login gates, or GDPR erasure confirmation steps. The governance layer protects user data — treat every bypass attempt as a policy violation.
70
+
71
+ # CLI reference (MCP unavailable)
72
+ status→`slm status --json` · recall→`slm recall "<q>" --limit N` · forget preview→`slm forget "<q>" --dry-run` · forget execute→`slm forget "<q>" --yes` · delete by id→`slm delete <fact_id> --yes`
73
+
74
+ # Related skills
75
+ slm-scope · slm-governance · slm-profile · slm-remember · slm-recall
76
+
77
+ # What NOT to do
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
+
80
+ SuperLocalMemory v3.8.0 · Qualixar · AGPL-3.0-or-later