superlocalmemory 3.4.19 → 3.4.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 (177) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +42 -34
  3. package/bin/slm +11 -0
  4. package/bin/slm.bat +12 -0
  5. package/package.json +4 -3
  6. package/pyproject.toml +4 -3
  7. package/scripts/build-slm-hook.ps1 +40 -0
  8. package/scripts/build-slm-hook.sh +45 -0
  9. package/scripts/build_entry.py +452 -0
  10. package/scripts/ci/stage5b_gate.sh +50 -0
  11. package/scripts/postinstall/validation.js +187 -0
  12. package/scripts/postinstall-interactive.js +756 -0
  13. package/scripts/postinstall_binary.js +287 -0
  14. package/scripts/release_manifest.py +273 -0
  15. package/scripts/slm-hook.spec +56 -0
  16. package/skills/slm-build-graph/SKILL.md +423 -0
  17. package/skills/slm-list-recent/SKILL.md +348 -0
  18. package/skills/slm-recall/SKILL.md +343 -0
  19. package/skills/slm-remember/SKILL.md +194 -0
  20. package/skills/slm-show-patterns/SKILL.md +224 -0
  21. package/skills/slm-status/SKILL.md +363 -0
  22. package/skills/slm-switch-profile/SKILL.md +442 -0
  23. package/src/superlocalmemory/cli/commands.py +254 -79
  24. package/src/superlocalmemory/cli/context_commands.py +192 -0
  25. package/src/superlocalmemory/cli/daemon.py +15 -1
  26. package/src/superlocalmemory/cli/db_migrate.py +80 -0
  27. package/src/superlocalmemory/cli/escape_hatch.py +220 -0
  28. package/src/superlocalmemory/cli/main.py +72 -1
  29. package/src/superlocalmemory/core/context_cache.py +397 -0
  30. package/src/superlocalmemory/core/engine.py +38 -2
  31. package/src/superlocalmemory/core/engine_wiring.py +1 -1
  32. package/src/superlocalmemory/core/ram_lock.py +111 -0
  33. package/src/superlocalmemory/core/recall_pipeline.py +433 -3
  34. package/src/superlocalmemory/core/recall_worker.py +8 -3
  35. package/src/superlocalmemory/core/security_primitives.py +635 -0
  36. package/src/superlocalmemory/core/shadow_router.py +319 -0
  37. package/src/superlocalmemory/core/slm_disabled.py +87 -0
  38. package/src/superlocalmemory/core/slmignore.py +125 -0
  39. package/src/superlocalmemory/core/topic_signature.py +143 -0
  40. package/src/superlocalmemory/core/worker_pool.py +14 -3
  41. package/src/superlocalmemory/encoding/cognitive_consolidator.py +2 -2
  42. package/src/superlocalmemory/evolution/budget.py +321 -0
  43. package/src/superlocalmemory/evolution/llm_dispatch.py +508 -0
  44. package/src/superlocalmemory/evolution/skill_evolver.py +144 -94
  45. package/src/superlocalmemory/hooks/_outcome_common.py +506 -0
  46. package/src/superlocalmemory/hooks/adapter_base.py +317 -0
  47. package/src/superlocalmemory/hooks/antigravity_adapter.py +192 -0
  48. package/src/superlocalmemory/hooks/claude_code_hooks.py +33 -1
  49. package/src/superlocalmemory/hooks/context_payload.py +312 -0
  50. package/src/superlocalmemory/hooks/copilot_adapter.py +154 -0
  51. package/src/superlocalmemory/hooks/cross_platform_connector.py +90 -0
  52. package/src/superlocalmemory/hooks/cursor_adapter.py +195 -0
  53. package/src/superlocalmemory/hooks/hook_handlers.py +109 -8
  54. package/src/superlocalmemory/hooks/ide_connector.py +25 -2
  55. package/src/superlocalmemory/hooks/post_tool_async_hook.py +165 -0
  56. package/src/superlocalmemory/hooks/post_tool_outcome_hook.py +223 -0
  57. package/src/superlocalmemory/hooks/prewarm_auth.py +170 -0
  58. package/src/superlocalmemory/hooks/session_registry.py +186 -0
  59. package/src/superlocalmemory/hooks/stop_outcome_hook.py +134 -0
  60. package/src/superlocalmemory/hooks/sync_loop.py +114 -0
  61. package/src/superlocalmemory/hooks/user_prompt_hook.py +128 -0
  62. package/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +202 -0
  63. package/src/superlocalmemory/infra/backup.py +3 -3
  64. package/src/superlocalmemory/infra/cloud_backup.py +2 -2
  65. package/src/superlocalmemory/infra/event_bus.py +2 -2
  66. package/src/superlocalmemory/infra/webhook_dispatcher.py +3 -3
  67. package/src/superlocalmemory/learning/arm_catalog.py +99 -0
  68. package/src/superlocalmemory/learning/bandit.py +526 -0
  69. package/src/superlocalmemory/learning/bandit_cache.py +133 -0
  70. package/src/superlocalmemory/learning/behavioral.py +53 -1
  71. package/src/superlocalmemory/learning/consolidation_cycle.py +381 -0
  72. package/src/superlocalmemory/learning/consolidation_worker.py +188 -520
  73. package/src/superlocalmemory/learning/database.py +256 -0
  74. package/src/superlocalmemory/learning/dedup_hnsw.py +413 -0
  75. package/src/superlocalmemory/learning/ensemble.py +300 -0
  76. package/src/superlocalmemory/learning/fact_outcome_joins.py +207 -0
  77. package/src/superlocalmemory/learning/forgetting_scheduler.py +55 -0
  78. package/src/superlocalmemory/learning/hnsw_dedup.py +69 -0
  79. package/src/superlocalmemory/learning/labeler.py +87 -0
  80. package/src/superlocalmemory/learning/legacy_migration.py +277 -0
  81. package/src/superlocalmemory/learning/memory_merge.py +160 -0
  82. package/src/superlocalmemory/learning/model_cache.py +269 -0
  83. package/src/superlocalmemory/learning/model_rollback.py +278 -0
  84. package/src/superlocalmemory/learning/outcome_queue.py +284 -0
  85. package/src/superlocalmemory/learning/pattern_miner.py +415 -0
  86. package/src/superlocalmemory/learning/pattern_miner_constants.py +47 -0
  87. package/src/superlocalmemory/learning/ranker.py +225 -81
  88. package/src/superlocalmemory/learning/ranker_common.py +163 -0
  89. package/src/superlocalmemory/learning/ranker_retrain_legacy.py +202 -0
  90. package/src/superlocalmemory/learning/ranker_retrain_online.py +411 -0
  91. package/src/superlocalmemory/learning/reward.py +777 -0
  92. package/src/superlocalmemory/learning/reward_archive.py +210 -0
  93. package/src/superlocalmemory/learning/reward_boost.py +201 -0
  94. package/src/superlocalmemory/learning/reward_proxy.py +326 -0
  95. package/src/superlocalmemory/learning/shadow_test.py +524 -0
  96. package/src/superlocalmemory/learning/signal_worker.py +270 -0
  97. package/src/superlocalmemory/learning/signals.py +314 -0
  98. package/src/superlocalmemory/learning/trigram_index.py +547 -0
  99. package/src/superlocalmemory/mcp/server.py +5 -5
  100. package/src/superlocalmemory/mcp/tools_context.py +183 -0
  101. package/src/superlocalmemory/mcp/tools_core.py +92 -27
  102. package/src/superlocalmemory/parameterization/soft_prompt_generator.py +13 -0
  103. package/src/superlocalmemory/retrieval/engine.py +52 -0
  104. package/src/superlocalmemory/server/api.py +2 -2
  105. package/src/superlocalmemory/server/bandit_loops.py +140 -0
  106. package/src/superlocalmemory/server/middleware/__init__.py +11 -0
  107. package/src/superlocalmemory/server/middleware/security_headers.py +144 -0
  108. package/src/superlocalmemory/server/routes/backup.py +36 -13
  109. package/src/superlocalmemory/server/routes/behavioral.py +50 -19
  110. package/src/superlocalmemory/server/routes/brain.py +1234 -0
  111. package/src/superlocalmemory/server/routes/data_io.py +4 -4
  112. package/src/superlocalmemory/server/routes/events.py +2 -2
  113. package/src/superlocalmemory/server/routes/helpers.py +1 -1
  114. package/src/superlocalmemory/server/routes/learning.py +192 -7
  115. package/src/superlocalmemory/server/routes/memories.py +189 -1
  116. package/src/superlocalmemory/server/routes/prewarm.py +171 -0
  117. package/src/superlocalmemory/server/routes/profiles.py +3 -3
  118. package/src/superlocalmemory/server/routes/token.py +88 -0
  119. package/src/superlocalmemory/server/routes/ws.py +5 -5
  120. package/src/superlocalmemory/server/security_middleware.py +13 -7
  121. package/src/superlocalmemory/server/ui.py +2 -2
  122. package/src/superlocalmemory/server/unified_daemon.py +335 -3
  123. package/src/superlocalmemory/skills/slm-build-graph/SKILL.md +423 -0
  124. package/src/superlocalmemory/skills/slm-list-recent/SKILL.md +348 -0
  125. package/src/superlocalmemory/skills/slm-recall/SKILL.md +343 -0
  126. package/src/superlocalmemory/skills/slm-remember/SKILL.md +194 -0
  127. package/src/superlocalmemory/skills/slm-show-patterns/SKILL.md +224 -0
  128. package/src/superlocalmemory/skills/slm-status/SKILL.md +363 -0
  129. package/src/superlocalmemory/skills/slm-switch-profile/SKILL.md +442 -0
  130. package/src/superlocalmemory/storage/migration_runner.py +545 -0
  131. package/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +67 -0
  132. package/src/superlocalmemory/storage/migrations/M002_model_state_history.py +132 -0
  133. package/src/superlocalmemory/storage/migrations/M003_migration_log.py +38 -0
  134. package/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +46 -0
  135. package/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +75 -0
  136. package/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +75 -0
  137. package/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +63 -0
  138. package/src/superlocalmemory/storage/migrations/M009_model_lineage.py +54 -0
  139. package/src/superlocalmemory/storage/migrations/M010_evolution_config.py +75 -0
  140. package/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +87 -0
  141. package/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +72 -0
  142. package/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +55 -0
  143. package/src/superlocalmemory/storage/migrations/__init__.py +81 -0
  144. package/src/superlocalmemory/storage/models.py +4 -0
  145. package/src/superlocalmemory/ui/css/brain.css +409 -0
  146. package/src/superlocalmemory/ui/css/legacy-dashboard.css +645 -0
  147. package/src/superlocalmemory/ui/index.html +459 -1345
  148. package/src/superlocalmemory/ui/js/brain.js +1321 -0
  149. package/src/superlocalmemory/ui/js/clusters.js +123 -4
  150. package/src/superlocalmemory/ui/js/init.js +48 -39
  151. package/src/superlocalmemory/ui/js/memories.js +88 -2
  152. package/src/superlocalmemory/ui/js/modal.js +71 -1
  153. package/src/superlocalmemory/ui/js/ng-shell.js +101 -88
  154. package/src/superlocalmemory/ui/js/trust-dashboard.js +168 -25
  155. package/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +2018 -0
  156. package/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  157. package/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
  158. package/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +7 -0
  159. package/src/superlocalmemory/ui/vendor/bootstrap.min.css +6 -0
  160. package/src/superlocalmemory/ui/vendor/d3.v7.min.js +2 -0
  161. package/src/superlocalmemory/ui/vendor/graphology-library.min.js +2 -0
  162. package/src/superlocalmemory/ui/vendor/graphology.umd.min.js +2 -0
  163. package/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +8 -0
  164. package/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
  165. package/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
  166. package/src/superlocalmemory/ui/vendor/sigma.min.js +1 -0
  167. package/src/superlocalmemory/ui/js/behavioral.js +0 -447
  168. package/src/superlocalmemory/ui/js/graph-core.js +0 -447
  169. package/src/superlocalmemory/ui/js/graph-interactions.js +0 -351
  170. package/src/superlocalmemory/ui/js/learning.js +0 -435
  171. package/src/superlocalmemory/ui/js/patterns.js +0 -93
  172. package/src/superlocalmemory.egg-info/PKG-INFO +0 -647
  173. package/src/superlocalmemory.egg-info/SOURCES.txt +0 -335
  174. package/src/superlocalmemory.egg-info/dependency_links.txt +0 -1
  175. package/src/superlocalmemory.egg-info/entry_points.txt +0 -2
  176. package/src/superlocalmemory.egg-info/requires.txt +0 -58
  177. package/src/superlocalmemory.egg-info/top_level.txt +0 -1
