PLUR — Your agents share the same memory

Persistent memory for AI agents. Local-first, zero-cost, works across MCP tools.
plur.ai · Benchmark · Engram Spec · npm
Benchmarks
PLUR is memory, not just retrieval — so we measure it on more than one axis.
Retrieval recall — LongMemEval (R@5, chunk granularity):
| Stack | R@5 | Notes |
|---|
| PLUR hybrid + reranker | 97.6% | fully local cross-encoder — no API |
| PLUR hybrid (openai-3-large embeddings) | 97.0% | optional cloud embedder |
| PLUR BM25 only | 92.2% | no embedder — fully airgapped |
Agent task impact — same task, with memory vs without: Haiku + PLUR outperforms Opus without it at roughly 10× less cost; house rules 12–0 across Haiku, Sonnet, and Opus.
Operational — local-first, zero-cost search, data-sovereign by design.
More benchmarks in progress: LoCoMo, end-to-end answer accuracy (N=500), agentic task suites, cross-tool portability, decay / contradiction correctness. Full methodology →
The idea
You correct your agent's coding style on Monday. On Tuesday, it makes the same mistake. You explain your architecture in Cursor. That night, Claude Code has no idea.
PLUR fixes this. Install it once, and corrections, preferences, and conventions persist — across sessions, tools, and machines. Your memory is stored as plain YAML on your disk. No cloud, no API calls, no black box.
The interesting part: in our tool-routing and local-knowledge benchmark, Haiku with PLUR memory outperformed Opus without it — 2.6x better on tool routing, at roughly 10x less cost. Turns out the bottleneck isn't model intelligence. It's context.
Install
Tell your agent
Paste this to your coding agent (Claude Code, Cursor, Windsurf, OpenClaw):
Set up PLUR memory for me: run `npx @plur-ai/mcp init`, then check my PLUR status to confirm it works.
Prefer a guided setup? plur.ai has the exact config for your tool — Claude Code, Cursor, Windsurf, or OpenClaw.
Manual setup (Claude Code)
One command sets up everything — storage, MCP config, and Claude Code hooks:
npx @plur-ai/mcp init
This creates ~/.plur/ for storage, adds PLUR to your .mcp.json, and installs Claude Code hooks for automatic engram injection. PLUR is installed globally — one MCP server, one store, available in every project. You only run init once.
For multi-project setups, use domain/scope to separate knowledge:
cd ~/projects/my-app
npx @plur-ai/[email protected] init --domain myapp --scope project:my-app
This creates a .plur.yaml in the project with defaults that hooks apply automatically. Engrams learned in that project are tagged; recall filters by scope but always includes global knowledge.
Set scope per engram, by content. Scope is not a once-per-session setting — every plur_learn call takes its own scope, chosen from what the engram is about. Team/shared knowledge goes to a team scope (e.g. group:<org>/<team>, used by PLUR Enterprise); project details to project:<name>; personal preferences stay local. Don't let team-relevant knowledge fall back to global by omitting scope — global leaks into every project and (with a team store configured) never reaches the team. plur_session_start lists the remote scopes a token can write to.
Global install (faster startup)
npm install -g @plur-ai/mcp
plur-mcp init
OpenClaw
openclaw plugins install @plur-ai/claw
openclaw config set plur.enabled true
That's it. PLUR works in the background from here. No workflow changes needed — just use your tools as usual. Corrections accumulate automatically.
Hermes Agent
pip install plur-hermes
npm install -g @plur-ai/[email protected]
The plugin registers automatically via Hermes' plugin system. It injects relevant memories before each LLM call, extracts learnings from agent responses, and exposes all PLUR tools to the agent. Hermes shells out to the PLUR CLI; current verified pairing is plur-hermes==0.9.4 with @plur-ai/[email protected].