Skip to content

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.

  • All engrams live in ~/.plur/.
  • Each engram has a scope (global / project:foo / cluster:prod / …) and a domain (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 global engram “always validate input at API boundaries” — applies everywhere.
  • A project:myapp engram “use the Caddy proxy, not nginx” — only myapp.
  • A project:other-app engram contradicting it — only other-app.

No leakage.

In every project root that should have its own scope:

Terminal window
cd ~/projects/my-app
plur init --domain myapp --scope project:my-app

This writes .plur.yaml:

scope: project:my-app
domain: myapp

Adapters 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.

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-app

There’s nothing else to do. Once .plur.yaml is in place, every adapter respects it.

A rule of thumb: if it would be true on a fresh laptop after git clone, it’s global.

KnowledgeScope
Your preferred coding styleglobal
Your team’s PR conventionsglobal (or org: in Enterprise)
This project’s deploy pipeline quirksproject:my-app
This codebase’s naming odditiesproject:my-app
How you like to think about problemsglobal
Reference URLs for this project’s APIsproject:my-app

You can also do cluster-level scopes:

scope: cluster:prod

For things that are true everywhere within a deploy target — e.g., “this cluster’s egress IP is X, allowlist accordingly.”

Terminal window
plur list --scope project:my-app
plur list --scope global --status active
plur list --domain software.deployment

plur recall with --scope project:my-app includes global + project:my-app, never anything else.

If you accidentally saved a project-specific engram under global:

Terminal window
plur engram move ENG-2026-0525-001 --scope project:my-app

(or edit the YAML directly — engrams are plain files in ~/.plur/).

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/platform
domain: platform

…and engrams will be written to the team store. Read access is filtered by your membership at the Enterprise server. See Permissions & scopes.