Multi-project setup
PLUR is one global store per machine. Per-project isolation happens through scope and domain, not separate stores. This page is the practical recipe.
The principle
Section titled “The principle”- All engrams live in
~/.plur/. - Each engram has a
scope(global/project:foo/cluster:prod/ …) and adomain(e.g.,software.deployment). - Recall in a project always includes
global+ the project’s own scope, but excludes other projects.
So you can have:
- A
globalengram “always validate input at API boundaries” — applies everywhere. - A
project:myappengram “use the Caddy proxy, not nginx” — onlymyapp. - A
project:other-appengram contradicting it — onlyother-app.
No leakage.
Setting it up
Section titled “Setting it up”In every project root that should have its own scope:
cd ~/projects/my-appplur init --domain myapp --scope project:my-appThis writes .plur.yaml:
scope: project:my-appdomain: myappAdapters read this on session start. Hooks tag every engram captured in this directory with the configured scope and domain.
If you don’t want PLUR scoping in a project, skip the --scope flag and engrams default to global.
Daily flow
Section titled “Daily flow”cd ~/projects/my-app# Claude Code, Cursor, OpenClaw, etc. — all pick up .plur.yaml on session start
# When you correct the agent here, the new engram is tagged scope=project:my-app# When you recall here, you see project:my-app + global, never project:other-appThere’s nothing else to do. Once .plur.yaml is in place, every adapter respects it.
What goes in global vs project:
Section titled “What goes in global vs project:”A rule of thumb: if it would be true on a fresh laptop after git clone, it’s global.
| Knowledge | Scope |
|---|---|
| Your preferred coding style | global |
| Your team’s PR conventions | global (or org: in Enterprise) |
| This project’s deploy pipeline quirks | project:my-app |
| This codebase’s naming oddities | project:my-app |
| How you like to think about problems | global |
| Reference URLs for this project’s APIs | project:my-app |
You can also do cluster-level scopes:
scope: cluster:prodFor things that are true everywhere within a deploy target — e.g., “this cluster’s egress IP is X, allowlist accordingly.”
Inspecting scoped engrams
Section titled “Inspecting scoped engrams”plur list --scope project:my-appplur list --scope global --status activeplur list --domain software.deploymentplur recall with --scope project:my-app includes global + project:my-app, never anything else.
Moving an engram between scopes
Section titled “Moving an engram between scopes”If you accidentally saved a project-specific engram under global:
plur engram move ENG-2026-0525-001 --scope project:my-app(or edit the YAML directly — engrams are plain files in ~/.plur/).
In Enterprise
Section titled “In Enterprise”Scopes work the same way, plus you get group scopes (group:acme/platform) and org scopes (org:acme). The local .plur.yaml can target a group scope:
scope: group:acme/platformdomain: platform…and engrams will be written to the team store. Read access is filtered by your membership at the Enterprise server. See Permissions & scopes.