superlocalmemory 3.8.13 → 4.0.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.
- package/ATTRIBUTION.md +4 -4
- package/CHANGELOG.md +113 -121
- package/README.md +65 -63
- package/docs/pi-dev-integration.md +1 -1
- package/package.json +6 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/CLAUDE.md +3 -3
- package/plugin/agents/slm-governance-advisor.md +1 -1
- package/plugin/agents/slm-loop-runner.md +1 -1
- package/plugin/agents/slm-memory-advisor.md +1 -1
- package/plugin/agents/slm-optimize-advisor.md +1 -1
- package/plugin/requirements.txt +1 -1
- package/plugin/skills/slm-cache/SKILL.md +1 -1
- package/plugin/skills/slm-compress/SKILL.md +1 -1
- package/plugin/skills/slm-governance/SKILL.md +1 -1
- package/plugin/skills/slm-graph/SKILL.md +1 -1
- package/plugin/skills/slm-loop/SKILL.md +1 -1
- package/plugin/skills/slm-mesh/SKILL.md +1 -1
- package/plugin/skills/slm-profile/SKILL.md +1 -1
- package/plugin/skills/slm-recall/SKILL.md +1 -1
- package/plugin/skills/slm-remember/SKILL.md +1 -1
- package/plugin/skills/slm-scope/SKILL.md +1 -1
- package/plugin/skills/slm-session/SKILL.md +1 -1
- package/plugin/skills/slm-status/SKILL.md +1 -1
- package/plugin-src/rules/AGENTS.md +1 -1
- package/plugin-src/skills/slm-cache/SKILL.md +1 -1
- package/plugin-src/skills/slm-compress/SKILL.md +1 -1
- package/plugin-src/skills/slm-governance/SKILL.md +248 -0
- package/plugin-src/skills/slm-graph/SKILL.md +1 -1
- package/plugin-src/skills/slm-loop/SKILL.md +99 -0
- package/plugin-src/skills/slm-mesh/SKILL.md +282 -0
- package/plugin-src/skills/slm-profile/SKILL.md +148 -0
- package/plugin-src/skills/slm-recall/SKILL.md +1 -1
- package/plugin-src/skills/slm-remember/SKILL.md +1 -1
- package/plugin-src/skills/slm-scope/SKILL.md +176 -0
- package/plugin-src/skills/slm-session/SKILL.md +1 -1
- package/plugin-src/skills/slm-status/SKILL.md +1 -1
- package/pyproject.toml +11 -4
- package/src/superlocalmemory/__init__.py +1 -1
- package/src/superlocalmemory/cli/commands.py +125 -11
- package/src/superlocalmemory/cli/daemon.py +5 -1
- package/src/superlocalmemory/cli/main.py +35 -2
- package/src/superlocalmemory/cli/ops_cmd.py +281 -0
- package/src/superlocalmemory/cli/setup_wizard.py +1 -1
- package/src/superlocalmemory/compliance/audit.py +65 -0
- package/src/superlocalmemory/compliance/eu_ai_act.py +27 -57
- package/src/superlocalmemory/compliance/gdpr.py +416 -20
- package/src/superlocalmemory/compliance/retention.py +74 -22
- package/src/superlocalmemory/compliance/scheduler.py +78 -9
- package/src/superlocalmemory/core/actor_context.py +166 -0
- package/src/superlocalmemory/core/admission.py +549 -0
- package/src/superlocalmemory/core/backend_orchestrator.py +23 -10
- package/src/superlocalmemory/core/config.py +202 -24
- package/src/superlocalmemory/core/consolidation_engine.py +13 -13
- package/src/superlocalmemory/core/context_cache.py +28 -0
- package/src/superlocalmemory/core/embeddings.py +64 -2
- package/src/superlocalmemory/core/engine.py +7 -2
- package/src/superlocalmemory/core/engine_ingestion.py +65 -3
- package/src/superlocalmemory/core/engine_wiring.py +36 -9
- package/src/superlocalmemory/core/ingest_policy.py +38 -0
- package/src/superlocalmemory/core/maintenance.py +255 -0
- package/src/superlocalmemory/core/modes.py +40 -13
- package/src/superlocalmemory/core/mutations.py +437 -44
- package/src/superlocalmemory/core/operation_policy.py +92 -0
- package/src/superlocalmemory/core/operation_policy_registry.py +542 -0
- package/src/superlocalmemory/core/operation_request.py +127 -0
- package/src/superlocalmemory/core/ops_remediation.py +542 -0
- package/src/superlocalmemory/core/recall_pipeline.py +7 -0
- package/src/superlocalmemory/core/remember_runtime.py +202 -4
- package/src/superlocalmemory/core/remote_mode.py +20 -5
- package/src/superlocalmemory/core/store_pipeline.py +150 -0
- package/src/superlocalmemory/core/topic_signature.py +19 -4
- package/src/superlocalmemory/core/transactions/__init__.py +78 -0
- package/src/superlocalmemory/core/transactions/concrete_owners.py +597 -0
- package/src/superlocalmemory/core/transactions/erasure.py +825 -0
- package/src/superlocalmemory/core/transactions/manifest.py +255 -0
- package/src/superlocalmemory/core/transactions/manifest_key.py +155 -0
- package/src/superlocalmemory/core/transactions/obligations.py +272 -0
- package/src/superlocalmemory/core/transactions/owners.py +114 -0
- package/src/superlocalmemory/core/transactions/reconciler.py +285 -0
- package/src/superlocalmemory/core/transactions/service.py +330 -0
- package/src/superlocalmemory/core/worker_pool.py +33 -5
- package/src/superlocalmemory/encoding/cognitive_consolidator.py +70 -28
- package/src/superlocalmemory/encoding/emotional.py +75 -14
- package/src/superlocalmemory/encoding/scene_builder.py +115 -13
- package/src/superlocalmemory/encoding/temporal_parser.py +4 -0
- package/src/superlocalmemory/evolution/blind_verifier.py +11 -4
- package/src/superlocalmemory/evolution/evolution_store.py +244 -4
- package/src/superlocalmemory/evolution/llm_dispatch.py +40 -0
- package/src/superlocalmemory/evolution/model_selection.py +18 -3
- package/src/superlocalmemory/evolution/mutation_generator.py +3 -0
- package/src/superlocalmemory/evolution/skill_activator.py +270 -0
- package/src/superlocalmemory/evolution/skill_evolver.py +281 -59
- package/src/superlocalmemory/evolution/types.py +30 -8
- package/src/superlocalmemory/graph/cozo_backend.py +17 -9
- package/src/superlocalmemory/hooks/auto_invoker.py +2 -1
- package/src/superlocalmemory/hooks/auto_recall.py +64 -30
- package/src/superlocalmemory/hooks/codex_assets.py +14 -1
- package/src/superlocalmemory/infra/backup.py +434 -7
- package/src/superlocalmemory/infra/process_reaper.py +18 -0
- package/src/superlocalmemory/infra/self_heal.py +401 -0
- package/src/superlocalmemory/learning/feedback.py +52 -9
- package/src/superlocalmemory/loops/engine.py +10 -0
- package/src/superlocalmemory/mcp/_daemon_proxy.py +3 -0
- package/src/superlocalmemory/mcp/http_transport.py +30 -331
- package/src/superlocalmemory/mcp/profiles.py +5 -0
- package/src/superlocalmemory/mcp/resources.py +8 -0
- package/src/superlocalmemory/mcp/server.py +51 -4
- package/src/superlocalmemory/mcp/shared.py +19 -0
- package/src/superlocalmemory/mcp/tools_active.py +25 -4
- package/src/superlocalmemory/mcp/tools_code_graph.py +26 -18
- package/src/superlocalmemory/mcp/tools_context.py +50 -8
- package/src/superlocalmemory/mcp/tools_core.py +69 -21
- package/src/superlocalmemory/mcp/tools_evolution.py +9 -2
- package/src/superlocalmemory/mcp/tools_learning.py +21 -10
- package/src/superlocalmemory/mcp/tools_loops.py +29 -18
- package/src/superlocalmemory/mcp/tools_mesh.py +8 -0
- package/src/superlocalmemory/mcp/tools_ops.py +115 -0
- package/src/superlocalmemory/mcp/tools_optimize.py +4 -0
- package/src/superlocalmemory/mcp/tools_v28.py +10 -3
- package/src/superlocalmemory/mcp/tools_v3.py +34 -14
- package/src/superlocalmemory/mcp/tools_v33.py +18 -33
- package/src/superlocalmemory/mesh/broker.py +124 -46
- package/src/superlocalmemory/mesh/broker_security.py +470 -0
- package/src/superlocalmemory/mesh/discovery.py +365 -0
- package/src/superlocalmemory/mesh/lock_protocol.py +313 -0
- package/src/superlocalmemory/mesh/node_identity.py +97 -0
- package/src/superlocalmemory/mesh/outbox_remote.py +429 -0
- package/src/superlocalmemory/mesh/remote_sync.py +511 -28
- package/src/superlocalmemory/mesh/state_sync.py +286 -0
- package/src/superlocalmemory/optimize/config/store.py +45 -0
- package/src/superlocalmemory/parameterization/cross_project.py +12 -0
- package/src/superlocalmemory/parameterization/prompt_injector.py +13 -11
- package/src/superlocalmemory/parameterization/prompt_lifecycle.py +8 -2
- package/src/superlocalmemory/parameterization/workflow_miner.py +17 -0
- package/src/superlocalmemory/retrieval/ann_index.py +5 -0
- package/src/superlocalmemory/retrieval/bm25_channel.py +49 -2
- package/src/superlocalmemory/retrieval/engine.py +19 -4
- package/src/superlocalmemory/retrieval/fusion.py +4 -1
- package/src/superlocalmemory/retrieval/hopfield_channel.py +9 -3
- package/src/superlocalmemory/retrieval/remote_reranker.py +47 -22
- package/src/superlocalmemory/retrieval/reranker.py +32 -1
- package/src/superlocalmemory/retrieval/temporal_channel.py +16 -3
- package/src/superlocalmemory/retrieval/temporal_utils.py +107 -0
- package/src/superlocalmemory/retrieval/temporal_validity_filter.py +155 -42
- package/src/superlocalmemory/retrieval/vector_store.py +214 -8
- package/src/superlocalmemory/server/api.py +5 -5
- package/src/superlocalmemory/server/egress_policy.py +258 -0
- package/src/superlocalmemory/server/rbac_enforce.py +32 -0
- package/src/superlocalmemory/server/route_mutations.py +20 -0
- package/src/superlocalmemory/server/routes/compliance.py +153 -7
- package/src/superlocalmemory/server/routes/data_io.py +43 -2
- package/src/superlocalmemory/server/routes/events.py +15 -0
- package/src/superlocalmemory/server/routes/memories.py +56 -3
- package/src/superlocalmemory/server/routes/mesh.py +82 -1
- package/src/superlocalmemory/server/routes/mesh_lock.py +54 -0
- package/src/superlocalmemory/server/routes/mesh_state.py +63 -0
- package/src/superlocalmemory/server/routes/v3_api.py +50 -27
- package/src/superlocalmemory/server/routes/ws.py +86 -0
- package/src/superlocalmemory/server/ui.py +6 -6
- package/src/superlocalmemory/server/unified_daemon.py +942 -119
- package/src/superlocalmemory/storage/_migration_internals.py +568 -0
- package/src/superlocalmemory/storage/_schema_version.py +110 -0
- package/src/superlocalmemory/storage/database.py +329 -24
- package/src/superlocalmemory/storage/embedding_migrator.py +246 -51
- package/src/superlocalmemory/storage/erasure_fence.py +45 -0
- package/src/superlocalmemory/storage/generation_fence.py +63 -0
- package/src/superlocalmemory/storage/migration_runner.py +140 -417
- package/src/superlocalmemory/storage/migrations/M009_model_lineage.py +40 -0
- package/src/superlocalmemory/storage/migrations/M033_projection_transactions.py +148 -0
- package/src/superlocalmemory/storage/migrations/M034_obligation_integrity.py +58 -0
- package/src/superlocalmemory/storage/migrations/M035_erasure_receipts.py +113 -0
- package/src/superlocalmemory/storage/migrations/M036_vector_row_map.py +107 -0
- package/src/superlocalmemory/storage/migrations/M037_manifest_hmac_version.py +162 -0
- package/src/superlocalmemory/storage/migrations/{M033_learning_feedback_channel.py → M038_learning_feedback_channel.py} +3 -3
- package/src/superlocalmemory/storage/migrations/M039_scene_fact_members.py +137 -0
- package/src/superlocalmemory/storage/migrations/__init__.py +4 -2
- package/src/superlocalmemory/storage/schema.py +67 -0
- package/src/superlocalmemory/storage/write_coordinator.py +125 -0
- package/src/superlocalmemory/trust/scorer.py +28 -4
- package/src/superlocalmemory/ui/index.html +14 -3
- package/src/superlocalmemory/ui/js/auto-settings.js +12 -1
- package/src/superlocalmemory/ui/js/brain.js +6 -4
- package/src/superlocalmemory/ui/js/compliance.js +66 -12
- package/src/superlocalmemory/ui/js/dashboard.js +13 -3
- package/src/superlocalmemory/ui/js/feedback.js +8 -2
- package/src/superlocalmemory/ui/js/lifecycle.js +7 -1
- package/src/superlocalmemory/ui/js/modal.js +272 -5
- package/src/superlocalmemory/ui/js/od-backup.js +9 -2
- package/src/superlocalmemory/ui/js/od-compliance-ext.js +301 -0
- package/src/superlocalmemory/ui/js/od-operations.js +154 -23
- package/src/superlocalmemory/ui/js/od-ops-health.js +417 -0
- package/src/superlocalmemory/ui/js/od-optimize.js +35 -21
- package/src/superlocalmemory/ui/js/od-team.js +9 -2
- package/src/superlocalmemory/ui/js/optimize.js +13 -16
- package/src/superlocalmemory/ui/js/profiles.js +7 -3
- package/src/superlocalmemory/ui/js/settings.js +7 -1
- package/src/superlocalmemory/vector/lancedb_backend.py +19 -9
- package/src/superlocalmemory/attribution/mathematical_dna.py +0 -235
- package/src/superlocalmemory/cli/post_install.py +0 -114
- package/src/superlocalmemory/core/clock_monitor.py +0 -45
- package/src/superlocalmemory/core/db_pool.py +0 -80
- package/src/superlocalmemory/core/error_catalog.py +0 -113
- package/src/superlocalmemory/core/loop_watchdog.py +0 -56
- package/src/superlocalmemory/core/priority_queue.py +0 -61
- package/src/superlocalmemory/core/pruning_engine.py +0 -216
- package/src/superlocalmemory/core/queue_dispatcher.py +0 -73
- package/src/superlocalmemory/core/slmignore.py +0 -125
- package/src/superlocalmemory/infra/heartbeat_monitor.py +0 -140
- package/src/superlocalmemory/infra/webhook_dispatcher.py +0 -247
- package/src/superlocalmemory/learning/quantization_scheduler.py +0 -320
- package/src/superlocalmemory/storage/access_control.py +0 -182
package/ATTRIBUTION.md
CHANGED
|
@@ -38,7 +38,7 @@ is_valid = QualixarSigner.verify(signed_output)
|
|
|
38
38
|
|
|
39
39
|
### Research Papers
|
|
40
40
|
|
|
41
|
-
SuperLocalMemory is backed by three
|
|
41
|
+
SuperLocalMemory is backed by three public research preprints (arXiv preprints):
|
|
42
42
|
|
|
43
43
|
1. **Paper 1 — Trust & Behavioral Foundations** (arXiv:2603.02240)
|
|
44
44
|
Bayesian trust defense, behavioral pattern mining, OWASP-aligned memory poisoning protection.
|
|
@@ -47,7 +47,7 @@ SuperLocalMemory is backed by three peer-reviewed research papers:
|
|
|
47
47
|
Fisher-Rao geodesic distance, cellular sheaf cohomology, Riemannian Langevin lifecycle dynamics.
|
|
48
48
|
|
|
49
49
|
3. **Paper 3 — The Living Brain** (arXiv:2604.04514)
|
|
50
|
-
FRQAD mixed-precision metric, Ebbinghaus adaptive forgetting,
|
|
50
|
+
FRQAD mixed-precision metric, Ebbinghaus adaptive forgetting, five candidate producers plus entity-graph enhancement, memory parameterization, trust-weighted forgetting.
|
|
51
51
|
|
|
52
52
|
### Research Initiative
|
|
53
53
|
|
|
@@ -61,11 +61,11 @@ SuperLocalMemory uses the following open-source libraries:
|
|
|
61
61
|
- NumPy (BSD-3-Clause) — Numerical operations
|
|
62
62
|
- SciPy (BSD-3-Clause) — Numerical optimization (used by vCache MLE logistic refit)
|
|
63
63
|
|
|
64
|
-
See [
|
|
64
|
+
See [pyproject.toml](pyproject.toml) for the full dependency list.
|
|
65
65
|
|
|
66
66
|
### Optimize Module — Research Citations (v3.6)
|
|
67
67
|
|
|
68
|
-
The Optimize module (LLD-03 / LLD-04) builds on
|
|
68
|
+
The Optimize module (LLD-03 / LLD-04) builds on cited public research.
|
|
69
69
|
The Implementer verified each arXiv ID against arxiv.org before citation.
|
|
70
70
|
|
|
71
71
|
| Component | Source | License / Note |
|
package/CHANGELOG.md
CHANGED
|
@@ -1,130 +1,122 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
All notable changes to SuperLocalMemory
|
|
3
|
+
All notable changes to SuperLocalMemory will be documented in this file.
|
|
4
4
|
|
|
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
|
-
## [
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
checkout — is deliberately reported separately and does not warn. A warning
|
|
34
|
-
that fires on every developer machine is one everybody learns to ignore, and
|
|
35
|
-
then it goes unread on the day it matters. Every failure path resolves to
|
|
36
|
-
`unknown` rather than to a false `current`.
|
|
37
|
-
|
|
38
|
-
## [3.8.12] - 2026-08-03 — Canonical learning signals, clock-independent daemon identity, remote reranker
|
|
39
|
-
|
|
40
|
-
### Fixed
|
|
41
|
-
- Explicit feedback now reaches the store every consumer actually reads.
|
|
42
|
-
Three tables carry a "feedback" name: `feedback_records` (memory.db, read by
|
|
43
|
-
nothing), `learning_feedback` (the pre-v3.4.22 legacy table that
|
|
44
|
-
`legacy_migration` copies forward), and `learning_signals` +
|
|
45
|
-
`learning_features` (canonical — read by the dashboard Living Brain panel,
|
|
46
|
-
the ranker-phase card, and the LightGBM retrainer). The 3.8.11 fix wrote to
|
|
47
|
-
the legacy table, so it moved a counter nothing consumes. `record_explicit`
|
|
48
|
-
now writes the legacy row and the canonical signal/feature pair in one
|
|
49
|
-
transaction, flagged `is_synthetic=1` so the LightGBM trainer's
|
|
50
|
-
`WHERE is_synthetic=0` filter excludes them from training. (#106)
|
|
51
|
-
- The recall phase gate and the dashboard no longer read different tables.
|
|
52
|
-
The gate counted `learning_feedback` while every user-visible surface counted
|
|
53
|
-
`learning_signals`, so the phase a user was shown and the phase that actually
|
|
54
|
-
ranked their results could disagree without limit. Both now resolve from the
|
|
55
|
-
canonical store, with thresholds imported from `learning.ranker` rather than
|
|
56
|
-
duplicated as literals — duplicated literals are how the two surfaces drifted
|
|
57
|
-
apart in the first place. (#106)
|
|
58
|
-
- `report_feedback` no longer reports success for a write that did not happen.
|
|
59
|
-
It fell back to the `feedback_records` count when the canonical read failed,
|
|
60
|
-
and that table increments on every call regardless, so total write failure was
|
|
61
|
-
indistinguishable from success. The cross-store fallback is removed; a failed
|
|
62
|
-
durable write returns `success: false` with `durable: false`. (#106)
|
|
63
|
-
- The CLI no longer disowns a healthy daemon after a few minutes on WSL2.
|
|
64
|
-
psutil derives `create_time` as boot time plus start ticks and re-reads
|
|
65
|
-
`/proc/stat` `btime` on every call; WSL2 resyncs its VM clock mid-session, so
|
|
66
|
-
`btime` moves and every process's computed creation time moves with it,
|
|
67
|
-
retroactively. The recorded value stopped matching the same live PID while
|
|
68
|
-
`/health` still answered in milliseconds. Ownership now compares a
|
|
69
|
-
clock-independent process token — `boot_id` plus raw start ticks on
|
|
70
|
-
Linux/WSL2, psutil's monotonic creation time elsewhere — as exact equality,
|
|
71
|
-
with no tolerance constant left to silently expire. PID-reuse protection is
|
|
72
|
-
strengthened: a creation-time mismatch no longer condemns a process outright,
|
|
73
|
-
it falls through to cryptographic identity proof over loopback. (#104)
|
|
74
|
-
- `DAEMON_UNAVAILABLE` now names one of eight specific reasons with an
|
|
75
|
-
actionable hint instead of "owned daemon is unavailable; retry later". (#104)
|
|
76
|
-
- `slm setup` no longer wipes the `retrieval` config block on every re-run.
|
|
8
|
+
## [4.0.0] - 2026-08-01 — Verifiable memory transactions
|
|
9
|
+
|
|
10
|
+
Version 4.0 hardens the full lifecycle of a memory operation — admission,
|
|
11
|
+
canonical commit, projection to every store, migration, backup, and erasure —
|
|
12
|
+
so each step is authorized and verifiable. Existing memories and
|
|
13
|
+
configuration are preserved; M038 (eager) and M039 (deferred) migrations are
|
|
14
|
+
automatically applied at startup — no manual migration is normally required
|
|
15
|
+
(see `src/superlocalmemory/storage/migration_runner.py`; `slm db migrate` is
|
|
16
|
+
forward-only: `status`/`--dry-run`/apply, no rollback). Schema downgrade is
|
|
17
|
+
unsupported — restore a verified pre-upgrade backup instead.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- **MCP SDK 2.0.0 (fully-stateless Streamable HTTP).** Pinned `mcp==2.0.0`.
|
|
21
|
+
Replaced deleted `mcp.server.fastmcp.FastMCP` with
|
|
22
|
+
`mcp.server.mcpserver.MCPServer` (same `@tool` decorator and
|
|
23
|
+
`run(transport="stdio")`). Transport knobs
|
|
24
|
+
(`stateless_http`, `json_response`, `streamable_http_path`,
|
|
25
|
+
`transport_security`) are now kwargs to `streamable_http_app()` —
|
|
26
|
+
`_configure_mcp_transport_settings()` returns that kwargs dict.
|
|
27
|
+
**Stateless is the default** (opt out with `SLM_MCP_STATEFUL=1`). Session
|
|
28
|
+
idle-timeout and EventStore SSE resumability are unused under
|
|
29
|
+
`stateless_http=True`. Application-level `session_init` / `close_session`
|
|
30
|
+
are unchanged (orthogonal to transport sessions). SDK lowlevel already
|
|
31
|
+
registers `server/discover` — not hand-written. Product version is passed
|
|
32
|
+
as `MCPServer(version=...)` (no private `_mcp_server.version` poke).
|
|
77
33
|
|
|
78
34
|
### Added
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
- `learning_feedback` now has the `channel` column `pattern_miner` has always
|
|
103
|
-
queried but no schema ever defined. Every fresh database raised
|
|
104
|
-
`no such column: channel` on the first mining pass — caught, logged at
|
|
105
|
-
debug, and silently disabled both channel-performance mining and the
|
|
106
|
-
co-retrieval mining that shared its error handler. Migration `M033`
|
|
107
|
-
backfills existing databases without touching existing rows (#102).
|
|
108
|
-
- The cross-encoder reranker now reports the real reason a model load
|
|
109
|
-
failed instead of a generic timeout message, and no longer retries a
|
|
110
|
-
configuration error five times (~7.5 minutes) before giving up. An
|
|
111
|
-
unrecognized `cross_encoder_backend` value is now rejected by name;
|
|
112
|
-
SuperLocalMemory has no remote/OpenAI-compatible reranker backend, so a
|
|
113
|
-
`cross_encoder_endpoint` config key was previously accepted and silently
|
|
114
|
-
ignored (#103).
|
|
115
|
-
- `slm recall` no longer crashes when a daemon response's
|
|
116
|
-
`retrieval_time_ms` or a result's `score` is present but `null` — the
|
|
117
|
-
keyword-fallback recall path now includes `retrieval_time_ms` in every
|
|
118
|
-
response, matching every other recall path's contract.
|
|
119
|
-
- The MagicMock artifact guard (`.gitignore` and its CI test) now also
|
|
120
|
-
catches the directory-shaped leak (`MagicMock/mock/<id>/`) produced when
|
|
121
|
-
a mock-derived path reaches `mkdir()`, not just the file-shaped leak
|
|
122
|
-
(`<MagicMock id='...'>`) produced by `os.open()`.
|
|
35
|
+
- A unified admission gateway resolves one authenticated actor, active profile,
|
|
36
|
+
and policy decision for every write across the CLI, MCP, HTTP, WebSocket, and
|
|
37
|
+
hook surfaces.
|
|
38
|
+
- Every completed operation carries a durable receipt and a hash-verifiable
|
|
39
|
+
completion manifest spanning all representations.
|
|
40
|
+
- **BackupCoordinator** is available as a coherent, checksum-verified backup
|
|
41
|
+
set primitive (`src/superlocalmemory/infra/backup.py`: `BackupCoordinator.create_backup_set()` /
|
|
42
|
+
`restore_from_manifest()` — shared epoch, per-store SHA-256, manifest hash,
|
|
43
|
+
atomic publish, pre-restore snapshot + rollback). Production backup,
|
|
44
|
+
dashboard, cloud, and export routes currently use the **legacy
|
|
45
|
+
`BackupManager`** independent per-file SQLite `sqlite3.backup()` snapshots
|
|
46
|
+
(one file at a time); companion-store failures are logged as non-critical
|
|
47
|
+
and do not fail the primary `memory.db` snapshot (`_backup_all_dbs`). See
|
|
48
|
+
correction note below.
|
|
49
|
+
- **SLM-Mesh** remains the peer-coordination plane (cross-session / cross-machine
|
|
50
|
+
messages, locks, shared state, inbox/outbox) with mesh MCP tools on the
|
|
51
|
+
`full` / `power` / `mesh` profiles.
|
|
52
|
+
- Documented MCP profile counts for the V4 surface: `full` 42 (default everyday),
|
|
53
|
+
`power` 54, `whole` 87 registered tools; `core` 14, `code` 24, `mesh` 8.
|
|
54
|
+
- Product documentation reframes the release as V4: multi-scope memory and
|
|
55
|
+
profiles, cache/compress context optimization, Entity Explorer and skill
|
|
56
|
+
evolution, Modes A/B/C locality choices, GDPR export/erasure/retention and
|
|
57
|
+
hash-chained audit controls, and the seven-layer retrieval/operations stack.
|
|
123
58
|
|
|
124
|
-
###
|
|
125
|
-
-
|
|
126
|
-
|
|
127
|
-
|
|
59
|
+
### Security
|
|
60
|
+
- Outbound provider requests are validated against server-side request forgery,
|
|
61
|
+
blocking internal metadata endpoints and unresolved hosts.
|
|
62
|
+
- Secrets are scrubbed from content before it is persisted or indexed, on both
|
|
63
|
+
the canonical write path and import.
|
|
64
|
+
- Profile erasure removes every representation — main store, projections,
|
|
65
|
+
full-text and semantic indexes, and the context cache — and reports each count.
|
|
66
|
+
- Mesh peers receive server-assigned identities bound to tenant and project;
|
|
67
|
+
production remote transport rejects plaintext, and shared state rejects
|
|
68
|
+
secret-looking values.
|
|
69
|
+
|
|
70
|
+
### Fixed
|
|
71
|
+
- A corrected fact is re-indexed everywhere, so semantic and keyword recall
|
|
72
|
+
reflect the new content instead of a stale copy.
|
|
73
|
+
- Archived facts are excluded from every read path, including keyword search
|
|
74
|
+
and direct fetch.
|
|
75
|
+
- Schema migrations refuse to run against a database written by a newer build,
|
|
76
|
+
and a migration whose dependency did not complete is held back.
|
|
77
|
+
- In-memory configuration changes are preserved across a save, and unknown or
|
|
78
|
+
externally tuned settings survive a load/save cycle.
|
|
79
|
+
|
|
80
|
+
### Backup scope and offline guidance (correction)
|
|
81
|
+
|
|
82
|
+
*Correction 2026-08-08 — the 2026-08-01 text “Backups are captured as a
|
|
83
|
+
coherent, checksum-verified set and restored atomically …” described the
|
|
84
|
+
`BackupCoordinator` primitive, not the wired production path. The production
|
|
85
|
+
path ( `BackupManager.create_backup()` / `server/routes/backup.py` /
|
|
86
|
+
`maintenance_scheduler` auto-backup / cloud sync / dashboard **Export**
|
|
87
|
+
) remains independent per-file `sqlite3.backup()` snapshots; this entry is
|
|
88
|
+
preserved with this pointer rather than silently rewritten.*
|
|
89
|
+
|
|
90
|
+
- Included stores (legacy path): `memory.db`, `learning.db`, `audit_chain.db`,
|
|
91
|
+
`code_graph.db`, `pending.db`, `audit.db` — only those present on disk; no
|
|
92
|
+
other files are backed up. `memory-*.db` is the primary snapshot;
|
|
93
|
+
`_backup_all_dbs()` copies remaining managed DBs one-by-one.
|
|
94
|
+
Companion-copy exceptions are caught and logged at `warning` as non-critical.
|
|
95
|
+
`lance/` (LanceDB directory) is **not** included by the legacy path; the
|
|
96
|
+
coherent primitive handles it as an out-of-manifest companion.
|
|
97
|
+
- Exclusions: nothing outside `MANAGED_DATABASES`; no coherent epoch or
|
|
98
|
+
cross-store manifest/rollback claim for the production path.
|
|
99
|
+
- Dashboard **Export** (`POST /api/backup/export`) creates a single compressed
|
|
100
|
+
`.db.gz` from the latest `memory.db` snapshot only (`memory-*.db` → gzip).
|
|
101
|
+
It is not a coherent whole-root export.
|
|
102
|
+
- No `BackupCoordinator` epoch/atomic-set / whole-root backup is wired to
|
|
103
|
+
production routes or `slm` subcommands in this release.
|
|
104
|
+
- Legacy backup destination files follow the process **umask**, not source-file
|
|
105
|
+
permission inheritance; there is no unwired whole-root restore route. For
|
|
106
|
+
offline whole-root backup/restore, `slm serve stop` (stop the daemon) first
|
|
107
|
+
so WAL/SHM are checkpointed, then copy the complete data-root store set
|
|
108
|
+
(all present `*.db` plus `-wal`/`-shm` sidecars and `lance/` if present)
|
|
109
|
+
with the destination directory on an encrypted/private volume; verify
|
|
110
|
+
resulting files are owner-only (`0600`/`0700`) after copy.
|
|
111
|
+
- Legacy backup destination follows process umask; do not claim source
|
|
112
|
+
permission inheritance.
|
|
113
|
+
|
|
114
|
+
### Notes
|
|
115
|
+
- Existing memories and configuration are preserved. V4.0.0 M038 (eager) and
|
|
116
|
+
M039 (deferred) are auto-applied at startup; no manual `slm db migrate` is
|
|
117
|
+
normally required. Downgrade requires a verified pre-upgrade complete backup
|
|
118
|
+
(stop daemon before offline copy, include WAL/SHM). No `slm db migrate
|
|
119
|
+
--rollback`; use restore of that backup instead.
|
|
128
120
|
|
|
129
121
|
## [3.8.10] - 2026-07-29 — Reliable startup and MCP writes
|
|
130
122
|
|
|
@@ -2387,7 +2379,7 @@ Hardening release — correctness, stability, and security fixes.
|
|
|
2387
2379
|
**Varun Pratap Bhardwaj**
|
|
2388
2380
|
*Solution Architect*
|
|
2389
2381
|
|
|
2390
|
-
SuperLocalMemory
|
|
2382
|
+
SuperLocalMemory V4 - Intelligent local memory system for AI coding assistants.
|
|
2391
2383
|
|
|
2392
2384
|
---
|
|
2393
2385
|
|
|
@@ -2825,7 +2817,7 @@ We use [Semantic Versioning](https://semver.org/):
|
|
|
2825
2817
|
- **MINOR:** New features (backward compatible, e.g., 2.0.0 → 2.1.0)
|
|
2826
2818
|
- **PATCH:** Bug fixes (backward compatible, e.g., 2.1.0 → 2.1.1)
|
|
2827
2819
|
|
|
2828
|
-
**Current Version:**
|
|
2820
|
+
**Current Version:** v4.0.0 (see top of this file for the active release entry)
|
|
2829
2821
|
**Website:** [superlocalmemory.com](https://superlocalmemory.com)
|
|
2830
2822
|
**npm:** `npm install -g superlocalmemory`
|
|
2831
2823
|
|
|
@@ -2833,7 +2825,7 @@ We use [Semantic Versioning](https://semver.org/):
|
|
|
2833
2825
|
|
|
2834
2826
|
## License
|
|
2835
2827
|
|
|
2836
|
-
SuperLocalMemory V3
|
|
2828
|
+
Early SuperLocalMemory V3 packaging used the [Elastic License 2.0](LICENSE); the current public project license is AGPL-3.0-or-later (see LICENSE at the repository root).
|
|
2837
2829
|
|
|
2838
2830
|
---
|
|
2839
2831
|
|
package/README.md
CHANGED
|
@@ -5,22 +5,41 @@
|
|
|
5
5
|
</picture>
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
|
-
<h1 align="center">SuperLocalMemory
|
|
9
|
-
|
|
10
|
-
<
|
|
11
|
-
|
|
8
|
+
<h1 align="center">SuperLocalMemory V4.0.0</h1>
|
|
9
|
+
|
|
10
|
+
<h2 align="center">Rent the LLM. Own the memory.</h2>
|
|
11
|
+
|
|
12
|
+
<p align="center"><em>Rent an LLM — but own the memory, for your company and for your industry.</em></p>
|
|
13
|
+
|
|
14
|
+
<p align="center"><strong>The governed memory layer for AI agents: local-first, auditable, and built for the compliance obligations teams now actually carry.</strong><br/>
|
|
15
|
+
Models are interchangeable and rented by the token. What your agents <em>remember</em> is
|
|
16
|
+
yours — it is your customers' data, your retention obligations, and your audit trail. SLM
|
|
17
|
+
keeps that layer on infrastructure you control, with multi-workspace isolation, role-based
|
|
18
|
+
access, and GDPR + EU AI Act governance controls built in.</p>
|
|
19
|
+
|
|
20
|
+
<p align="center"><strong>The boundary.</strong> SuperLocalMemory starts with a local runtime;
|
|
21
|
+
provider-backed enrichment, cloud backup, connectors, and proxy use are explicit choices.
|
|
22
|
+
Different products solve different boundaries. Published benchmark evidence carried into V4
|
|
23
|
+
comes from the published V3 research architecture; it is not a claim of a newly rerun V4 package benchmark.</p>
|
|
24
|
+
|
|
25
|
+
<p align="center"><strong>How to check that, rather than believe it.</strong> Every reliability
|
|
26
|
+
guarantee here is stated as a falsifiable invariant, tested under an adversarial condition with a
|
|
27
|
+
negative control, and shipped with the harness that regenerates the evidence:
|
|
28
|
+
<code>python benchmark/run_all.py --trials 200 --output-dir results/</code>. What each experiment
|
|
29
|
+
does <em>not</em> exercise is stated too.</p>
|
|
30
|
+
<p align="center"><code>v4.0.0</code> — one control plane: <strong>SLM-Mesh</strong> peer coordination · multi-scope memory (personal / shared / global) · profiles · Cache · Compress · 7-layer retrieval · code graph · Entity Explorer · skill evolution · Modes A/B/C · GDPR retention & audit chain · bounded loops — across CLI, MCP, dashboard, the <strong>Claude plugin</strong>, the <strong>Codex add-on</strong>, and documented IDE integrations.<br/>
|
|
12
31
|
Proxy: <code>slm wrap claude</code> · MCP: add <code>slm_compress</code> to your config · Skill: zero-config</p>
|
|
13
32
|
<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
33
|
|
|
15
34
|
<p align="center">
|
|
16
|
-
<a href="CHANGELOG.md"><img src="https://img.shields.io/badge/
|
|
35
|
+
<a href="CHANGELOG.md"><img src="https://img.shields.io/badge/v4.0.0-Current_Release-2ea44f?style=for-the-badge&logo=checkmarx&logoColor=white" alt="v4.0.0 — Current Release"/></a>
|
|
17
36
|
<a href="https://arxiv.org/abs/2603.14588"><img src="https://img.shields.io/badge/arXiv-2603.14588-b31b1b?style=for-the-badge&logo=arxiv&logoColor=white" alt="arXiv Paper"/></a>
|
|
18
37
|
<a href="#three-surfaces-proxy--mcp-tools--skill"><img src="https://img.shields.io/badge/Proxy_|_MCP_|_Skill-22c55e?style=for-the-badge" alt="Three Surfaces: Proxy, MCP Tools, Skill"/></a>
|
|
19
38
|
<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>
|
|
20
39
|
<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>
|
|
21
40
|
<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>
|
|
22
41
|
<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>
|
|
23
|
-
<a href="#teams-and-enterprise-memory-
|
|
42
|
+
<a href="#teams-and-enterprise-memory-v4"><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>
|
|
24
43
|
<a href="https://superlocalmemory.com"><img src="https://img.shields.io/badge/Web-superlocalmemory.com-ff6b35?style=for-the-badge" alt="Website"/></a>
|
|
25
44
|
<a href="#dual-interface-mcp--cli"><img src="https://img.shields.io/badge/MCP-Native-blue?style=for-the-badge" alt="MCP Native"/></a>
|
|
26
45
|
<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>
|
|
@@ -35,21 +54,24 @@ SuperLocalMemory is an enterprise-grade, local-first memory control plane for AI
|
|
|
35
54
|
|
|
36
55
|
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.
|
|
37
56
|
|
|
38
|
-
Different products solve different boundaries. The published benchmark evidence
|
|
57
|
+
Different products solve different boundaries. The published LoCoMo benchmark evidence in this README is protocol-scoped evidence from the published V3 research architecture; it is carried forward for continuity and is not a claim of a newly rerun V4 package benchmark.
|
|
39
58
|
|
|
40
|
-
SuperLocalMemory
|
|
59
|
+
SuperLocalMemory V4 combines conventional dense and lexical retrieval with graph, temporal, associative, and statistical relevance scoring in a **7-layer** control plane (admission → queryable core → enrichment → brain → multi-channel retrieval → context safety → operations). The default local runtime does not require Docker, a separately operated graph database, or an API key.
|
|
41
60
|
|
|
42
61
|
**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.
|
|
43
62
|
|
|
44
|
-
**What
|
|
45
|
-
foundation; 3.8.1 is the existing-install stability patch for it:
|
|
63
|
+
**What V4.0.0 ships.** V4 is a *governed* local-first control plane — every canonical write is admitted, policy-authorized, tracked as durable per-store obligations (lexical, temporal, vector), and sealed by a completion manifest, so it is either fully applied or explicitly marked degraded, never silently half-done. Flagship surfaces in this release:
|
|
46
64
|
|
|
47
|
-
- **
|
|
48
|
-
- **
|
|
49
|
-
- **
|
|
50
|
-
- **
|
|
51
|
-
- **
|
|
52
|
-
- **
|
|
65
|
+
- **[SLM-Mesh](#slm-mesh-cross-session--cross-machine-coordination)** — authenticated cross-session and cross-machine peer coordination (messages, locks, shared state, inbox/outbox, optional discovery). Coordination only — not automatic replicated memory.
|
|
66
|
+
- **Multi-scope memory & profiles** — workspaces (profiles) plus `personal` / `shared` / `global` scopes; cross-profile recall is default-deny.
|
|
67
|
+
- **Cache & compression (context optimization)** — exact-match cache with tagged invalidation, safe compression, and opt-in reversible/aggressive paths across proxy, MCP, and skill surfaces.
|
|
68
|
+
- **Entity Explorer & skill evolution** — compiled entity summaries/timelines; opt-in skill lineage, budgets, and verification outcomes.
|
|
69
|
+
- **Modes A / B / C** — local-only (A), on-device LLM enrichment (B), provider-assisted (C). An operating mode records technical locality facts; it does **not** determine EU AI Act legal compliance (that is deployment-context assessment — see [Privacy controls](#privacy-controls-and-operating-modes)).
|
|
70
|
+
- **GDPR posture, retention & audit chain** — export, fail-closed cross-store erasure, retention policies, and a hash-chained audit trail. Engineering controls for compliance programs, not a legal certification.
|
|
71
|
+
- **7-layer retrieval/recall stack & code graph** — multi-channel candidates (semantic, BM25, temporal, Hopfield, spreading activation) plus optional code-graph tools for blast radius and review context.
|
|
72
|
+
- **MCP profiles** — `full` exposes **42** tools (default everyday surface); `power` **54**; `whole` **87** (all registered). Also `core` (14), `code` (24), and `mesh` (8).
|
|
73
|
+
- **Governed write path & verifiable transactions** — admission + policy control, a per-owner obligation ledger, and a hash-sealed completion manifest with a reconciler that redrives unmet obligations.
|
|
74
|
+
- **Self-healing lifecycle & admin remediation** — stale locks cleared on restart; list/resolve stuck operations from CLI, MCP, or the dashboard.
|
|
53
75
|
|
|
54
76
|
SLM is one strand of Qualixar's work on AI reliability engineering: making agent behavior observable, bounded, and reproducible instead of best-effort.
|
|
55
77
|
|
|
@@ -60,7 +82,7 @@ The architecture evaluated in the V3 paper remains the foundation of this releas
|
|
|
60
82
|
Different products solve different boundaries. SLM is for developers who want
|
|
61
83
|
one local-first operating control plane—not only an SDK, managed context API,
|
|
62
84
|
or agent runtime. It combines dated evidence, graph-aware retrieval, cache and
|
|
63
|
-
compression controls,
|
|
85
|
+
compression controls, **SLM-Mesh**, and MCP/CLI/hooks/dashboard/IDE
|
|
64
86
|
surfaces in one install.
|
|
65
87
|
|
|
66
88
|
| If your primary need is… | Product boundary to evaluate |
|
|
@@ -78,24 +100,24 @@ for current primary sources and protocol-scoped benchmark evidence. A LoCoMo
|
|
|
78
100
|
percentage is comparable only when the dataset scope, answer model, judge,
|
|
79
101
|
retrieval stack, and release artifact match.
|
|
80
102
|
|
|
81
|
-
### The
|
|
103
|
+
### The V4 capability architecture
|
|
82
104
|
|
|
83
105
|
SuperLocalMemory is one local control plane for persistent agent context. It is
|
|
84
106
|
not just a vector store: the same runtime can accept evidence, build and govern
|
|
85
107
|
memory, retrieve bounded evidence for an agent, and expose cache, compression,
|
|
86
|
-
and peer-coordination controls through a CLI, MCP, dashboard, and supported
|
|
108
|
+
and **SLM-Mesh** peer-coordination controls through a CLI, MCP, dashboard, and supported
|
|
87
109
|
IDE integrations.
|
|
88
110
|
|
|
89
|
-

|
|
90
112
|
|
|
91
113
|
*Architecture boundary: SQLite + sqlite-vec remain canonical; CozoDB and
|
|
92
|
-
LanceDB are parity-gated projections; Mesh coordinates trusted peers rather
|
|
114
|
+
LanceDB are parity-gated projections; **SLM-Mesh** coordinates trusted peers rather
|
|
93
115
|
than replicating a distributed memory database; connectors are opt-in.*
|
|
94
116
|
|
|
95
117
|
**Memory boundaries:** profiles isolate workspaces by default. Every memory is
|
|
96
118
|
`personal`, `shared` with named profile readers, or `global`; cross-profile
|
|
97
119
|
recall is default-deny and must be explicitly enabled. This scoped sharing is
|
|
98
|
-
local authorization, not SLM
|
|
120
|
+
local authorization, not **SLM-Mesh** synchronization. See
|
|
99
121
|
[shared-memory.md](docs/shared-memory.md).
|
|
100
122
|
|
|
101
123
|
```text
|
|
@@ -130,7 +152,7 @@ health surfaces expose the stages actually completed by the installed runtime.
|
|
|
130
152
|
| **Knowledge graph and entities** | Canonical entities, aliases, entity profiles, graph edges, scenes, timelines, explorer and graph APIs | Stored/derived graph data is evidence, not an instruction authority. |
|
|
131
153
|
| **Scale Engine** | SQLite + sqlite-vec are canonical. CozoDB graph and LanceDB vector projections are managed with prepare → verify → promote → rollback; a structurally detected pre-v3.7 projection can be explicitly adopted. | Promotion is parity-gated and crash-recoverable. Legacy adoption preserves the prior projection as a rollback backup; repeated physical edge rows normalize to one logical edge with the strongest weight. |
|
|
132
154
|
| **Optimize** | Exact cache, tagged invalidation, safe compression, opt-in aggressive prose compression, CCR originals, proxy/MCP/skill surfaces | Only proxy intercepts a primary provider turn. MCP/skill cache results explicitly routed through SLM. |
|
|
133
|
-
| **Mesh** | Authenticated peer messages, inbox/outbox, locks, offline queue, optional discovery and mesh MCP tools | Mesh is coordination, not automatic replicated memory or conflict resolution. |
|
|
155
|
+
| **SLM-Mesh** | Authenticated peer messages, inbox/outbox, locks, offline queue, optional discovery and mesh MCP tools | SLM-Mesh is coordination, not automatic replicated memory or conflict resolution. |
|
|
134
156
|
| **Governance and operations** | Provenance, audit/retention/policy surfaces, export/erasure controls, diagnostics, health, backups and daemon lifecycle | These are engineering controls, not a legal certification. |
|
|
135
157
|
| **Integrations** | CLI, Python SDK, MCP HTTP/stdio, Claude plugin, Codex add-on, supported IDE configurations, Gmail/Calendar/transcript adapters | Hooks, IDE edits, connectors, and networked adapters require explicit operator activation. |
|
|
136
158
|
|
|
@@ -146,7 +168,7 @@ health surfaces expose the stages actually completed by the installed runtime.
|
|
|
146
168
|
| Operations | ingestion-operation state, traces, maintenance and lifecycle work |
|
|
147
169
|
| Entity Explorer and Skill Evolution | compiled entity summaries/timelines; opt-in skill lineage, budgets and verification outcomes |
|
|
148
170
|
| Multi-Agent Memory | per-agent write activity and attribution; memories stamped by `SLM_AGENT_ID`, agent write counts, and trust signals |
|
|
149
|
-
| Mesh Peers | configured peers, inbox/outbox, pending coordination and locks |
|
|
171
|
+
| SLM-Mesh Peers | configured peers, inbox/outbox, pending coordination and locks |
|
|
150
172
|
| Settings and Optimize | mode/provider/configuration; cache, compression and savings telemetry |
|
|
151
173
|
|
|
152
174
|
Dashboard visibility is not a substitute for runtime proof: use `slm doctor`,
|
|
@@ -159,9 +181,9 @@ deployment.
|
|
|
159
181
|
|
|
160
182
|
**[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.
|
|
161
183
|
|
|
162
|
-
### Published LoCoMo evidence (V3 architecture, carried into
|
|
184
|
+
### Published LoCoMo evidence (V3 architecture, carried into V4)
|
|
163
185
|
|
|
164
|
-
The V3 paper evaluates the architecture
|
|
186
|
+
The V3 paper evaluates the multi-channel architecture that V4 still runs. Every figure below
|
|
165
187
|
is protocol-scoped, so a reader can distinguish local retrieval, answer
|
|
166
188
|
construction, and cloud-assisted evaluation rather than treating unlike runs as
|
|
167
189
|
one score.
|
|
@@ -182,7 +204,7 @@ information-geometric layers versus **58.9%** without them: **+12.7pp**.
|
|
|
182
204
|
See [arXiv:2603.14588](https://arxiv.org/abs/2603.14588) and the [official
|
|
183
205
|
LoCoMo paper](https://arxiv.org/abs/2402.17753) for the full protocol,
|
|
184
206
|
ablation table, and limitations. These are published V3 architecture results
|
|
185
|
-
carried into
|
|
207
|
+
carried into V4—not a substitute for a newly rerun release-artifact benchmark.
|
|
186
208
|
|
|
187
209
|
---
|
|
188
210
|
|
|
@@ -294,10 +316,6 @@ quality must be evaluated for the target client and workload; V3.8.0 publishes n
|
|
|
294
316
|
|
|
295
317
|
**Multilingual models:** configure an OpenAI-compatible embedding endpoint such as Ollama, vLLM, LiteLLM, `bge-m3`, `multilingual-e5`, or `Qwen3-Embedding`. Language coverage and retrieval quality depend on the selected model and should be evaluated for the deployment corpus.
|
|
296
318
|
|
|
297
|
-
<a id="remote-embedding-and-rerank-endpoints"></a>
|
|
298
|
-
|
|
299
|
-
**Remote embedding + rerank endpoints.** The bundled reranker `cross-encoder/ms-marco-MiniLM-L-12-v2` is **English-only**, so a Chinese, Japanese, or Arabic corpus is scored by a model that cannot read it. Set `retrieval.cross_encoder_backend: "openai"` plus `retrieval.cross_encoder_endpoint` to route reranking to any Cohere-shaped `POST /v1/rerank` service — llama-server, text-embeddings-inference, Infinity — running a multilingual model such as `BAAI/bge-reranker-v2-m3` (v3.8.12, [#105](https://github.com/qualixar/superlocalmemory/issues/105); the same escape hatch embeddings got in v3.4.24, [#16](https://github.com/qualixar/superlocalmemory/issues/16)). No subprocess and no local model download. An unreachable, slow, or malformed endpoint logs an error and returns fusion-ranked results — SLM never silently substitutes the local English model. Keys, auth, and failure semantics: **[docs/configuration.md](docs/configuration.md#remote-embedding-and-rerank-endpoints)**.
|
|
300
|
-
|
|
301
319
|
### Cache + Compress
|
|
302
320
|
|
|
303
321
|
<a id="three-surfaces-proxy--mcp-tools--skill"></a>
|
|
@@ -327,11 +345,12 @@ actual cost and latency savings depend on the intercepted surface and provider.
|
|
|
327
345
|
|
|
328
346
|
**Savings dashboard:** `slm optimize savings --since 7` — live USD/INR/tokens saved. Hot-reload config, fail-open.
|
|
329
347
|
|
|
330
|
-
### Mesh
|
|
348
|
+
### SLM-Mesh (cross-session / cross-machine coordination)
|
|
331
349
|
|
|
332
350
|
<a id="multi-machine-mesh-coordination"></a>
|
|
351
|
+
<a id="slm-mesh-cross-session--cross-machine-coordination"></a>
|
|
333
352
|
|
|
334
|
-
Mesh
|
|
353
|
+
**SLM-Mesh** is the V4 peer-coordination plane: authenticated messages, locks, shared lightweight state, inbox/outbox, and an offline queue between configured peers (same machine sessions or cross-machine). Optional mDNS discovery (`SLM_MESH_DISCOVERY=on`). It is **not** a replicated or conflict-resolving distributed-memory database — multi-scope memory sharing is a separate local-authorization feature.
|
|
335
354
|
|
|
336
355
|
```bash
|
|
337
356
|
# Machine A (broker)
|
|
@@ -345,7 +364,7 @@ export SLM_MESH_SHARED_SECRET=my-secret-key
|
|
|
345
364
|
slm init
|
|
346
365
|
```
|
|
347
366
|
|
|
348
|
-
|
|
367
|
+
Eight **SLM-Mesh** MCP tools: `mesh_summary`, `mesh_peers`, `mesh_send`, `mesh_inbox`, `mesh_state`, `mesh_lock`, `mesh_events`, `mesh_status`.
|
|
349
368
|
|
|
350
369
|
Full docs: [docs/multi-machine.md](docs/multi-machine.md) · [docs/distributed-deployment.md](docs/distributed-deployment.md)
|
|
351
370
|
|
|
@@ -353,6 +372,8 @@ Full docs: [docs/multi-machine.md](docs/multi-machine.md) · [docs/distributed-d
|
|
|
353
372
|
|
|
354
373
|
## Install Paths
|
|
355
374
|
|
|
375
|
+
> **V4 platform support:** Apple Silicon macOS, 64-bit Windows, and 64-bit Linux. Intel Mac and 32-bit Windows are not supported by the patched `cryptography` 50 runtime.
|
|
376
|
+
|
|
356
377
|
| Path | Command | When |
|
|
357
378
|
|:-----|:--------|:-----|
|
|
358
379
|
| **npm global CLI** (primary) | `npm install -g superlocalmemory` | Node 18+; package-owned virtual environment; system Python is not modified; run `slm setup` explicitly afterward |
|
|
@@ -398,10 +419,10 @@ Control tool surface via `SLM_MCP_PROFILE`:
|
|
|
398
419
|
|:--------|:-----:|:---------|
|
|
399
420
|
| `core` | 14 | Memory, session, and optimize core |
|
|
400
421
|
| `code` | 24 | Core + code-graph tools + profile switching + bounded loops |
|
|
401
|
-
| `mesh` | 8 | Mesh
|
|
422
|
+
| `mesh` | 8 | SLM-Mesh only — multi-session / multi-machine coordination |
|
|
402
423
|
| `full` | 42 | Memory + optimize + evolution + mesh + bounded loops |
|
|
403
424
|
| `power` | 54 | Full + administration, lifecycle, and diagnostics |
|
|
404
|
-
| `whole` |
|
|
425
|
+
| `whole` | 87 | Every registered MCP tool |
|
|
405
426
|
|
|
406
427
|
**Precedence:** `ALL` > `TOOLS` > `PROFILE` > `default`
|
|
407
428
|
|
|
@@ -514,9 +535,9 @@ Available controls include local export and erasure commands, hash-chained audit
|
|
|
514
535
|
|
|
515
536
|
---
|
|
516
537
|
|
|
517
|
-
## Teams and Enterprise Memory (
|
|
538
|
+
## Teams and Enterprise Memory (V4)
|
|
518
539
|
|
|
519
|
-
|
|
540
|
+
V4 includes multi-user, multi-workspace controls for teams and organizations (introduced on the 3.8 line and retained). These are opt-in — personal single-user installs work exactly as before with no required login.
|
|
520
541
|
|
|
521
542
|
### Users and roles
|
|
522
543
|
|
|
@@ -570,12 +591,9 @@ These are engineering controls. Compliance depends on deployment configuration,
|
|
|
570
591
|
|
|
571
592
|
### EU AI Act mode verification
|
|
572
593
|
|
|
573
|
-
SLM includes a per-mode EU AI Act
|
|
594
|
+
SLM includes a per-mode EU AI Act *technical posture* report (`EUAIActChecker`). It records facts the runtime can know — whether data is configured to stay local, whether generative AI is used, and that transparency / human-oversight need deployment evidence.
|
|
574
595
|
|
|
575
|
-
-
|
|
576
|
-
- **Mode C (Provider-assisted)** — flagged non-compliant, because query or enrichment content is sent to a cloud model provider.
|
|
577
|
-
|
|
578
|
-
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).
|
|
596
|
+
**An operating mode does not establish legal compliance under the EU AI Act.** Legal risk classification and conformity assessment depend on intended purpose, affected persons, sector, deployment context, and operator controls. The checker therefore returns `compliant=None` / risk category `undetermined` for every mode and always requires deployment-context review. Mode A/B/C only change technical locality and enrichment options (for example Mode C may send content to a configured provider). See [docs/compliance.md](docs/compliance.md) and `src/superlocalmemory/core/modes.py`.
|
|
579
597
|
|
|
580
598
|
### Deployment tiers
|
|
581
599
|
|
|
@@ -594,7 +612,7 @@ Full reference: [docs/rbac-teams.md](docs/rbac-teams.md) · [docs/deployment-tie
|
|
|
594
612
|
|
|
595
613
|
---
|
|
596
614
|
|
|
597
|
-
## Bounded Loops (
|
|
615
|
+
## Bounded Loops (V4)
|
|
598
616
|
|
|
599
617
|
A bounded loop terminates only when an **independent gate** passes — a test
|
|
600
618
|
suite exit code, a linter, a JSON-schema check, or an SLM-recall condition.
|
|
@@ -625,7 +643,7 @@ Multi-Agent Memory workspace.
|
|
|
625
643
|
|
|
626
644
|
---
|
|
627
645
|
|
|
628
|
-
## Framework Adapters (
|
|
646
|
+
## Framework Adapters (V4)
|
|
629
647
|
|
|
630
648
|
SLM ships nine framework adapters under `ide/integrations/`. Each adapter
|
|
631
649
|
wires SLM as the memory and history provider for the respective framework
|
|
@@ -687,32 +705,16 @@ SuperLocalMemory is backed by three preprints by Varun Pratap Bhardwaj (2026):
|
|
|
687
705
|
Use the citation metadata on the linked arXiv or Zenodo records.
|
|
688
706
|
|
|
689
707
|
## Support / License / Qualixar
|
|
690
|
-
|
|
691
708
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. [Wiki](https://github.com/qualixar/superlocalmemory/wiki) for detailed documentation.
|
|
692
|
-
|
|
693
709
|
GNU Affero General Public License v3.0 (AGPL-3.0). See [LICENSE](LICENSE).
|
|
694
|
-
|
|
695
710
|
For commercial licensing (closed-source, proprietary, or hosted use), see [COMMERCIAL-LICENSE.md](COMMERCIAL-LICENSE.md) or contact varun.pratap.bhardwaj@gmail.com.
|
|
696
|
-
|
|
697
711
|
Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar.
|
|
698
|
-
|
|
699
712
|
Part of [Qualixar](https://qualixar.com) · Author: [Varun Pratap Bhardwaj](https://varunpratap.com)
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
- **[Everything Claude Code (ECC)](https://github.com/affaan-m/everything-claude-code)** inspired SLM's skill-observation patterns; SLM can ingest ECC observations with `slm ingest --source ecc`.
|
|
704
|
-
- **[HKUDS/OpenSpace](https://github.com/HKUDS/OpenSpace)** informed the skill-evolution verification design (arXiv:2604.01687).
|
|
705
|
-
|
|
706
|
-
### Qualixar AI Agent Reliability Platform
|
|
707
|
-
|
|
708
|
-
Qualixar builds open-source infrastructure for AI reliability engineering.
|
|
709
|
-
Start at **[qualixar.com](https://qualixar.com)** or browse the
|
|
710
|
-
[Qualixar research archive](https://huggingface.co/Qualixar).
|
|
713
|
+
Acknowledgments: [Everything Claude Code](https://github.com/affaan-m/everything-claude-code) informed skill observation; [HKUDS/OpenSpace](https://github.com/HKUDS/OpenSpace) informed skill-evolution verification.
|
|
714
|
+
Qualixar builds open-source infrastructure for AI reliability engineering. Start at [qualixar.com](https://qualixar.com) or browse the [research archive](https://huggingface.co/Qualixar).
|
|
711
715
|
|
|
712
716
|
## Star This Project
|
|
713
717
|
|
|
714
718
|
If this project solves a real problem for you, **please star the repo** — it helps other developers discover Qualixar and signals that the AI agent reliability community is growing.
|
|
715
719
|
|
|
716
720
|
[](https://github.com/qualixar/superlocalmemory)
|
|
717
|
-
|
|
718
|
-
The live Star History chart is intentionally not embedded: its upstream service timed out during release validation. The link above is the stable, direct way to star and follow the repository.
|