CLI
The CLI is the universal escape hatch. Any agent framework, automation system, or human can talk to PLUR via plur <command>. It’s the same engine — every other adapter is essentially a structured wrapper around what the CLI exposes.
Install
Section titled “Install”npm install -g @plur-ai/cli@0.9.4Or run without installing:
npx @plur-ai/cli@0.9.4 <command>Current verified release: @plur-ai/cli@0.9.4.
Bootstrap
Section titled “Bootstrap”plur initThis:
- Initialises
~/.plur/if missing. - Installs Claude Code hooks and the local hook binary (if Claude Code is detected).
- Writes a default
config.yaml.
For project-scoped setup:
cd ~/projects/my-appplur init --domain myapp --scope project:my-appThis writes .plur.yaml in the project root with the named domain and scope. Hooks pick it up automatically.
Command surface
Section titled “Command surface”plur learn <statement> # save an engramplur recall <query> # search engrams (BM25 + embeddings)plur inject <task> # load relevant engrams for a taskplur list # list all engramsplur forget <id-or-query> # retire an engramplur feedback <id> positive|negative # rate relevance — trains recall
plur capture <summary> # log an episodeplur timeline [--from] [--to] # query episode history
plur status # health checkplur doctor # diagnose embedder, hooks, MCP
plur sync [--remote <url>] # cross-machine git sync
plur packs listplur packs install <pack-url-or-path>plur packs uninstall <pack-name>plur packs export --scope <scope> --out <dir>
plur stores listplur stores add --name <n> --url <url> --token <t>
plur init # bootstrap, install hooksFull command spec with flags: CLI commands reference.
Useful patterns
Section titled “Useful patterns”Pipe an LLM correction directly into PLUR
Section titled “Pipe an LLM correction directly into PLUR”echo "Always validate user input at API boundaries" | plur learn --type behavioral --domain software.security -- reads from stdin, so you can pipe corrections from logs, transcripts, or other agents.
Inject context into a shell-driven agent
Section titled “Inject context into a shell-driven agent”context=$(plur inject "fix the auth bug in the login flow")echo "$context" | your-agent --system-promptplur inject returns plain text (or JSON with --json) — ready to drop into a system prompt.
Bulk-import from another store
Section titled “Bulk-import from another store”plur ingest --from ./old-memory.yaml --domain legacyUseful for migrating between formats or seeding a new install from a teammate’s pack.
CI-friendly status check
Section titled “CI-friendly status check”plur status --json | jq -e '.embedder.healthy and .index.ready' >/dev/null || exit 1Returns non-zero if anything’s broken — drop in a healthcheck script.
When the CLI is the right adapter
Section titled “When the CLI is the right adapter”- Custom agent frameworks that aren’t MCP, OpenClaw, or Hermes.
- Cron jobs, GitHub Actions, post-commit hooks that should learn or recall.
- Wrapper scripts that ingest external content (Slack exports, meeting notes, ADRs).
- Anywhere a tool can shell out but isn’t worth a full plugin.
For richer integrations (lifecycle hooks, low-latency in-process calls), pick the plugin-based adapter for your runtime. The CLI is the lowest common denominator, by design.