package/CHANGELOG.md CHANGED
@@ -10,6 +10,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
10
10
 
11
11
  ---
12
12
 
13
+ ## [3.4.22] - 2026-04-18
14
+
15
+ Hardening release — correctness, stability, and security fixes.
16
+
17
+ ### Added
18
+ - `slm benchmark` plus escape-hatch commands (`disable`, `enable`,
19
+ `clear-cache`, `reconfigure`).
20
+ - One-time upgrade banner on first boot after install.
21
+
22
+ ### Changed
23
+ - Tighter defaults for the interactive installer.
24
+ - Licence: AGPL-3.0-or-later.
25
+ - Node.js prerequisite: ≥ 18.
26
+
27
+ ### Security
28
+ - Hardened redaction, path validation, and token handling per internal
29
+ audit. No end-user-visible behaviour change.
30
+
31
+ ### Compatibility
32
+ - Fully backward compatible. `atomic_facts` is never modified by any
33
+ migration. All upgrades are additive.
34
+
35
+ ---
36
+
13
37
  ## [3.4.19] - 2026-04-17
14
38
 
15
39
  ### Fixed
package/README.md CHANGED
@@ -3,12 +3,12 @@
3
3
  </p>
4
4
 
5
5
  <h1 align="center">SuperLocalMemory V3.4</h1>
