Your first memory
Once PLUR is installed, you don’t usually create engrams by hand. Adapters capture them automatically when you correct your agent. But it’s worth knowing the manual path — it’s the same model the adapters use.
Save a memory
Section titled “Save a memory”From the CLI:
plur learn "Always validate user input at API boundaries"From your agent (any MCP client):
“Save this as a memory: when working in this repo, deploys go through Caddy, not nginx.”
The agent will call plur_learn. You’ll see something like:
ENG-2026-0525-001 saved. type: procedural scope: global status: activeThat’s an engram. Five fields make it real: id, status, type, scope, statement. Everything else (domain, tags, confidence, polarity, commitment, …) is optional and explained in the engram schema.
Recall it
Section titled “Recall it”plur recall "input validation"Or, from your agent:
“What do I know about input validation?”
Recall runs locally: BM25 + embeddings + Reciprocal Rank Fusion. No network call, no API cost. The default hybrid mode returns results ranked by combined relevance.
Inject it into a task
Section titled “Inject it into a task”The interesting workflow is injection, not recall. When your agent starts working on something, PLUR pre-loads relevant engrams into context — you don’t have to ask:
plur inject "I'm about to add a new POST /users endpoint"This returns the top engrams scored against the task description. Adapters like the MCP server and OpenClaw plugin call this automatically on session start, so the agent walks into every conversation already aware of your rules.
Rate it
Section titled “Rate it”After a session, tell PLUR what helped:
plur feedback ENG-2026-0525-001 positiveFeedback trains relevance. Engrams that get positive signals on real tasks rise in future injection rankings; engrams that consistently surface but never help decay faster.
What just happened
Section titled “What just happened”You created a typed assertion, stored it locally as YAML, retrieved it with a hybrid search, asked the system to choose what matters for a given task, and trained the ranker. That’s the whole loop. Everything else in these docs is variations on it: scopes, packs, sync, enterprise multi-tenancy, adapter-specific hooks.
Next: Verify it works →