Releases: thedotmack/claude-mem
Release list
v13.11.0
Worker-native cloud sync (PR #3182)
The standalone cloud-sync.mjs daemon is retired. The worker now syncs memories itself — every local write nudges a background flusher that drains unsynced rows to cmem.ai, with no separate process to install or babysit.
New:
CloudSyncflusher: write-site nudges, 1.5s debounce coalescing write bursts, single-flight flush, 200-row/2MB pages, 30s request timeout, capped exponential backoff on failureGET /api/sync/status— pending counts per kind, last flush time, last error/cloud-syncskill — status checks, first-run credential migration from the legacy.cloud-sync.env, daemon retirement, and worker restart runbook
Fixed:
- Prompts now join through
sdk_sessionsto push their realmemory_session_id/projectinstead of an unresolvable fallback — cloud-side prompt-to-session views (Summary ⇄ Prompt toggle, Replay) can now actually find their prompt - Schema v40 self-repair: on upgrade, every previously-synced prompt (including ones uploaded by the legacy daemon) is re-queued and re-pushed through the fixed mapper; a backfill lane header suppresses realtime broadcast storms during that re-push
- Closed a race where a session's memory id registering while its prompt's upload was still in flight could leave that prompt permanently mis-keyed in the cloud — the stamp is now guarded per row and re-pushes with the corrected mapping instead
Migration: fully automatic and backward compatible. Existing standalone cloud-sync users are migrated on first /cloud-sync run after upgrading; installs with no cloud sync configured are unaffected.
v13.10.3-community-edge.0 community edge
Community edge release for integrated batches 4-9. See PR #3172
and plans/2026-07-07-community-edge-batches-4-9-integration.md.
v13.10.2
Patch release focused on cross-platform stability and worker/runtime correctness.
Fixes
- Worker host: clients now honor
CLAUDE_MEM_WORKER_HOST(the address the server actually binds), with IPv6 literals bracketed correctly in health checks and display URLs. - Worker identity: cache/marketplace/MCP/CLI/restart launches converge on one worker bundle (stops version-skew from two builds on one port).
- Windows: centralized spawn shims remove the
shell:truefootgun; codex hooks emit a Windows-executable command instead of a POSIX-only one. - Install:
repairnow restores the marketplace runtime root (not just the cache); ships theplugin/sqliteruntime modules that were causingMODULE_NOT_FOUNDon clean installs. - SQLite/settings: atomic settings writes,
busy_timeoutto avoidSQLITE_BUSYunder concurrent worker/hook access, a migration column re-check, and removal of an index create that could crash boot on legacy duplicate rows. - Supervisor: preserves
HTTPS_PROXYand Bedrock/Vertex skip-auth env for the SDK subprocess. - Worktree: relative
gitdir:pointers resolved correctly.
Docs
- New Release Branches guide (main / core-dev / community-edge) with instructions for running the non-stable lines locally.
Deliberately excluded: client-side observer truncation (kept out per #3096) and project-identity re-keying (kept the #2663 repo-root key).
v13.10.1
Fixes
- Codex SessionStart hook no longer fails at startup. When a hook errored before its handler ran (missing
session_id, invalidcwd, or a missing transcript path), claude-mem fell back to a bare{"continue":true}regardless of which hook fired. Codex's strictSessionStartvalidator rejects that shape as "invalid session start JSON output," breaking context injection at Codex startup. The fallback now emits a validhookSpecificOutput: { hookEventName: "SessionStart", additionalContext: "" }for thecontexthook, matching what Codex expects. - Fixed a related gap where the Codex adapter silently dropped an explicit empty-string
additionalContextfrom its output instead of preserving it, which could leave the SessionStart payload incomplete.
v13.10.0
Antigravity CLI support, Gemini CLI removed
Google deprecated Gemini CLI's free/individual tier (cutoff June 18, 2026) in favor of Antigravity CLI, the official successor announced May 19, 2026. This release migrates claude-mem accordingly.
Removed
- Gemini CLI host integration (adapter, installer, IDE-detection entry, hooks, dedicated docs/tests). The separate, still-supported Gemini LLM/observation provider (
CLAUDE_MEM_GEMINI_API_KEY,GeminiProvider) is unaffected.
Added
- Full Antigravity CLI (
agy) support at feature parity: hooks (7-event map sharing Gemini CLI's proven~/.gemini/settings.json), dual MCP server registration, andGEMINI.md/rules-file context injection. npx claude-mem antigravity-cli install|status|uninstallsubcommand support.
Verified end-to-end against a real live Antigravity CLI install, including hook firing, MCP tool registration, and context injection.
v13.9.3
Changes
- fix: eliminate all 331 error-handling anti-patterns detected by scanner (#3119)
- chore: repo-wide over-engineering cleanup — ponytail audit wave 1 & 2 (#3120)
- Removed dead code, unused dependencies, and unused cmem-sdk client surface
Full Changelog: v13.9.2...v13.9.3
v13.9.2
Bug Fix
Removed client-side context truncation from the provider layer.
The OpenAICompatibleProvider applied a sliding-window truncation to conversation history — a hardcoded 20-message cap and a 100k-token "safety" limit layered on top of the model's own context window. In practice it fired on message count alone, dropping conversation messages at ~12k tokens (nowhere near the token limit) and silently corrupting history, mislabeled as "runaway cost" prevention. This broke setups whose real model context window bore no relation to those hardcoded assumptions.
The full conversation history is now sent to the provider, which owns its own context window.
Removed
OpenAICompatibleProvider.truncateHistory()and therequireNonEmptyToTruncateflagtruncateHistoryForOpenRouter/truncateHistoryForGeminiwrappers and their message/token constantsCLAUDE_MEM_{GEMINI,OPENROUTER}_MAX_CONTEXT_MESSAGES/_MAX_TOKENSsettings, defaults, and validation- Related tests, docs, and installer references
Merged in #3096. Verified: tsc clean, 2248 tests passing, build-and-sync clean.
v13.9.1
What's Changed
Patch release shipping the platform-source recovery work merged in #3088, plus dependency and Codex hardening.
Fixes
- codex: load startup context through MCP, with HTTP fallback to the worker
- codex: avoid shell spawning the Codex installer
- recovery: scope memories by platform source
- observer: drop invalid prose and pause on quota
- chroma: prewarm uvx and harden shutdown
- deps: surface dependency-health preflight and degrade gracefully when CLI deps are missing
- telemetry: replace Bun UUIDv5 dependency
Tests
- Stabilize session init after the server rename
- Restore Chroma MCP mock to prevent cross-suite leakage
Full Changelog: v13.9.0...v13.9.1
v13.9.0
Highlights
🚀 New: `claude-mem/sdk` (cmem-sdk)
A fully in-process capture → compress → semantic-search pipeline with no HTTP worker and no Redis. Import `createCmemClient` from `claude-mem/sdk`, point it at Postgres + a running `uvx chroma-mcp` + an LLM provider, and call `capture`/`generate`/`search`/`context`/session methods directly.
- New reference docs: CMEM-SDK Reference under SDK & Embedding.
- Bundle keeps `pg`, `zod`, `@modelcontextprotocol/sdk`, and `@anthropic-ai/sdk` external so consumers resolve them against the installed package.
♻️ Server runtime rename
`server-beta` → `server` across the runtime, with intentional back-compat aliases for existing settings files. Removed inert `ProviderRegistry`/`EventBroadcaster` boundaries and consolidated the queue resolver.
🐛 Fixes
- `generate()`: a provider crash or parse error no longer leaves a job stuck in `processing`; it is transitioned to terminal `failed` with `last_error` recorded before re-throwing.
- `search()`: empty-query path now reports `chroma: false` (filter-only, not degraded) instead of falsely claiming a Chroma result.
- CI: the docker e2e job now calls the renamed `e2e:server:docker` script.
- Docs: corrected `sdk.mdx`'s stale parse-error behavior note.
Full PR: #3077
v13.8.0
Telemetry: observation volume on per-session rollups
Carries generation-side observation volume and type mix on the observer_turn_rollup event so cache-value KPIs survive the migration off the legacy per-occurrence session_compressed / context_injected streams.
What's new
observer_turn_rollupnow sumsobservations_createdand theobs_type_*family (bugfix / discovery / decision / refactor / other) across every compression turn in a session. Paired withtotal_cost_usd, this makes cost-per-observation and observation-type-by-model derivable from the rollup alone.context_injected_rollupcarriestotal_observations_injectedandtotal_tokens_saved_vs_naive— context-cache value (observations served × cost/obs) is now derivable from the rollup.scrub.tswhitelist extended for the new aggregate keys; all values are counts/sums only — never names, prompt text, or raw strings.- Public
telemetry.mdxdocs updated to document the new rollup fields.
Merge notes
- Merged latest
main(Ponytail audit, v13.7.1), which removed fabrication tracking; the now-stalefabrication_count/fabricated_countreferences were dropped from code and docs accordingly.
Full changes: #3017