Skip to content
HN On Hacker News ↗

PMB · local-first memory for your AI coding agent

▲ 26 points 9 comments by oleksiibond 2w ago HN discussion ↗

Pangram verdict · v3.3

We believe that this document is fully AI-generated

94 %

AI likelihood · overall

AI
0% human-written 100% AI-generated
SEGMENTS · HUMAN 0 of 5
SEGMENTS · AI 5 of 5
WORD COUNT 1,211
PEAK AI % 99% · §5
Analyzed
Jul 1
backend: pangram/v3.3
Segments scanned
5 windows
avg 242 words each
Distribution
0 / 100%
human / AI fraction
Verdict
AI
Pangram v3.3

Article text · 1,211 words · 5 segments analyzed

Human AI-generated
§1 AI · 99%

Local-first memory · MCP-native · Apache 2.0Your AI agent forgets every session. PMB gives it memory, on your disk.Decisions, lessons and project facts live in one SQLite file you own. Fed back to Claude Code, Cursor, Codex and Zed through MCP. Offline, no API keys, no cloud, recall in ~35 ms.$pip install pmb-aiWorks with your agent · one command100% on your machineNo API keysNo cloud, no telemetryApache-2.0, open sourceHow it worksMemory that doesn't wait to be askedHooks inject the right memory before the model thinks, and journal the agent's work after, no LLM call on the read path, no tool the agent has to remember to call.1 · Any agent records__claude__Claude Code__cursor__Cursor__openai__Codexwrites to memoryPMB · one local memoryrecalls what matters2 · Surfaced before it answerslesson0.94file0.88decision0.8101 · Read4–16 msAuto-recall on every promptEvery message is classified in sub-millisecond; the matching lessons, decisions and project overview are fetched for the agent before it reasons.02 · Write< 1 msSub-millisecond async writesThe MCP tool returns instantly. SQLite first; the embed and LanceDB vector insert run on a background thread, never blocking the turn.03 · Fuse94.5% recall@10Hybrid recall, rankedBM25 + dense vectors + entity graph + optional rerank, fused with Reciprocal-Rank-Fusion. One call returns the right thing, ranked.04 · Learnhonest follow-rateLessons that earn their placeEvery rule is scored by whether the agent actually follows it. Useful ones get starred; ignored ones are flagged dead, so you prune what doesn't help.The Map · live entity graphYour memory, as a graph you can exploreEvery fact, decision, lesson, file and entity becomes a node, color-coded by type, sized by importance. Hover one to dim the rest, light up its neighbors, and read the full memory chunk.

§2 AI · 91%

MapTimelineOverviewLessons0 entities · 0 connections · 8 clustersdrag · scroll · hoverThe Timeline · git-graph journalEvery decision, lesson and commit, newest firstOne lane per project, nodes color-coded by event type, connected by soft curves. The same journal that ships in the dashboard, written automatically as you work.MapTimelineOverviewLessonsTypeNot a mockupThis is the actual dashboardA local web app served from your machine. The Map and Timeline above are live recreations, here is the real thing, rendering one project's memory.MapTimeline5,229 entitiesThe Map · 65,005 connections across 149 clusters, color-coded by kindWhy it mattersWhat changes when your agent remembersNot features, outcomes. This is what persistent memory actually does to your day.Stop re-explaining your projectEvery session starts already knowing your decisions, conventions and the bug you hit last Tuesday. No more pasting the same context into a fresh chat.Switch tools without losing contextClaude Code, Cursor, Codex and Zed all read the same memory. Your context follows you, not your editor, so changing agents costs nothing.Memory you can actually trustPMB scores whether each lesson gets followed and flags the dead ones. It tells you when a memory isn't helping, so your context stays honest, not bloated.Watch it compoundSession 1 of 5Day one: a blank slateThe agent starts with nothing. You explain your project, your conventions, the bug you hit last Tuesday, and at the end of the session it all evaporates.12entities1lessons·recall hitsS1S2S3S4S5QuickstartSeven commands, then just talk to your agentNo account, no keys, nothing leaves your machine.

§3 AI · 85%