6
- <p align="center"><strong>Every other AI forgets. Yours won't.</strong><br/><em>Infinite memory for Claude Code, Cursor, Windsurf & 17+ AI tools.</em></p>
7
- <p align="center"><code>v3.4.11</code> — Install once. Every session remembers the last. Automatically.</p>
8
- <p align="center"><strong>Backed by 3 peer-reviewed research papers</strong> · <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>
6
+ <p align="center"><strong>Every other AI forgets. Yours won't.</strong><br/><em>Infinite memory for Claude Code, Cursor, Windsurf, and any MCP-compatible AI client.</em></p>
7
+ <p align="center"><code>v3.4.21</code> — Install once. Every session remembers the last. Automatically.</p>
8
+ <p align="center"><strong>Backed by 3 published research papers</strong> (arXiv preprints + Zenodo-archived) · <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>
9
9
 
10
10
  <p align="center">
11
- <code>+16pp vs Mem0 (zero cloud)</code> &nbsp;·&nbsp; <code>85% Open-Domain (best of any system)</code> &nbsp;·&nbsp; <code>EU AI Act Ready</code>
11
+ <code>+10.6pp vs Mem0 zero-LLM</code> &nbsp;·&nbsp; <code>85% Open-Domain (best zero-LLM score)</code> &nbsp;·&nbsp; <code>EU AI Act Ready</code>
12
12
  </p>
13
13
 
14
14
  <p align="center">
@@ -16,7 +16,7 @@
16
16
  <a href="https://pypi.org/project/superlocalmemory/"><img src="https://img.shields.io/pypi/v/superlocalmemory?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI"/></a>
17
17
  <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>
18
18
  <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>
