superlocalmemory 3.4.19 → 3.4.21
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.
- package/CHANGELOG.md +24 -0
- package/README.md +42 -34
- package/bin/slm +11 -0
- package/bin/slm.bat +12 -0
- package/package.json +4 -3
- package/pyproject.toml +3 -2
- package/scripts/build-slm-hook.ps1 +40 -0
- package/scripts/build-slm-hook.sh +45 -0
- package/scripts/build_entry.py +452 -0
- package/scripts/ci/stage5b_gate.sh +50 -0
- package/scripts/postinstall/validation.js +187 -0
- package/scripts/postinstall-interactive.js +756 -0
- package/scripts/postinstall_binary.js +287 -0
- package/scripts/release_manifest.py +273 -0
- package/scripts/slm-hook.spec +56 -0
- package/skills/slm-build-graph/SKILL.md +423 -0
- package/skills/slm-list-recent/SKILL.md +348 -0
- package/skills/slm-recall/SKILL.md +343 -0
- package/skills/slm-remember/SKILL.md +194 -0
- package/skills/slm-show-patterns/SKILL.md +224 -0
- package/skills/slm-status/SKILL.md +363 -0
- package/skills/slm-switch-profile/SKILL.md +442 -0
- package/src/superlocalmemory/cli/commands.py +219 -79
- package/src/superlocalmemory/cli/context_commands.py +192 -0
- package/src/superlocalmemory/cli/daemon.py +15 -1
- package/src/superlocalmemory/cli/db_migrate.py +80 -0
- package/src/superlocalmemory/cli/escape_hatch.py +220 -0
- package/src/superlocalmemory/cli/main.py +72 -1
- package/src/superlocalmemory/core/context_cache.py +397 -0
- package/src/superlocalmemory/core/engine.py +38 -2
- package/src/superlocalmemory/core/engine_wiring.py +1 -1
- package/src/superlocalmemory/core/ram_lock.py +111 -0
- package/src/superlocalmemory/core/recall_pipeline.py +433 -3
- package/src/superlocalmemory/core/recall_worker.py +8 -3
- package/src/superlocalmemory/core/security_primitives.py +635 -0
- package/src/superlocalmemory/core/shadow_router.py +319 -0
- package/src/superlocalmemory/core/slm_disabled.py +87 -0
- package/src/superlocalmemory/core/slmignore.py +125 -0
- package/src/superlocalmemory/core/topic_signature.py +143 -0
- package/src/superlocalmemory/core/worker_pool.py +14 -3
- package/src/superlocalmemory/encoding/cognitive_consolidator.py +2 -2
- package/src/superlocalmemory/evolution/budget.py +321 -0
- package/src/superlocalmemory/evolution/llm_dispatch.py +508 -0
- package/src/superlocalmemory/evolution/skill_evolver.py +144 -94
- package/src/superlocalmemory/hooks/_outcome_common.py +506 -0
- package/src/superlocalmemory/hooks/adapter_base.py +317 -0
- package/src/superlocalmemory/hooks/antigravity_adapter.py +192 -0
- package/src/superlocalmemory/hooks/claude_code_hooks.py +33 -1
- package/src/superlocalmemory/hooks/context_payload.py +312 -0
- package/src/superlocalmemory/hooks/copilot_adapter.py +154 -0
- package/src/superlocalmemory/hooks/cross_platform_connector.py +90 -0
- package/src/superlocalmemory/hooks/cursor_adapter.py +195 -0
- package/src/superlocalmemory/hooks/hook_handlers.py +109 -8
- package/src/superlocalmemory/hooks/ide_connector.py +25 -2
- package/src/superlocalmemory/hooks/post_tool_async_hook.py +165 -0
- package/src/superlocalmemory/hooks/post_tool_outcome_hook.py +223 -0
- package/src/superlocalmemory/hooks/prewarm_auth.py +170 -0
- package/src/superlocalmemory/hooks/session_registry.py +186 -0
- package/src/superlocalmemory/hooks/stop_outcome_hook.py +134 -0
- package/src/superlocalmemory/hooks/sync_loop.py +114 -0
- package/src/superlocalmemory/hooks/user_prompt_hook.py +128 -0
- package/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +202 -0
- package/src/superlocalmemory/infra/backup.py +3 -3
- package/src/superlocalmemory/infra/cloud_backup.py +2 -2
- package/src/superlocalmemory/infra/event_bus.py +2 -2
- package/src/superlocalmemory/infra/webhook_dispatcher.py +3 -3
- package/src/superlocalmemory/learning/arm_catalog.py +99 -0
- package/src/superlocalmemory/learning/bandit.py +526 -0
- package/src/superlocalmemory/learning/bandit_cache.py +133 -0
- package/src/superlocalmemory/learning/behavioral.py +53 -1
- package/src/superlocalmemory/learning/consolidation_cycle.py +381 -0
- package/src/superlocalmemory/learning/consolidation_worker.py +188 -520
- package/src/superlocalmemory/learning/database.py +256 -0
- package/src/superlocalmemory/learning/dedup_hnsw.py +413 -0
- package/src/superlocalmemory/learning/ensemble.py +300 -0
- package/src/superlocalmemory/learning/fact_outcome_joins.py +207 -0
- package/src/superlocalmemory/learning/forgetting_scheduler.py +55 -0
- package/src/superlocalmemory/learning/hnsw_dedup.py +69 -0
- package/src/superlocalmemory/learning/labeler.py +87 -0
- package/src/superlocalmemory/learning/legacy_migration.py +277 -0
- package/src/superlocalmemory/learning/memory_merge.py +160 -0
- package/src/superlocalmemory/learning/model_cache.py +269 -0
- package/src/superlocalmemory/learning/model_rollback.py +278 -0
- package/src/superlocalmemory/learning/outcome_queue.py +284 -0
- package/src/superlocalmemory/learning/pattern_miner.py +415 -0
- package/src/superlocalmemory/learning/pattern_miner_constants.py +47 -0
- package/src/superlocalmemory/learning/ranker.py +225 -81
- package/src/superlocalmemory/learning/ranker_common.py +163 -0
- package/src/superlocalmemory/learning/ranker_retrain_legacy.py +202 -0
- package/src/superlocalmemory/learning/ranker_retrain_online.py +411 -0
- package/src/superlocalmemory/learning/reward.py +777 -0
- package/src/superlocalmemory/learning/reward_archive.py +210 -0
- package/src/superlocalmemory/learning/reward_boost.py +201 -0
- package/src/superlocalmemory/learning/reward_proxy.py +326 -0
- package/src/superlocalmemory/learning/shadow_test.py +524 -0
- package/src/superlocalmemory/learning/signal_worker.py +270 -0
- package/src/superlocalmemory/learning/signals.py +314 -0
- package/src/superlocalmemory/learning/trigram_index.py +547 -0
- package/src/superlocalmemory/mcp/server.py +5 -5
- package/src/superlocalmemory/mcp/tools_context.py +183 -0
- package/src/superlocalmemory/mcp/tools_core.py +92 -27
- package/src/superlocalmemory/parameterization/soft_prompt_generator.py +13 -0
- package/src/superlocalmemory/retrieval/engine.py +52 -0
- package/src/superlocalmemory/server/api.py +2 -2
- package/src/superlocalmemory/server/bandit_loops.py +140 -0
- package/src/superlocalmemory/server/middleware/__init__.py +11 -0
- package/src/superlocalmemory/server/middleware/security_headers.py +144 -0
- package/src/superlocalmemory/server/routes/backup.py +36 -13
- package/src/superlocalmemory/server/routes/behavioral.py +50 -19
- package/src/superlocalmemory/server/routes/brain.py +1234 -0
- package/src/superlocalmemory/server/routes/data_io.py +4 -4
- package/src/superlocalmemory/server/routes/events.py +2 -2
- package/src/superlocalmemory/server/routes/helpers.py +1 -1
- package/src/superlocalmemory/server/routes/learning.py +192 -7
- package/src/superlocalmemory/server/routes/memories.py +189 -1
- package/src/superlocalmemory/server/routes/prewarm.py +171 -0
- package/src/superlocalmemory/server/routes/profiles.py +3 -3
- package/src/superlocalmemory/server/routes/token.py +88 -0
- package/src/superlocalmemory/server/routes/ws.py +5 -5
- package/src/superlocalmemory/server/security_middleware.py +13 -7
- package/src/superlocalmemory/server/ui.py +2 -2
- package/src/superlocalmemory/server/unified_daemon.py +335 -3
- package/src/superlocalmemory/storage/migration_runner.py +545 -0
- package/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +67 -0
- package/src/superlocalmemory/storage/migrations/M002_model_state_history.py +132 -0
- package/src/superlocalmemory/storage/migrations/M003_migration_log.py +38 -0
- package/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +46 -0
- package/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +75 -0
- package/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +75 -0
- package/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +63 -0
- package/src/superlocalmemory/storage/migrations/M009_model_lineage.py +54 -0
- package/src/superlocalmemory/storage/migrations/M010_evolution_config.py +75 -0
- package/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +87 -0
- package/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +72 -0
- package/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +55 -0
- package/src/superlocalmemory/storage/migrations/__init__.py +81 -0
- package/src/superlocalmemory/storage/models.py +4 -0
- package/src/superlocalmemory/ui/css/brain.css +409 -0
- package/src/superlocalmemory/ui/css/legacy-dashboard.css +645 -0
- package/src/superlocalmemory/ui/index.html +459 -1345
- package/src/superlocalmemory/ui/js/brain.js +1321 -0
- package/src/superlocalmemory/ui/js/clusters.js +123 -4
- package/src/superlocalmemory/ui/js/init.js +48 -39
- package/src/superlocalmemory/ui/js/memories.js +88 -2
- package/src/superlocalmemory/ui/js/modal.js +71 -1
- package/src/superlocalmemory/ui/js/ng-shell.js +101 -88
- package/src/superlocalmemory/ui/js/trust-dashboard.js +168 -25
- package/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +2018 -0
- package/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- package/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- package/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +7 -0
- package/src/superlocalmemory/ui/vendor/bootstrap.min.css +6 -0
- package/src/superlocalmemory/ui/vendor/d3.v7.min.js +2 -0
- package/src/superlocalmemory/ui/vendor/graphology-library.min.js +2 -0
- package/src/superlocalmemory/ui/vendor/graphology.umd.min.js +2 -0
- package/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +8 -0
- package/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
- package/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
- package/src/superlocalmemory/ui/vendor/sigma.min.js +1 -0
- package/src/superlocalmemory/ui/js/behavioral.js +0 -447
- package/src/superlocalmemory/ui/js/graph-core.js +0 -447
- package/src/superlocalmemory/ui/js/graph-interactions.js +0 -351
- package/src/superlocalmemory/ui/js/learning.js +0 -435
- package/src/superlocalmemory/ui/js/patterns.js +0 -93
- package/src/superlocalmemory.egg-info/PKG-INFO +0 -647
- package/src/superlocalmemory.egg-info/SOURCES.txt +0 -335
- package/src/superlocalmemory.egg-info/dependency_links.txt +0 -1
- package/src/superlocalmemory.egg-info/entry_points.txt +0 -2
- package/src/superlocalmemory.egg-info/requires.txt +0 -58
- 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.21] - 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
|
|
7
|
-
<p align="center"><code>v3.4.
|
|
8
|
-
<p align="center"><strong>Backed by 3
|
|
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>+
|
|
11
|
+
<code>+10.6pp vs Mem0 zero-LLM</code> · <code>85% Open-Domain (best zero-LLM score)</code> · <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-
|
|
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
|
|
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
|
|
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
|
|
40
|
-
|
|
41
|
-
| EverMemOS |
|
|
42
|
-
| Hindsight |
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
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
|
-
|
|
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
|
-
|
|
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 |
|
|
109
|
+
| MCP tools (default) | 29 | 33 | +4 new (mesh set) |
|
|
106
110
|
| CLI commands | 21 | 26 | +5 new |
|
|
107
|
-
| Dashboard tabs |
|
|
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
|
-
|
|
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
|
|
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
|
|
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 ──►
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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":**
|
|
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
|
-
-
|
|
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
|
-
-
|
|
411
|
+
- 17-tab web dashboard with real-time visualization
|
|
404
412
|
- 17+ IDE integrations (Claude, Cursor, Windsurf, VS Code, JetBrains, Zed, etc.)
|
|
405
|
-
-
|
|
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
|
|
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
|
|
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.
|
|
3
|
+
"version": "3.4.21",
|
|
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": ">=
|
|
56
|
-
"npm": ">=
|
|
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.
|
|
3
|
+
version = "3.4.21"
|
|
4
4
|
description = "Information-geometric agent memory with mathematical guarantees"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = {text = "AGPL-3.0-or-later"}
|
|
@@ -121,10 +121,11 @@ superlocalmemory = ["ui/**/*"]
|
|
|
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"
|