Inspect everything from the terminal, or open the dashboard.zsh · ~/pmbpmb recallfix the pricing bug in checkout⏎Lnever lower NEGOTIATE/SKIP under 25%lesson · PMB0.94Fverdict-policy.ts · line 142file · opened Tue 14:320.88Duse RRF over a learned weightdecision · 4 days ago0.813 of 41 memories · fused in 35 mshybrid recallIntegrateOne command wires your agent to MCPEverything runs over stdio, the server is a child process of your agent. No network, no port, no token.Claude CodeRules appended to your agent's config automaticallyPoint several agents at one shared workspaceVerify the wiring with pmb doctorAny model · local or hostedBring your own model, or run it offlinePMB never calls an LLM on the read path. The optional summarize and graph-extract passes run on whatever you point them at, including a fully local Ollama. Your memory stays yours.graph.extractor = llm:ollama·run extraction and summaries on a local model, 100% offline, zero API keys.QuickstartRunning in 60 secondsThree commands, no account, no config. Then just work the way you already do.1InstallOne pip install. Pure Python, runs on macOS, Linux and Windows.$pip install pmb-ai2Connect your agentWires PMB into your agent over MCP. Swap in cursor, codex, zed, and more.$pmb connect claude-code3Just talk to itWork as usual, PMB records and recalls automatically. Open the dashboard any time to explore.$pmb dashboardArchitectureFiles on your disk, all the way downEvery event lives in SQLite; vectors live in LanceDB next to it. Copy them anywhere with cp. No server to trust.Your agentMCP · stdioMCP server29 tools · prepare()Enginehybrid routerHybrid recallBM25 + vector + graph · 35msAsync writeembed queue · sub-ms returnSQLiteLanceDBON YOUR DISKBenchmarksFast, local, and honest about itEvery number here is measured on PMB's own engine and reproducible from the repo.

§4 AI · 99%

No cloud, no LLM in the read path, no per-query cost.94.6%recall@10 (LoCoMo)88msp50 recall at 2k memories<1msasync write, never blocks$0per recall, fully local73.1%answer accuracy (J-score, LoCoMo)Retrieval quality (recall@k)MRR 0.774 · nDCG@10 0.81668.485.089.494.6k=1k=3k=5k=10LoCoMo-10 · 997 questions · no LLM grader · cache offRecall latency vs memory size (p50 / p95)p50p95100 ms101005001k2kWarm daemon, cache off, local CPU. Real ~100-memory workspace: p50 24 ms. Cached: ~0.15 ms.Radically honestIt tells you when a memory isn't helpingEvery lesson carries a surface_id. PMB tracks whether the agent actually followed it, confirmed or auto-detected from activity. Rules that get ignored are flagged dead. The ones that earn their place are starred. No vanity metrics.usefulnever lower NEGOTIATE/SKIP under 25%usefulpmb warmup before first recallunverifiedprefer tree-sitter for TS indexingdeadalways rerun the full suite on editUnder the hoodBuilt on boring, durable piecesNo exotic infrastructure. Local files and well-worn libraries, the kind you can still open in five years.Memory hygieneIt tends itselfA year in, recall is still sharp. Memory decays, archives, and dedupes on its own, and never deletes anything behind your back.WriteActiveReadDecayCompactArchivedYouDaemonMemory flows left to right and tends itself. Hover a stage to follow the path.one SQLite fileFAQStraight answersDoes my code or data ever leave my machine?No. Everything lives in a local SQLite file with vectors in LanceDB right next to it. There are no network calls on the read path, no account and no telemetry, ever.

§5 AI · 99%

Unplug the internet and it still works.How is this different from RAG or a vector database?Two ways. Recall is hybrid, BM25 plus dense vectors plus an entity graph, fused and ranked. And it's automatic: the right memory is injected before the model thinks. You don't build a pipeline or hope the agent remembers to call a tool.Will it slow my agent down?No. Recall lands in about 35 ms and writes return in under a millisecond, the embedding and vector insert happen on a background thread, so the turn is never blocked.Which agents and operating systems are supported?Any MCP-aware agent: Claude Code, Cursor, Codex, Zed, Windsurf and more, wired in with one command. PMB is pure Python and tested on macOS, Linux and Windows.What if a memory is wrong or unhelpful?PMB scores whether each lesson actually gets followed and flags the dead ones so you can prune them. It's the rare tool that tells you when its own memory isn't earning its place.Is it really free?Yes. Apache-2.0, open source, free forever. No paid tier, no seats, no telemetry. You own the file and the code.Apache 2.0 · 100% offlineGive your agent amemory it keeps.