Sign inSign up

sbx/claude-mem-kit

Verified Publisher

By Docker, Inc

Updated 13 days ago

Persistent context across Claude Code sessions: captures session activity into SQLite+FTS5, compr...

Sandbox Kit
0

1.6K

sbx/claude-mem-kit repository overview

Digest

sha256:89a994c0fb98…

Size

2 Bytes

Schema

v2

Pushed

13 days ago

Specificationspec.yaml

MIXIN

Persistent context across Claude Code sessions: captures session activity into SQLite+FTS5, compresses with the Agent SDK, and injects relevant memory at session start. Tracks the latest claude-mem release.


Network Egress

registry.npmjs.org

*.npmjs.org

bun.sh:443

astral.sh:443

github.com:443

api.github.com:443

objects.githubusercontent.com:443

release-assets.githubusercontent.com:443

raw.githubusercontent.com:443

pypi.org:443

files.pythonhosted.org:443

chroma-onnx-models.s3.amazonaws.com:443

archive.ubuntu.com

security.ubuntu.com

ports.ubuntu.com

download.docker.com

Apply this mixin to a sandbox

sbx run <agent> --kit sbx/claude-mem-kit:latest

Make sure you have docker sbx installed

Run the following command to install sbx on your machine.

macOS
brew install docker/tap/sbx
Windows
winget install Docker.sbx
Learn more about docker sbx

claude-mem

A mixin installing thedotmack/claude-mem — persistent context across Claude Code sessions: session activity is captured into SQLite+FTS5 under ~/.claude-mem/, compressed via the Agent SDK, and relevant memory is injected at session start. Installs claude-mem@latest (unpinned — see Design notes for why). The content is Claude-Code-specific, so the kit declares requires.agent: claude.

Usage

Pair it with the built-in claude agent, from its published OCI artifact on Docker Hub:

sbx run --kit "docker.io/sbx/claude-mem-kit:latest" claude

Or from a git URL targeting this repo:

sbx run --kit "git+https://github.com/docker/sbx-kits-contrib.git#dir=claude-mem" claude

Search past sessions with the bundled mem-search skill or the mcp-search MCP tools. The worker (viewer UI + live activity stream) listens on port 37700:

sbx ports <sandbox> --publish 37700/tcp

Design notes

  • Unpinned version (@latest): this kit deliberately does not pin claude-mem to a specific release, unlike this repo's usual convention (see skills/kit-author/topics/authoring.md). claude-mem's own hook scripts compare the plugin's marketplace-tracked version against the installed worker's version and recycle (kill + respawn) the worker on any mismatch. Pinning the install to an older version than the marketplace metadata tracks causes a permanent mismatch, which sends every hook into a recycle loop that fails outright (worker unreachable, blocking Read/Bash/Stop hooks every call) — see upstream thedotmack/claude-mem#3378, #3568, #3161, and the open tracking issue #3605. Tracking @latest keeps the installed version aligned with the marketplace metadata in the common case, narrowing the mismatch window to the brief lag between a new claude-mem release and the marketplace catalog picking it up — at the cost of losing reproducibility across sandboxes created at different times, and inheriting whatever regressions ship in a new claude-mem release (claude-mem's issue tracker shows a fairly high rate of worker-lifecycle regressions). Re-introduce a pin if this trade proves worse in practice.
  • Explicit --provider claude: mandatory for an unattended install. Since claude-mem v13.20.0 the installer aborts before doing any work when stdin is not a TTY and no provider was given, so the flag is what keeps this step from failing outright. claude is also the only provider that completes without interaction: it uses the sandbox's own Anthropic credentials, where the alternatives (CMEM Pro, Gemini, OpenRouter) need a browser OAuth pairing or a preconfigured personal API key. Upstream's README still describes the pre-13.20.0 behavior — see thedotmack/claude-mem#3893.
  • Settings reconciler: claude-mem's installer merges enabledPlugins into ~/.claude/settings.json, while the platform seeds the same file at startup only when missing — and the two race at sandbox creation. The kit ships an idempotent startup reconciler that ensures both the platform keys (SYNCed with the claude kit, driven by SBX_CRED_ANTHROPIC_MODE) and the enabledPlugins entry are present, never overwriting existing keys. Trace at /tmp/claude-mem-reconcile.log.
  • Telemetry off at the source, scoped to claude-mem: upstream's PostHog telemetry is ON by default; the kit sets CLAUDE_MEM_TELEMETRY=0 and does not allow-list us.i.posthog.com. The cross-tool DO_NOT_TRACK convention is deliberately not set — it would silence the base claude kit and every other tool in the sandbox, which is not a mixin's call to make. The missing allow-list entry is the durable half of this: it holds even if upstream renames the variable.
  • First memory compression uses your existing claude auth (the proxy wiring from the parent kit); first embed lazily downloads Chroma's ONNX model (~80MB, allow-listed S3 host).
  • The installer auto-installs Bun and uv if missing (bun.sh / astral.sh are allow-listed for install time).

Debugging

sbx exec <sandbox> -- cat /tmp/claude-mem-reconcile.log
sbx exec <sandbox> -- cat /home/agent/.claude/settings.json
sbx exec <sandbox> -- ls /home/agent/.claude-mem/

This listing is prepared by Docker. All third-party product names, logos, and trademarks are the property of their respective owners and are used solely for identification. Docker claims no interest in those marks, and no affiliation, sponsorship, or endorsement is implied.