slm-bot-memory
Cross-bot memory on a shared computer (Grok Bot, Cursor plugin, any host where several agents share one machine). Explains…
Compress large text, tool output, or transcripts to reduce context-window usage while keeping the full 1M window intact — call slm_compress(content, mode, reversible, ttl_seconds) to shrink content; if the result is lossy a ccr_id is returned so you can call slm_retrieve(ccr_id)
Claude Code
$ npx -y skills add qualixar/superlocalmemory --skill slm-compress --agent claude-code
Codex
$ npx skills add qualixar/superlocalmemory --skill slm-compress -a codex -y
Cursor
$ npx skills add qualixar/superlocalmemory --skill slm-compress -a cursor -y
Gemini CLI
$ npx skills add qualixar/superlocalmemory --skill slm-compress -a gemini-cli -y
GitHub Copilot
$ npx skills add qualixar/superlocalmemory --skill slm-compress -a github-copilot -y
OpenCode
$ npx skills add qualixar/superlocalmemory --skill slm-compress -a opencode -y
Windsurf
$ npx skills add qualixar/superlocalmemory --skill slm-compress -a windsurf -y
name: slm-compress description: Compress large text, tool output, or transcripts to reduce context-window usage while keeping the full 1M window intact — call slm_compress(content, mode, reversible, ttl_seconds) to shrink content; if the result is lossy a ccr_id is returned so you can call slm_retrieve(ccr_id) later to recover the exact original; always fail-open (ok:false → continue with the original). when_to_use: "compress context, shrink output, save tokens, context window full, long transcript, compress tool result, reduce tokens, large output, compress text" allowed-tools: slm_compress, slm_retrieve, Bash(slm:*)
When a tool output, transcript, or accumulated context grows large enough to crowd out working space, `slm_compress` reduces it in-place. The compressed form is used for the remainder of the session; the exact original is recoverable on demand via `slm_retrieve`. This works without a proxy and without touching `ANTHROPIC_BASE_URL`, so the full 1M context window is never sacrificed.
slm_compress(
content: str, # required — text to compress (max 1 MB)
mode: str = "auto", # "normalize" | "auto" | "aggressive"
reversible: bool = True, # store original in CCR for later retrieval
ttl_seconds: int = 86400, # CCR lifetime in seconds (default 24 h)
) -> dict| Key | Type | Meaning | |-----|------|---------| | `ok` | bool | `True` on success; `False` on internal error or empty input | | `compressed` | str | Compressed text (or original on failure) | | `strategy` | str | Which strategy was applied (e.g. `"normalize"`, `"none"`) | | `tokens_before` | int | Word-count estimate of the input | | `tokens_after` | int | Word-count estimate of the output | | `ratio` | float | `tokens_after / tokens_before` (lower = more compact) | | `lossy` | bool | Whether information was removed | | `ccr_id` | str \| None | UUID4 session token; present only when `lossy=True` and `reversible=True` | | `note` | str \| None | Human-readable note (e.g. warnings, recovery hint) |
When `slm_compress` returns `lossy: true`, the original is stored under the `ccr_id`. Use `slm_retrieve` to get it back:
slm_retrieve(ccr_id: str) -> dict
| Key | Type | Meaning | |-----|------|---------| | `ok` | bool | `True` when content was found | | `content` | str \| None | Original text, decoded from UTF-8 (or Latin-1 fallback) | | `size_bytes` | int | Byte length of the stored original | | `error` | str \| None | Error message on failure; `None` on success |
`ccr_id` must be a valid UUID4. Non-UUID4 strings return `ok: false` immediately.
`ccr_id` values are **unguessable session tokens**, and the stored original can be read back only by the same agent (or, for a remote caller, the same access key) that compressed it. Treat them like short-lived credentials:
**Compress when:**
**Do NOT compress:**
`slm_compress` never raises an exception. On any internal error it returns:
{ "ok": false, "compressed": "<original input>", "ratio": 1.0, ... }**When `ok` is `false`, continue with the original content.** Never block a task waiting for compression to succeed.
# Step 1: compress a large tool output
result = await slm_compress(
content=long_log_text,
mode="auto",
reversible=True,
ttl_seconds=3600,
)
if result["ok"]:
working_text = result["compressed"]
ccr_id = result["ccr_id"] # None if lossless
else:
working_text = long_log_text # fail-open
ccr_id = None
# ... work with working_text ...
# Step 2: restore original when needed (e.g. before final summary)
if ccr_id:
restore = await slm_retrieve(ccr_id=ccr_id)
if restore["ok"]:
original_text = restore["content"]Prefer the MCP tools above. If you must use the command line:
slm compress status [--json] slm compress mode safe|aggressive [--json] slm compress code on|off [--json] slm compress prose on|off [--json] slm compress ccr on|off [--json] slm compress align on|off [--json]
These subcommands control daemon-level compression settings — they do not compress content inline. For inline compression, use `slm_compress` via MCP.
Content over 1 MB (1 000 000 bytes UTF-8) is processed but `reversible` is forced to `False` and `ccr_id` will be `None`. The `note` field will state `"content over 1MB: ccr skipped"`.
---
-
Open-source governed, local-first memory control plane for AI agents and teams. arXiv:2608.08253
Cross-bot memory on a shared computer (Grok Bot, Cursor plugin, any host where several agents share one machine). Explains…
KV cache for repeated reads — call slm_cache_get(key) first; on a miss do the expensive operation then slm_cache_set(key, value,…
First-session orientation for SuperLocalMemory on a headless bot host (Grok Bot, or any Cursor-format plugin install with no…
Governed-workspace behavior for SuperLocalMemory. Covers roles (admin/member/viewer) and company mode, who administers a…
Index and query a codebase as a structural graph — build the code graph, trace blast radius of a change, find…
Use this skill to extract structured Markdown/JSON from PDFs and document images—tables with cell-level precision, formulas as…
Estimates intracellular metabolic fluxes from steady-state carbon-13 isotope-tracing measurements using validated atom maps,…