19
- <a href="#eu-ai-act-compliance"><img src="https://img.shields.io/badge/EU_AI_Act-Compliant-brightgreen?style=for-the-badge" alt="EU AI Act"/></a>
19
+ <a href="#eu-ai-act-compliance"><img src="https://img.shields.io/badge/EU_AI_Act-Design_Compliant-brightgreen?style=for-the-badge" alt="EU AI Act Design Compliant"/></a>
20
20
  <a href="https://superlocalmemory.com"><img src="https://img.shields.io/badge/Web-superlocalmemory.com-ff6b35?style=for-the-badge" alt="Website"/></a>
21
21
  <a href="#dual-interface-mcp--cli"><img src="https://img.shields.io/badge/MCP-Native-blue?style=for-the-badge" alt="MCP Native"/></a>
22
22
  <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>
@@ -30,22 +30,25 @@
30
30
 
31
31
  ## Why SuperLocalMemory?
32
32
 
33
- Every major AI memory system — Mem0, Zep, Letta, EverMemOS — sends your data to cloud LLMs for core operations. That means latency on every query, cost on every interaction, and after **August 2, 2026**, a compliance problem under the EU AI Act.
33
+ Every **hosted** AI memory platform — Mem0 Cloud, Zep Cloud, Letta Cloud, EverMemOS Cloud — sends your data to cloud LLMs by default. Their self-hosted variants exist (Mem0 OpenMemory, Letta self-hosted, Graphiti) but require Docker + a separate graph DB or Ollama config, and most still default to OpenAI until you flip env vars. After **August 2, 2026**, any of those cloud paths becomes a compliance problem under the EU AI Act.
34
34
 
35
- SuperLocalMemory V3 takes a different approach: **mathematics instead of cloud compute.** Three techniques from differential geometry, algebraic topology, and stochastic analysis replace the work that other systems need LLMs to do — similarity scoring, contradiction detection, and lifecycle management. The result is an agent memory that runs entirely on your machine, on CPU, with no API keys, and still outperforms funded alternatives.
35
+ SuperLocalMemory V3 takes a different approach: **mathematics instead of cloud compute.** Three techniques from differential geometry, algebraic topology, and stochastic analysis replace the work that other systems need LLMs to do — similarity scoring, contradiction detection, and lifecycle management. The result is an agent memory that ships local-first out of the box — no Docker, no graph DB, no API keys on CPU.
36
36
 
