Skip to content

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.

Terminal window
npm install -g @plur-ai/cli@0.9.4

Or run without installing:

Terminal window
npx @plur-ai/cli@0.9.4 <command>

Current verified release: @plur-ai/cli@0.9.4.

Terminal window
plur init

This:

  • 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:

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

This writes .plur.yaml in the project root with the named domain and scope. Hooks pick it up automatically.

plur learn <statement> # save an engram
plur recall <query> # search engrams (BM25 + embeddings)
plur inject <task> # load relevant engrams for a task
plur list # list all engrams
plur forget <id-or-query> # retire an engram
plur feedback <id> positive|negative # rate relevance — trains recall
plur capture <summary> # log an episode
plur timeline [--from] [--to] # query episode history
plur status # health check
plur doctor # diagnose embedder, hooks, MCP
plur sync [--remote <url>] # cross-machine git sync
plur packs list
plur packs install <pack-url-or-path>
plur packs uninstall <pack-name>
plur packs export --scope <scope> --out <dir>
plur stores list
plur stores add --name <n> --url <url> --token <t>
plur init # bootstrap, install hooks

Full command spec with flags: CLI commands reference.

Terminal window
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.

Terminal window
context=$(plur inject "fix the auth bug in the login flow")
echo "$context" | your-agent --system-prompt

plur inject returns plain text (or JSON with --json) — ready to drop into a system prompt.

Terminal window
plur ingest --from ./old-memory.yaml --domain legacy

Useful for migrating between formats or seeding a new install from a teammate’s pack.

Terminal window
plur status --json | jq -e '.embedder.healthy and .index.ready' >/dev/null || exit 1

Returns non-zero if anything’s broken — drop in a healthcheck script.

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

Next: Custom (HTTP/SSE + REST) →