Releases: oleksiijko/pmb
v0.2.5 - Active-mode agent memory + session continuity
PMB is local-first persistent memory for AI coding agents (MCP server) - fully offline, no API keys, no LLM in the recall hot path.
This release makes agents actually use that memory: they log their own work as they go, and re-orient after a long session's context window compacts.
Highlights
🤖 Agents log their own work - pmb connect <agent> --active
Proactive-logging rules: the agent records its own decisions, completed work, lessons, failures and goals while coding - no "remember" needed. Recall stays lazy (zero overhead on general questions). Per-category toggles via pmb config / pmb tune.
🧵 Session continuity - session_brief
New session_brief MCP tool + pmb session brief: a digest of what was decided / done / learned this session, so an agent that lost its context can pick the thread back up instead of re-asking you.
🧠 Self-improvement loop
With agent.apply_lessons, the agent recalls and applies past lessons/failures before a task -bso it stops repeating the same mistakes in a project over time.
🔭 overview - "what do I know about X"
New overview MCP tool + pmb overview "<topic>": structured synthesis (key facts & decisions, lessons, failures, goals, timeline, related topics) in one call.
🐛 MCP correctness fixes
session_briefandovervieware now actually exposed to agents (the tool-profile filter was silently dropping them - they returned "Unknown tool").session_briefnow covers the whole session (facts/goals/lessons, not just activities) and classifies decisions/done correctly.- Tool-profile filter is event-loop-safe.
📅 Answer-ready recall
- Every recall result carries a human-readable resolved
date(event time → session → creation), so agents answer "when…?" without epoch math. - Temporal validity windows +
keyed_fact_as_of()- query what was true at a past time.
🧪 Tests & CI · 📚 Docs
End-to-end MCP tests (test_mcp_e2e.py), test_connect_active.py, test_jscore_levers.py. CI matrix now runs ubuntu + windows + macOS. New docs/COMMANDS.md full command reference.
Install
pip install -U pmb-ai
pmb connect claude-code --active # or: codex, cursor, windsurf, …v0.2.4 - Local-use commands & honest J-score eval
Own-your-data CLI commands
Use PMB as a personal, offline memory you fully control. All of these are
display/write-layer only - retrieval recall@10 and ~70ms p50 are unchanged.
pmb timeline- chronological, day-grouped view of your memorypmb insights- analytics: totals, weekly growth, top topics, lessons/goalspmb digest [today|week|month]- recap of recent memoriespmb export [--format markdown|json]- dump all memory to readable textpmb forget-topic <topic>- archive everything about a topic in one command (reversible)pmb ttl <ulid> 30d+--ttlon note/learn/fact +pmb prune-expired- memory expirypmb tag/untag/tags/tagged- local tags & collectionspmb reminders- overdue / due-soon goalspmb snapshot create|list|restore- local, offline workspace snapshots
Eval harness
- LLM-as-judge (J-score) harness improvements: full reader context,
per-question failure logging, sharper reader prompt. Eval-only - no
recall/product code touched.
Install
pip install -U pmb-ai
Full changelog: CHANGELOG.md
What's Changed
- feat: local-use commands + J-score eval harness by @oleksiijko in #7
Full Changelog: v0.2.3...v0.2.4
v0.2.3 - procedural memory: lessons, failures, auto-distill
Full Changelog: v0.2.2...v0.2.3
Procedural memory layer - PMB now learns lessons and avoids repeating failures, on top of factual recall. The 94.5% LoCoMo recall@10 is unchanged.
Added
pmb learn "..."+pmb lessons- teach durable lessons ("this repo uses pnpm, never npm"); review them. Surfaced via the hybrid + predicate-aware ranker.pmb learn --failed- negative memory: record failures ("numpy 2.x broke lancedb") that recall flags so they're not repeated.pmb distill+ auto-distill on session end - an LLM extracts durable lessons/failures from a session automatically (zero-command when lessons.auto_distill_on_session_end is on). Reuses Claude CLI / Anthropic / Ollama.- Lesson-intent boost - on how-to/convention queries, lessons & failures are gently boosted. Scoped to lesson/failure events only, so recall on datasets without them (LoCoMo) is unchanged.
- Trust signals in recall - source attribution, confidence (high/med/low), staleness flag.
pmb auditmemory-health - lessons / failures / stale / low-confidence / conflicts.pmb noteinstant capture;pmb watchauto-ingest a notes file/folder.
Notes
- LoCoMo recall@10 = 94.5% (full 10-conv run) - unchanged.
- 50+ new regression tests; all green.
Install: pip install --upgrade pmb-ai
v0.2.2 - local capture, audit & source attribution
Adds local-use features for trust and effortless capture, plus the git-sync clone fix. Same engine, same 94.5% LoCoMo recall@10.
Added
pmb note "..."- instant memory capture from the terminal, no agent needed.pmb audit- "what does PMB know about me?": a grouped, read-only view of everything stored, by type and by source.pmb watch <file|dir>- auto-capture: new paragraphs in a notes file or folder (e.g. ~/journal.md) get ingested as memory, with content-hash dedup.- Source attribution on recall - every hit shows where it came from ("from: chatgpt - Project planning", "from: note (cli)", "from: markdown - notes.md").
Fixed
- Git-sync clone now works when the remote's default branch is not "main" (previously produced an empty working tree on some hosts).
Notes
- 14 new regression tests (provenance + watch). The 94.5% LoCoMo recall@10 and 70ms p50 are unchanged.
Install: pip install --upgrade pmb-ai
What's Changed
- feat: local-use - pmb note, audit, watch + recall source attribution by @oleksiijko in #5
New Contributors
- @oleksiijko made their first contribution in #5
Full Changelog: v0.2.1...v0.2.2
v0.2.1 - agents, sync, encryption, import, explainability
Adds 6 more agent integrations, git-backed workspace sync, encrypted bundles, memory import, explainable recall, and pluggable embedders. Same engine, same 94.5% LoCoMo recall@10.
Added
- 9 agent integrations (was 3): claude-code, cursor, codex, windsurf, gemini, vscode, zed, opencode, continue.
pmb connect --listshows all;--config-pathoverrides location. - Git-backed workspace sync:
pmb workspace init|push|pull|status|cloneversions and syncs memory to any git remote (cross-device, team, backups), no server. - Encrypted workspace bundles:
pmb workspace export|importpacks a workspace into one authenticated-encrypted file (scrypt + AES/HMAC), safe even on a public remote. Needspip install 'pmb-ai[crypto]'. - Memory import:
pmb import chatgpt|claude|mem0|markdown <path>brings existing history into a fresh workspace. pmb why "<query>": explains recall ranking with a full trace of which PAMVR rules fired and each multiplier.- Pluggable embedders:
embedding.backendnow also accepts ollama and openai, with a dimension guard that prevents mixing incompatible vector sizes. scripts/benchmarks/vs_mem0.py: reproducible head-to-head benchmark vs mem0.
Fixed
- PyPI page renders README logo and screenshots (absolute image URLs).
- LanceDB table uses the active embedder's real vector dimension instead of a hardcoded 384.
Notes
- 57 new regression tests. The 94.5% LoCoMo recall@10 and 70ms p50 are unchanged.
Install: pip install --upgrade pmb-ai
PyPI page rendering fix
Full Changelog: v0.1.0...v0.1.1
- README images on PyPI: all 11 screenshots + logo now use absolute GitHub raw URLs. Previously they used relative paths (docs/assets/...) which only worked on GitHub, not on pypi.org.
- Project logo added to docs/assets/logo.png.
- Dynamic PyPI badges: version, monthly downloads, and supported Python versions are now read live from PyPI metadata, so they auto-update without README edits.
- CI workflow: removed stale reference to a non-existent test file (tests/test_pamvr.py) that broke the matrix run.
v0.1.0 - Initial public release
PMB · Personal Memory Brain - local-first persistent memory for AI agents (Claude Code, Cursor, Codex).
Headline numbers
- 94.5% LoCoMo recall@10 (reproducible, full 10-conversation run)
- 70ms p50 warm recall (~3.7s MCP cold start)
- 99.2% top-10 on 900-query multi-language stress test
- 50+ languages via multilingual embedder, with explicit pattern coverage
What's inside
- MCP-native: one command to wire into Claude Code / Cursor / Codex
- Hybrid retrieval: BM25 + vector + PAMVR boosts, no LLM in the hot path
- Auto VOCAB_BRIDGES: domain adaptation mined from your own data
- Pattern query split: compound queries handled via fan-out + RRF fusion
- Atomic fact extraction: mem0-style, regex-based, no LLM
- Keyed-upsert: fact replacement with history (no duplicate current values)
- Durable embed queue: SQLite-backed, survives process restarts
- Multilingual safety:
pmb doctorwarns if your model doesn't match your data - Web dashboard at
http://127.0.0.1:8765
Install
pip install pmb-ai
pmb connect claude-code
Restart your agent and say "remember - I prefer Postgres". See the README for full benchmarks, screenshots, and architecture.
Compared to alternatives
| PMB | mem0 | Letta | Zep | |
|---|---|---|---|---|
| LoCoMo recall@10 | 94.5% | ~67-70% | ~76-80% | ~80% |
| p50 latency | 70ms | 1-3s | 1-3s | 1-3s |
| Runs offline | yes | no (cloud) | partial | partial |
| API key required | no | yes | yes | yes |
Honest limitations
- Top-1 universal ceiling without LLM rerank: ~58% on LoCoMo, ~73% on the multi-language stress. Optional
recall.llm_rerank(Ollama) lifts top-1 by 10-15pp at +200ms latency cost. - Some adversarial cases (mixed-language queries with ambiguous proper nouns) remain hard without LLM-based coreference.
- Tested primarily on Windows + Linux. macOS works but has fewer CI runs.
License
Apache 2.0. No telemetry, no API keys, no cloud.
Full Changelog: https://github.com/oleksiijko/pmb/commits/v0.1.0