superlocalmemory 4.0.0 → 4.0.1
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 +11 -0
- package/README.md +8 -7
- package/package.json +1 -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 +1 -1
- package/plugin-src/skills/slm-graph/SKILL.md +1 -1
- package/plugin-src/skills/slm-loop/SKILL.md +1 -1
- package/plugin-src/skills/slm-mesh/SKILL.md +1 -1
- package/plugin-src/skills/slm-profile/SKILL.md +1 -1
- 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 +1 -1
- package/plugin-src/skills/slm-session/SKILL.md +1 -1
- package/plugin-src/skills/slm-status/SKILL.md +1 -1
- package/pyproject.toml +3 -3
- package/src/superlocalmemory/__init__.py +1 -1
- package/src/superlocalmemory/server/ui.py +7 -2
- package/src/superlocalmemory/server/unified_daemon.py +12 -4
- package/src/superlocalmemory/ui/index.html +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,17 @@ All notable changes to SuperLocalMemory will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [4.0.1] - 2026-08-09 — Dashboard and operations-status correctness
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- The packaged dashboard identifies itself as SuperLocalMemory V4 and uses an
|
|
12
|
+
absolute packaged favicon path. Both unified and standalone dashboard servers
|
|
13
|
+
now provide the conventional `/favicon.ico` route by redirecting to the
|
|
14
|
+
packaged SVG icon.
|
|
15
|
+
- The daemon's operations-status counters now receive their FastAPI application
|
|
16
|
+
explicitly, so persisted dead-letter, degraded-manifest, and exhausted-
|
|
17
|
+
obligation counts cannot be silently reported as zero.
|
|
18
|
+
|
|
8
19
|
## [4.0.0] - 2026-08-01 — Verifiable memory transactions
|
|
9
20
|
|
|
10
21
|
Version 4.0 hardens the full lifecycle of a memory operation — admission,
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
</picture>
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
|
-
<h1 align="center">SuperLocalMemory V4.0.
|
|
8
|
+
<h1 align="center">SuperLocalMemory V4.0.1</h1>
|
|
9
9
|
|
|
10
10
|
<h2 align="center">Rent the LLM. Own the memory.</h2>
|
|
11
11
|
|
|
@@ -27,12 +27,13 @@ guarantee here is stated as a falsifiable invariant, tested under an adversarial
|
|
|
27
27
|
negative control, and shipped with the harness that regenerates the evidence:
|
|
28
28
|
<code>python benchmark/run_all.py --trials 200 --output-dir results/</code>. What each experiment
|
|
29
29
|
does <em>not</em> exercise is stated too.</p>
|
|
30
|
-
<p align="center"><code>v4.0.
|
|
30
|
+
<p align="center"><code>v4.0.1</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/>
|
|
31
31
|
Proxy: <code>slm wrap claude</code> · MCP: add <code>slm_compress</code> to your config · Skill: zero-config</p>
|
|
32
|
-
<p align="center"><strong>
|
|
32
|
+
<p align="center"><strong>4 public research records</strong> · V4 preprint: <a href="https://zenodo.org/records/21853302">Zenodo 21853302</a> (<a href="https://doi.org/10.5281/zenodo.21853302">DOI 10.5281/zenodo.21853302</a>) · prior arXiv preprints: <a href="https://arxiv.org/abs/2603.02240">2603.02240</a> · <a href="https://arxiv.org/abs/2603.14588">2603.14588</a> · <a href="https://arxiv.org/abs/2604.04514">2604.04514</a>. The V4 arXiv submission is pending public announcement.</p>
|
|
33
33
|
|
|
34
34
|
<p align="center">
|
|
35
|
-
<a href="CHANGELOG.md"><img src="https://img.shields.io/badge/v4.0.
|
|
35
|
+
<a href="CHANGELOG.md"><img src="https://img.shields.io/badge/v4.0.1-Current_Release-2ea44f?style=for-the-badge&logo=checkmarx&logoColor=white" alt="v4.0.1 — Current Release"/></a>
|
|
36
|
+
<a href="https://zenodo.org/records/21853302"><img src="https://img.shields.io/badge/Zenodo-10.5281%2Fzenodo.21853302-1682D4?style=for-the-badge&logo=zenodo&logoColor=white" alt="V4 paper on Zenodo: 10.5281/zenodo.21853302"/></a>
|
|
36
37
|
<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>
|
|
37
38
|
<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>
|
|
38
39
|
<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>
|
|
@@ -60,7 +61,7 @@ SuperLocalMemory V4 combines conventional dense and lexical retrieval with graph
|
|
|
60
61
|
|
|
61
62
|
**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.
|
|
62
63
|
|
|
63
|
-
**What V4.0.
|
|
64
|
+
**What V4.0.1 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:
|
|
64
65
|
|
|
65
66
|
- **[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
67
|
- **Multi-scope memory & profiles** — workspaces (profiles) plus `personal` / `shared` / `global` scopes; cross-profile recall is default-deny.
|
|
@@ -693,11 +694,11 @@ configuration for that framework.
|
|
|
693
694
|
Open the web dashboard with `slm dashboard`; workspaces appear only when their
|
|
694
695
|
runtime capability is enabled and healthy. See [CHANGELOG.md](CHANGELOG.md) for
|
|
695
696
|
the complete release history.
|
|
696
|
-
|
|
697
697
|
## Research Papers
|
|
698
698
|
|
|
699
|
-
SuperLocalMemory
|
|
699
|
+
SuperLocalMemory has a V4 Zenodo preprint and three earlier arXiv preprints (2026):
|
|
700
700
|
|
|
701
|
+
- **SuperLocalMemory 4.0: The Governed Memory Operating System for AI Agents:** [Zenodo 21853302](https://zenodo.org/records/21853302) · [DOI 10.5281/zenodo.21853302](https://doi.org/10.5281/zenodo.21853302). The arXiv submission is pending public announcement.
|
|
701
702
|
- **The Living Brain (V3.3):** [arXiv:2604.04514](https://arxiv.org/abs/2604.04514) · [Zenodo 19435120](https://zenodo.org/records/19435120)
|
|
702
703
|
- **Information-Geometric Foundations (V3):** [arXiv:2603.14588](https://arxiv.org/abs/2603.14588) · [Zenodo 19038659](https://zenodo.org/records/19038659)
|
|
703
704
|
- **Trust & Behavioral Foundations (V2):** [arXiv:2603.02240](https://arxiv.org/abs/2603.02240) · [Zenodo 18709670](https://zenodo.org/records/18709670)
|
package/package.json
CHANGED
package/plugin/CLAUDE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- BEGIN SuperLocalMemory v4.0.
|
|
1
|
+
<!-- BEGIN SuperLocalMemory v4.0.1 -->
|
|
2
2
|
|
|
3
3
|
## SuperLocalMemory (SLM) — Agent Rules
|
|
4
4
|
|
|
@@ -39,6 +39,6 @@ slm-recall · slm-remember · slm-session · slm-status · slm-cache · slm-comp
|
|
|
39
39
|
### Subagents
|
|
40
40
|
slm-memory-advisor (memory decisions, session hygiene, scope/profile guidance) · slm-optimize-advisor (context compression + KV cache) · slm-governance-advisor (scope/roles/compliance/GDPR)
|
|
41
41
|
|
|
42
|
-
<!-- END SuperLocalMemory v4.0.
|
|
42
|
+
<!-- END SuperLocalMemory v4.0.1 -->
|
|
43
43
|
|
|
44
|
-
SuperLocalMemory v4.0.
|
|
44
|
+
SuperLocalMemory v4.0.1 · Qualixar · AGPL-3.0-or-later
|
|
@@ -77,4 +77,4 @@ slm-scope · slm-governance · slm-profile · slm-remember · slm-recall
|
|
|
77
77
|
# What NOT to do
|
|
78
78
|
Never session_init twice; never forget without dry-run preview; never store secrets; never bypass role checks; never claim an erasure succeeded without verifying via recall.
|
|
79
79
|
|
|
80
|
-
SuperLocalMemory v4.0.
|
|
80
|
+
SuperLocalMemory v4.0.1 · Qualixar · AGPL-3.0-or-later
|
|
@@ -46,4 +46,4 @@ slm-recall · slm-remember · slm-session · slm-scope · slm-profile · slm-gov
|
|
|
46
46
|
# What NOT to do
|
|
47
47
|
Never session_init twice; never forget dry_run=False without reporting preview; never dump a whole file into remember; never invent a memory; never claim "saved" without success:true / clean CLI exit; never bypass scope or governance restrictions.
|
|
48
48
|
|
|
49
|
-
SuperLocalMemory v4.0.
|
|
49
|
+
SuperLocalMemory v4.0.1 · Qualixar · AGPL-3.0-or-later
|
|
@@ -41,4 +41,4 @@ slm-compress · slm-cache · slm-status · slm-profile
|
|
|
41
41
|
# What NOT to do
|
|
42
42
|
Never compress code-for-edit/JSON-to-parse/<500 chars; never store secrets/ccr_ids; never let optimize failure block/alter the task; never claim a specific savings %; never carry ccr_ids across profile switches.
|
|
43
43
|
|
|
44
|
-
SuperLocalMemory v4.0.
|
|
44
|
+
SuperLocalMemory v4.0.1 · Qualixar · AGPL-3.0-or-later
|
package/plugin/requirements.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
superlocalmemory==4.0.
|
|
1
|
+
superlocalmemory==4.0.1
|
|
@@ -128,4 +128,4 @@ When the SLM MCP server is unavailable, use these CLI equivalents:
|
|
|
128
128
|
- **slm-optimize-advisor** — context compression and KV cache
|
|
129
129
|
- **slm-governance-advisor** — scope/role compliance, retention policies, GDPR
|
|
130
130
|
|
|
131
|
-
SuperLocalMemory v4.0.
|
|
131
|
+
SuperLocalMemory v4.0.1 · Qualixar · AGPL-3.0-or-later
|
package/pyproject.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "superlocalmemory"
|
|
3
|
-
version = "4.0.
|
|
3
|
+
version = "4.0.1"
|
|
4
4
|
description = "Local-first agent memory with auditable hybrid retrieval"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "AGPL-3.0-or-later"
|
|
@@ -90,8 +90,8 @@ dependencies = [
|
|
|
90
90
|
# the ~560MB model downloads on first setup/warmup (fail-open). Verified the
|
|
91
91
|
# pin does NOT disturb the transformers/torch/numpy pins above.
|
|
92
92
|
"llmlingua==0.2.2",
|
|
93
|
-
# LLMLingua pulls NLTK transitively. Pin the
|
|
94
|
-
# installs cannot resolve to the vulnerable 3.9.x line.
|
|
93
|
+
# LLMLingua pulls NLTK transitively. Pin above the disclosed traversal
|
|
94
|
+
# advisories so clean installs cannot resolve to the vulnerable 3.9.x line.
|
|
95
95
|
"nltk==3.10.0",
|
|
96
96
|
]
|
|
97
97
|
|
|
@@ -32,7 +32,7 @@ if "OMP_NUM_THREADS" not in os.environ:
|
|
|
32
32
|
os.environ["OMP_NUM_THREADS"] = "2"
|
|
33
33
|
# ---------------------------------------------------------------------------
|
|
34
34
|
|
|
35
|
-
__version__ = "4.0.
|
|
35
|
+
__version__ = "4.0.1"
|
|
36
36
|
|
|
37
37
|
_REQUIRED_VERSIONS = {
|
|
38
38
|
"sentence_transformers": "5.3.0",
|
|
@@ -43,7 +43,7 @@ sys.path = [p for p in sys.path if p not in ("", _script_dir)]
|
|
|
43
43
|
try:
|
|
44
44
|
from fastapi import FastAPI
|
|
45
45
|
from fastapi.staticfiles import StaticFiles
|
|
46
|
-
from fastapi.responses import HTMLResponse
|
|
46
|
+
from fastapi.responses import HTMLResponse, RedirectResponse
|
|
47
47
|
from fastapi.middleware.cors import CORSMiddleware
|
|
48
48
|
from fastapi.middleware.gzip import GZipMiddleware
|
|
49
49
|
import uvicorn
|
|
@@ -73,7 +73,7 @@ def create_app() -> FastAPI:
|
|
|
73
73
|
"""Create and configure the FastAPI application."""
|
|
74
74
|
application = FastAPI(
|
|
75
75
|
title="SuperLocalMemory V4 UI Server",
|
|
76
|
-
description="
|
|
76
|
+
description="Governed memory dashboard with trust, learning, and compliance controls.",
|
|
77
77
|
version=SLM_VERSION,
|
|
78
78
|
docs_url="/api/docs",
|
|
79
79
|
redoc_url="/api/redoc",
|
|
@@ -233,6 +233,11 @@ def create_app() -> FastAPI:
|
|
|
233
233
|
)
|
|
234
234
|
return index_path.read_text()
|
|
235
235
|
|
|
236
|
+
@application.get("/favicon.ico", include_in_schema=False)
|
|
237
|
+
async def favicon():
|
|
238
|
+
"""Serve the packaged SVG icon for browsers that request favicon.ico."""
|
|
239
|
+
return RedirectResponse(url="/static/favicon.svg", status_code=307)
|
|
240
|
+
|
|
236
241
|
@application.get("/health")
|
|
237
242
|
async def health_check():
|
|
238
243
|
"""Health check endpoint."""
|
|
@@ -3467,7 +3467,7 @@ def _register_dashboard_routes(application: FastAPI) -> None:
|
|
|
3467
3467
|
_data_io_mod.ws_manager = ws_manager
|
|
3468
3468
|
|
|
3469
3469
|
# Root page
|
|
3470
|
-
from fastapi.responses import HTMLResponse, JSONResponse
|
|
3470
|
+
from fastapi.responses import HTMLResponse, JSONResponse, RedirectResponse
|
|
3471
3471
|
|
|
3472
3472
|
# v3.4.23: /api/version — dashboard polls this to detect daemon upgrades
|
|
3473
3473
|
# and auto-reload stale tabs (see ui/js/core.js::checkVersionFingerprint).
|
|
@@ -3531,6 +3531,11 @@ def _register_dashboard_routes(application: FastAPI) -> None:
|
|
|
3531
3531
|
html = index_path.read_text()
|
|
3532
3532
|
return html.replace("__SLM_VERSION__", _SLM_VERSION)
|
|
3533
3533
|
|
|
3534
|
+
@application.get("/favicon.ico", include_in_schema=False)
|
|
3535
|
+
async def favicon():
|
|
3536
|
+
"""Serve the packaged SVG icon for browsers that request favicon.ico."""
|
|
3537
|
+
return RedirectResponse(url="/static/favicon.svg", status_code=307)
|
|
3538
|
+
|
|
3534
3539
|
def _register_daemon_routes(application: FastAPI) -> None:
|
|
3535
3540
|
"""Add daemon-specific routes for CLI integration."""
|
|
3536
3541
|
global _last_activity
|
|
@@ -3695,7 +3700,7 @@ def _register_daemon_routes(application: FastAPI) -> None:
|
|
|
3695
3700
|
"active_profile": profile_snapshot.profile_id,
|
|
3696
3701
|
"profile_generation": profile_snapshot.generation,
|
|
3697
3702
|
# Wave-3: operational failure counts (visible to all team members)
|
|
3698
|
-
**_ops_failure_counts(engine),
|
|
3703
|
+
**_ops_failure_counts(engine, application),
|
|
3699
3704
|
# issue #107: does this daemon's *imported* code still match the
|
|
3700
3705
|
# installed distribution? ``version`` above reports what this
|
|
3701
3706
|
# process loaded, which is self-consistent and therefore cannot
|
|
@@ -4271,7 +4276,7 @@ def _register_daemon_routes(application: FastAPI) -> None:
|
|
|
4271
4276
|
# "Optimizing memory…" line from this. Defaults to idle before start.
|
|
4272
4277
|
"self_heal": globals().get("_SELF_HEAL_STATUS", {"state": "idle"}),
|
|
4273
4278
|
# Wave-3: operational failure counts (dead-letter, degraded, stalled)
|
|
4274
|
-
**_ops_failure_counts(engine),
|
|
4279
|
+
**_ops_failure_counts(engine, application),
|
|
4275
4280
|
}
|
|
4276
4281
|
|
|
4277
4282
|
@application.get("/api/v3/components")
|
|
@@ -4870,7 +4875,7 @@ def _terminalize_orphan_operation(engine, operation_id: str) -> None:
|
|
|
4870
4875
|
)
|
|
4871
4876
|
|
|
4872
4877
|
|
|
4873
|
-
def _ops_failure_counts(engine) -> dict:
|
|
4878
|
+
def _ops_failure_counts(engine, application) -> dict:
|
|
4874
4879
|
"""Return Wave-3 operational failure counts for /status and /health.
|
|
4875
4880
|
|
|
4876
4881
|
Always returns a dict (never raises). Counts default to 0 on any error.
|
|
@@ -4885,6 +4890,9 @@ def _ops_failure_counts(engine) -> dict:
|
|
|
4885
4890
|
"writer_stalled_op_id": None,
|
|
4886
4891
|
"writer_stalled_age_s": None,
|
|
4887
4892
|
}
|
|
4893
|
+
# ``application`` is explicitly passed by the route handlers. There is no
|
|
4894
|
+
# module-global FastAPI app; relying on one silently returned all-zero
|
|
4895
|
+
# counters whenever this helper caught the resulting NameError.
|
|
4888
4896
|
# Writer stall info from canonical coordinator
|
|
4889
4897
|
try:
|
|
4890
4898
|
writer_runtime = getattr(application.state, "canonical_remember_runtime", None)
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
compares this to /api/version and hard-reloads + clears localStorage
|
|
8
8
|
on mismatch, so the browser cannot show stale UI after an upgrade. -->
|
|
9
9
|
<meta name="slm-version" content="__SLM_VERSION__">
|
|
10
|
-
<title>SuperLocalMemory
|
|
11
|
-
<link rel="icon" type="image/svg+xml" href="static/favicon.svg">
|
|
10
|
+
<title>SuperLocalMemory V4 — Dashboard</title>
|
|
11
|
+
<link rel="icon" type="image/svg+xml" href="/static/favicon.svg">
|
|
12
12
|
|
|
13
13
|
<!-- Bootstrap CSS (vendored locally v3.4.21 — no CDN calls, works offline) -->
|
|
14
14
|
<link href="static/vendor/bootstrap.min.css" rel="stylesheet">
|