37
- **The numbers** (evaluated on [LoCoMo](https://arxiv.org/abs/2402.09714), the standard long-conversation memory benchmark):
37
+ **The numbers** (evaluated on [LoCoMo](https://arxiv.org/abs/2402.09714), the standard long-conversation memory benchmark). Published numbers as of April 2026:
38
38
 
39
- | System | Score | Cloud Required | Open Source | Funding |
40
- |:-------|:-----:|:--------------:|:-----------:|:-------:|
41
- | EverMemOS | 92.3% | Yes | No | |
42
- | Hindsight | 89.6% | Yes | No | |
43
- | **SLM V3 Mode C** | **87.7%** | Optional | **Yes (EL2)** | $0 |
44
- | Zep v3 | 85.2% | Yes | Deprecated | $35M |
45
- | **SLM V3 Mode A** | **74.8%** | **No** | **Yes (EL2)** | $0 |
46
- | Mem0 | 64.2% | Yes | Partial | $24M |
39
+ | System | Score | Config | Cloud LLM required? | Open Source | Source |
40
+ |:-------|:-----:|:-------|:-------------------:|:-----------:|:-------|
41
+ | EverMemOS | 93.05% | Cloud (proprietary) | Yes | Core only | [evermind.ai](https://evermind.ai/) (Feb 2026) |
42
+ | Hindsight (LoComo10) | 92.0% | Cloud | Yes | No | [benchmarks.hindsight.vectorize.io](https://benchmarks.hindsight.vectorize.io) (Apr 2026) |
43
+ | Mem0 (token-efficient) | 91.6% | Hybrid (Cohere/OpenAI) | Yes | Partial | [mem0.ai blog](https://mem0.ai/blog/mem0-the-token-efficient-memory-algorithm) (Apr 16 2026) |
44
+ | **SLM V3 Mode C** | **87.7%** | Local + optional LLM | Optional (Ollama OK) | **Yes (AGPL-3.0)** | In-house, repro script in `docs/benchmarks/` |
45
+ | Zep v3 Cloud | 85.2% | Cloud | Yes | Community deprecated | [getzep.com](https://www.getzep.com/) |
46
+ | **SLM V3 Mode A** | **74.8%** | **Local, CPU-only, zero-LLM** | **No** | **Yes (AGPL-3.0)** | In-house, repro script in `docs/benchmarks/` |
47
+ | Mem0 (zero-retrieval-LLM) | 64.2% | Local baseline | No | Partial | Mem0 paper, zero-LLM row |
47
48
 
48
- Mode A scores **74.8% with zero cloud dependency** outperforming Mem0 by 16 percentage points without a single API call. On open-domain questions, Mode A scores **85.0% the highest of any system in the evaluation**, including cloud-powered ones. Mode C reaches **87.7%**, matching enterprise cloud systems.
49
+ > **How to read this table.** Scores from different papers use different LoCoMo splits, judge models, and prompt variants. We do NOT claim these numbers are apples-to-apples across rows. The rows we re-ran in-house are marked "In-house"; cited rows link to the vendor's public source and date. Mode A is the only zero-LLM configuration in the list, so the comparison that is apples-to-apples is **Mode A 74.8% vs Mem0 zero-retrieval-LLM 64.2%** (+10.6pp). Mem0's 91.6% and EverMemOS's 93.05% use cloud LLMs; Mode C uses a local LLM (Ollama). BEAM-10M, the emerging successor benchmark, will be added in a future release.
50
+
51
+ **What Mode A is**: CPU-only, SQLite-only, zero-LLM retrieval pipeline on published LoCoMo questions. To the best of our knowledge it is the only publicly-released local-first memory that clears Mem0's zero-LLM baseline on this benchmark. If another fully-local system hits similar numbers, please open an issue so we can update the table.
49
52
 
50
53
  Mathematical layers contribute **+12.7 percentage points** on average across 6 conversations (n=832 questions), with up to **+19.9pp on the most challenging dialogues**. This isn't more compute — it's better math.
51
54
 
@@ -53,7 +56,8 @@ Mathematical layers contribute **+12.7 percentage points** on average across 6 c
53
56
 
54
57
  ---
55
58
 
56
- ## What's New in V3.3 — The Living Brain Evolves
59
+ <details>
60
+ <summary><strong>What's New in V3.3 — The Living Brain Evolves</strong> (click to expand)</summary>
57
61
 
58
62
  > V3.3 gives your memory a lifecycle. Memories strengthen when used, fade when neglected, compress when idle, and consolidate into reusable patterns — all automatically, all locally. Your agent gets smarter the longer it runs.
59
63
 
@@ -102,9 +106,9 @@ slm reap
102
106
  |:-------|:----:|:----:|:------:|
103
107
  | RAM usage (Mode A/B) | ~4GB | ~40MB | **100x reduction** |
104
108
  | Retrieval channels | 5 | 6 | +Hopfield completion |
105
- | MCP tools | 29 | 35 | +6 new |
109
+ | MCP tools (default) | 29 | 33 | +4 new (mesh set) |
106
110
  | CLI commands | 21 | 26 | +5 new |
107
- | Dashboard tabs | 20 | 23 | +3 new |
111
+ | Dashboard tabs | 17 | 17 | (H-22: Reward / Shadow / EvolutionCost tiles deferred to next cycle — data exposed via API today, see [DASHBOARD-COVERAGE.md](docs/DASHBOARD-COVERAGE.md)) |
108
112
  | API endpoints | 9 | 16 | +7 new |
109
113
 
110
114
  Embedding migration happens automatically when you switch modes — no manual steps needed.
@@ -139,6 +143,8 @@ slm config set v33_features.all true
139
143
 
140
144
  **Fully backward compatible.** All existing MCP tools, CLI commands, and configs work unchanged. New tables are created automatically on first run. No migration needed.
141
145
 
146
+ </details>
147
+
142
148
  ---
143
149
 
144
150
  <details>
@@ -197,11 +203,11 @@ slm status
197
203
  }
198
204
  ```
199
205
 
200
- 35 MCP tools + 7 resources available. Works with Claude Code, Cursor, Windsurf, VS Code Copilot, Continue, Cody, ChatGPT Desktop, Gemini CLI, JetBrains, Zed, and 17+ AI tools. **V3.3: Adaptive lifecycle, smart compression, and pattern learning.**
206
+ 33 MCP tools by default (+42 optional behind `SLM_MCP_ALL_TOOLS=1`) + 7 resources. Works with any MCP-compatible client — we ship templated configs for Claude Code, Cursor, Windsurf, VS Code Copilot, Continue, Cody, ChatGPT Desktop, Gemini CLI, JetBrains, Zed, and Antigravity (15 IDE configs in `ide/configs/`). **V3.3: Adaptive lifecycle, smart compression, and pattern learning.**
201
207
 
202
208
  ### Dual Interface: MCP + CLI
203
209
 
204
- SLM works everywhere -- from IDEs to CI pipelines to Docker containers. The only AI memory system with both MCP and agent-native CLI.
210
+ SLM works everywhere from IDEs to CI pipelines to Docker containers. Both the MCP server and the agent-native CLI are first-class, so the same backend serves IDE-side integrations and scripted automations.
205
211
 
206
212
  | Need | Use | Example |
207
213
  |------|-----|---------|
@@ -241,20 +247,19 @@ slm mode b # Local Ollama
241
247
  slm mode c # Cloud LLM
242
248
  ```
243
249
 
244
- **Mode A** is the only agent memory that operates with **zero cloud dependency** while achieving competitive retrieval accuracy on a standard benchmark. All data stays on your device. No API keys. No GPU. Runs on 2 vCPUs + 4GB RAM.
250
+ **Mode A** is, to the best of our knowledge, the only publicly-released agent memory that runs with zero cloud calls while clearing Mem0's published LoCoMo score. All data stays on your device. No API keys. No GPU. Runs on 2 vCPUs + 4GB RAM. If another fully-local system hits similar numbers, please open an issue — we'll update this line.
245
251
 
246
252
  ---
247
253
 
248
254
  ## Architecture
249
255
 
250
256
  ```
251
- Query ──► Strategy Classifier ──► 6 Parallel Channels:
257
+ Query ──► Strategy Classifier ──► 5 Parallel Channels:
252
258
  ├── Semantic (Fisher-Rao geodesic distance)
253
259
  ├── BM25 (keyword matching)
254
260
  ├── Entity Graph (spreading activation, 3 hops)
255
261
  ├── Temporal (date-aware retrieval)
256
- ├── Associative (multi-hop spreading activation)
257
- └── Hopfield (partial query completion)
262
+ └── Hopfield (partial-query completion / associative recall)
258
263
 
259
264
  RRF Fusion (k=60)
260
265
 
@@ -269,9 +274,9 @@ Query ──► Strategy Classifier ──► 6 Parallel Channels:
269
274
 
270
275
  Three novel contributions replace cloud LLM dependency with mathematical guarantees:
271
276
 
272
- 1. **Fisher-Rao Retrieval Metric** — Similarity scoring derived from the Fisher information structure of diagonal Gaussian families. Graduated ramp from cosine to geodesic distance over the first 10 accesses. The first application of information geometry to agent memory retrieval.
277
+ 1. **Fisher-Rao Retrieval Metric** — Similarity scoring derived from the Fisher information structure of diagonal Gaussian families. Graduated ramp from cosine to geodesic distance over the first 10 accesses. To the best of our knowledge, the first public application of information geometry specifically to agent memory retrieval — if prior work exists please open an issue so we can credit it.
273
278
 
274
- 2. **Sheaf Cohomology for Consistency** — Algebraic topology detects contradictions by computing coboundary norms on the knowledge graph. The first algebraic guarantee for contradiction detection in agent memory.
279
+ 2. **Sheaf Cohomology for Consistency** — Algebraic topology detects contradictions by computing coboundary norms on the knowledge graph. We are not aware of a prior production agent-memory system that computes sheaf-cohomology coboundary norms this way; corrections welcome.
275
280
 
276
281
  3. **Riemannian Langevin Lifecycle** — Memory positions evolve on the Poincare ball via discretized Langevin SDE. Frequently accessed memories stay active; neglected memories self-archive. No hardcoded thresholds.
277
282
 
@@ -343,7 +348,10 @@ Built-in compliance tools: GDPR Article 15/17 export + complete erasure, tamper-
343
348
  slm dashboard # Opens at http://localhost:8765
344
349
  ```
345
350
 
346
- **v3.4.4 "Neural Glass":** 21-tab sidebar dashboard with light + dark theme. Knowledge Graph (Sigma.js WebGL, community detection), Health Monitor, Entity Explorer (1,300+ entities), Mesh Peers (P2P agent communication), Ingestion Status (Gmail/Calendar/Transcript management), Privacy blur mode. Always-on daemon with auto-start. 8 mesh MCP tools built-in. Cross-platform: macOS + Windows + Linux. All data stays local.
351
+ **v3.4.4 "Neural Glass":** 17-tab sidebar dashboard with light + dark theme. Knowledge Graph (Sigma.js WebGL, community detection), Health Monitor, Entity Explorer (1,300+ entities), Mesh Peers (P2P agent communication), Ingestion Status (Gmail/Calendar/Transcript management), Privacy blur mode. Always-on daemon with auto-start. 8 mesh MCP tools built-in. Cross-platform: macOS + Windows + Linux. All data stays local.
352
+
353
+ <!-- UX-M1: link dashboard-coverage so users can find deferred Living Brain Evolution tiles -->
354
+ > **Living Brain Evolution visibility:** v3.4.21 ships the reward model, shadow test + online retrain, and evolution cost log via the REST API and `slm status --json`; the dedicated dashboard tiles are deferred to the next cycle. See [docs/DASHBOARD-COVERAGE.md](docs/DASHBOARD-COVERAGE.md) for endpoints and workarounds.
347
355
 
348
356
  ---
349
357
 
@@ -363,7 +371,7 @@ Auto-capture hooks: `slm hooks install` + `slm observe` + `slm session-context`.
363
371
  ## Features
364
372
 
365
373
  ### Retrieval
366
- - 6-channel hybrid: Semantic (Fisher-Rao) + BM25 + Entity Graph + Temporal + Associative + Hopfield
374
+ - 5-channel hybrid: Semantic (Fisher-Rao) + BM25 + Entity Graph + Temporal + Hopfield (associative / partial-query completion)
367
375
  - RRF fusion + cross-encoder reranking
368
376
  - Agentic sufficiency verification (auto-retry on weak results)
369
377
  - Adaptive ranking with LightGBM (learns from usage)
@@ -400,9 +408,9 @@ Auto-capture hooks: `slm hooks install` + `slm observe` + `slm session-context`.
400
408
  - Tamper-proof hash-chain audit trail (SHA-256 linked entries)
401
409
 
402
410
  ### Infrastructure
403
- - 23-tab web dashboard with real-time visualization
411
+ - 17-tab web dashboard with real-time visualization
404
412
  - 17+ IDE integrations (Claude, Cursor, Windsurf, VS Code, JetBrains, Zed, etc.)
405
- - 38 MCP tools + 7 MCP resources
413
+ - 33 default MCP tools (+42 optional via `SLM_MCP_ALL_TOOLS=1`) + 7 MCP resources
406
414
  - Profile isolation (independent memory spaces)
407
415
  - 2,900+ tests, AGPL v3, cross-platform (Mac/Linux/Windows)
408
416
  - CPU-only — no GPU required
@@ -440,7 +448,7 @@ Auto-capture hooks: `slm hooks install` + `slm observe` + `slm session-context`.
440
448
 
441
449
  ## Research Papers
442
450
 
443
- SuperLocalMemory is backed by three peer-reviewed research papers covering trust, information geometry, and cognitive memory architecture.
451
+ SuperLocalMemory is backed by three published research papers (arXiv preprints + Zenodo DOIs) covering trust, information geometry, and cognitive memory architecture. These are preprints — not conference-accepted or journal-published yet.
444
452
 
445
453
  ### Paper 3: The Living Brain (V3.3)
446
454
  > **SuperLocalMemory V3.3: The Living Brain — Biologically-Inspired Forgetting, Cognitive Quantization, and Multi-Channel Retrieval for Zero-LLM Agent Memory Systems**
@@ -546,7 +554,7 @@ If this project solves a real problem for you, **please star the repo** — it h
546
554
 
547
555
  ## Part of the Qualixar AI Agent Reliability Platform
548
556
 
549
- Qualixar is building the open-source infrastructure for AI agent reliability engineering. Seven products, seven peer-reviewed papers, one coherent platform. Each tool solves one reliability pillar:
557
+ Qualixar is building the open-source infrastructure for AI agent reliability engineering. Seven products, seven research papers (published as arXiv preprints + Zenodo archives), one coherent platform. Each tool solves one reliability pillar:
550
558
 
551
559
  | Product | Purpose | Install | Paper |
552
560
  |---------|---------|---------|-------|
package/bin/slm CHANGED
@@ -15,6 +15,17 @@ for arg in "$@"; do
15
15
  fi
16
16
  done
17
17
 
18
+ # LLD-06 §6.3 — prefer the PyInstaller-built binary on the hot hook path.
19
+ # If the onedir binary exists and isn't disabled, run it directly; the
20
+ # binary is stdlib-only and ~30ms cold on Windows. Otherwise fall back
21
+ # to the Python CLI below.
22
+ SLM_HOOK_BIN="${SLM_HOOK_BINARY:-$HOME/.superlocalmemory/bin/slm-hook/slm-hook}"
23
+ if [ "${1:-}" = "hook" ] && [ "${2:-}" = "user_prompt_submit" ] \
24
+ && [ -x "$SLM_HOOK_BIN" ] \
25
+ && [ "${SLM_HOOK_BINARY_DISABLED:-0}" != "1" ]; then
26
+ exec "$SLM_HOOK_BIN"
27
+ fi
28
+
18
29
  # Find Python
19
30
  PYTHON=""
20
31
  for cmd in python3 python; do
package/bin/slm.bat CHANGED
@@ -13,6 +13,18 @@ REM Handle --version / -v directly (fast path, no Python needed)
13
13
  if "%~1"=="--version" goto :show_version
14
14
  if "%~1"=="-v" goto :show_version
15
15
 
16
+ REM LLD-06 §6.3 — prefer the PyInstaller-built binary on the hot hook path.
17
+ set "SLM_HOOK_BIN=%USERPROFILE%\.superlocalmemory\bin\slm-hook\slm-hook.exe"
18
+ if defined SLM_HOOK_BINARY set "SLM_HOOK_BIN=%SLM_HOOK_BINARY%"
19
+ if "%~1"=="hook" if "%~2"=="user_prompt_submit" (
20
+ if exist "%SLM_HOOK_BIN%" (
21
+ if not "%SLM_HOOK_BINARY_DISABLED%"=="1" (
22
+ "%SLM_HOOK_BIN%"
23
+ exit /b %ERRORLEVEL%
24
+ )
25
+ )
26
+ )
27
+
16
28
  REM Find Python 3
17
29
  where python3 >nul 2>&1
18
30
  if %ERRORLEVEL% EQU 0 (
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superlocalmemory",
3
- "version": "3.4.19",
3
+ "version": "3.4.22",
4
4
  "description": "Information-geometric agent memory with mathematical guarantees. 4-channel retrieval, Fisher-Rao similarity, zero-LLM mode, EU AI Act compliant. Works with Claude, Cursor, Windsurf, and 17+ AI tools.",
5
5
  "keywords": [
6
6
  "ai-memory",
@@ -52,8 +52,8 @@
52
52
  "test": "echo \"Run: npm install -g . && slm status\" && exit 0"
53
53
  },
54
54
  "engines": {
55
- "node": ">=14.0.0",
56
- "npm": ">=6.0.0"
55
+ "node": ">=18.0.0",
56
+ "npm": ">=9.0.0"
57
57
  },
58
58
  "os": [
59
59
  "darwin",
@@ -65,6 +65,7 @@
65
65
  "src/",
66
66
  "ide/",
67
67
  "scripts/",
68
+ "skills/",
68
69
  "pyproject.toml",
69
70
  "README.md",
70
71
  "LICENSE",
package/pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superlocalmemory"
3
- version = "3.4.19"
3
+ version = "3.4.22"
4
4
  description = "Information-geometric agent memory with mathematical guarantees"
5
5
  readme = "README.md"
6
6
  license = {text = "AGPL-3.0-or-later"}
@@ -116,15 +116,16 @@ build-backend = "setuptools.build_meta"
116
116
  where = ["src"]
117
117
 
118
118
  [tool.setuptools.package-data]
119
- superlocalmemory = ["ui/**/*"]
119
+ superlocalmemory = ["ui/**/*", "skills/**/*"]
120
120
 
121
121
  [tool.pytest.ini_options]
122
122
  testpaths = ["tests"]
123
123
  pythonpath = ["src"]
124
- addopts = "-m 'not slow and not ollama'"
124
+ addopts = "-m 'not slow and not ollama and not benchmark'"
125
125
  markers = [
126
126
  "slow: marks tests as slow — real engine/model loading (run with: pytest -m slow)",
127
127
  "ollama: marks tests that require a running Ollama instance",
128
+ "benchmark: marks CI-only evo-memory benchmark tests (run with: pytest tests/test_benchmarks/ -m benchmark)",
128
129
  ]
129
130
  filterwarnings = [
130
131
  "ignore::DeprecationWarning:vaderSentiment",
@@ -0,0 +1,40 @@
1
+ # LLD-06 §5.1 — Windows PowerShell build script for slm-hook onedir binary.
2
+ # Runs AST generator -> PyInstaller -> smoke test.
3
+ $ErrorActionPreference = "Stop"
4
+
5
+ $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
6
+ $RepoRoot = Resolve-Path (Join-Path $ScriptDir "..")
7
+
8
+ Write-Host "[build-slm-hook] repo: $RepoRoot"
9
+
10
+ $Py = if ($env:SLM_BUILD_PYTHON) { $env:SLM_BUILD_PYTHON } else { "python" }
11
+
12
+ & $Py -m pip install --quiet --upgrade `
13
+ "pyinstaller==6.15.0" "pyinstaller-hooks-contrib==2026.1"
14
+
15
+ $Dest = Join-Path $RepoRoot "src\superlocalmemory\hook_binary_entry.py"
16
+ & $Py (Join-Path $ScriptDir "build_entry.py") `
17
+ --repo-root $RepoRoot `
18
+ --dest $Dest
19
+ Write-Host "[build-slm-hook] entry emitted: $Dest"
20
+
21
+ Set-Location $RepoRoot
22
+ & $Py -m PyInstaller `
23
+ (Join-Path $ScriptDir "slm-hook.spec") `
24
+ --clean --noconfirm `
25
+ --distpath (Join-Path $RepoRoot "dist") `
26
+ --workpath (Join-Path $RepoRoot "build\pyi")
27
+
28
+ $Binary = Join-Path $RepoRoot "dist\slm-hook\slm-hook.exe"
29
+ if (-not (Test-Path $Binary)) {
30
+ Write-Error "[build-slm-hook] binary not produced at $Binary"
31
+ exit 2
32
+ }
33
+
34
+ Write-Host "[build-slm-hook] smoke test ..."
35
+ $out = "" | & $Binary
36
+ if ($out -ne "{}") {
37
+ Write-Error "[build-slm-hook] expected '{}', got: $out"
38
+ exit 3
39
+ }
40
+ Write-Host "[build-slm-hook] OK"
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env bash
2
+ # LLD-06 §5.1 — POSIX build script for slm-hook onedir binary.
3
+ # Runs AST generator → PyInstaller → smoke test.
4
+ set -euo pipefail
5
+
6
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
+ REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
8
+
9
+ echo "[build-slm-hook] repo: ${REPO_ROOT}"
10
+
11
+ PY="${SLM_BUILD_PYTHON:-python3}"
12
+
13
+ # 1. Ensure PyInstaller is present (pinned in pyproject optional-deps build-hook).
14
+ "${PY}" -m pip install --quiet --upgrade \
15
+ "pyinstaller==6.15.0" "pyinstaller-hooks-contrib==2026.1"
16
+
17
+ # 2. AST-extract entry → src/superlocalmemory/hook_binary_entry.py
18
+ DEST="${REPO_ROOT}/src/superlocalmemory/hook_binary_entry.py"
19
+ "${PY}" "${SCRIPT_DIR}/build_entry.py" \
20
+ --repo-root "${REPO_ROOT}" \
21
+ --dest "${DEST}"
22
+ echo "[build-slm-hook] entry emitted: ${DEST}"
23
+
24
+ # 3. Run PyInstaller.
25
+ cd "${REPO_ROOT}"
26
+ "${PY}" -m PyInstaller \
27
+ "${SCRIPT_DIR}/slm-hook.spec" \
28
+ --clean --noconfirm \
29
+ --distpath "${REPO_ROOT}/dist" \
30
+ --workpath "${REPO_ROOT}/build/pyi"
31
+
32
+ BINARY="${REPO_ROOT}/dist/slm-hook/slm-hook"
33
+ if [ ! -x "${BINARY}" ]; then
34
+ echo "[build-slm-hook] ERROR: binary not produced at ${BINARY}" >&2
35
+ exit 2
36
+ fi
37
+
38
+ # 4. Smoke test: empty stdin → '{}' exit 0.
39
+ echo "[build-slm-hook] smoke test ..."
40
+ out=$(echo '' | "${BINARY}" || true)
41
+ if [ "${out}" != "{}" ]; then
42
+ echo "[build-slm-hook] ERROR: expected '{}', got: ${out}" >&2
43
+ exit 3
44
+ fi
45
+ echo "[build-slm-hook] OK"