Common behavior
- Backend and login. Commands that reach the backend use your saved login from
plurai login, or thePLURAI_URLandPLURAI_TOKENpair when both are exported. There is no URL or token flag. See Environment variables. - Anonymization posture. The
ingest-*commands read the posture from the top-levelanonymize:key inplurai.config.yaml. It is a workspace setting, never a per-run flag. Underanonymize: truethey scrub personal data locally before upload and refuse to run without theanonymizeextra. See Data and privacy. - Disclosure and audit. Before any upload, every
ingest-*command prints what it is about to send (sizes, posture, hashes, scrub summary) to stderr and writes it to.plurai/uploads/disclosure-<kind>.txt. Every upload is recorded in.plurai/uploads/audit.log. - Output. stdout carries only what a caller parses (a manifest, an id, a JSON entry). Diagnostics go to stderr.
--overrule FILE.convert-trace,ingest-bundle,ingest-corpus,ingest-doc-examples,ingest-run,ingest-run-reportandingest-tracestake overrules for their gate findings: a YAML or JSON list of{gate_id, fingerprint, reason}. An overrule lapses when the evidence changes. Security and invariant gates are never lifted.
—workspace-root
Everyingest-* command, convert-trace and folder-names take --workspace-root DIR (default .). The
.plurai/ folder (anonymization key, disclosure and audit log) is created under it, and plurai.config.yaml is
looked up at <root>/plurai.config.yaml, then <root>/plurai_sim/plurai.config.yaml. The plugin passes the
plurai_sim folder. Pick one spelling per workspace and keep it: under the anonymized posture, a second
spelling mints a second key and breaks pseudonym stability across uploads.
Global flags
capabilities
version, identity, commands (read off the live CLI),
features, overrule_commands, trace_selection_keys (per trace source, the source-config keys that narrow an
export) and trace_formats (the built-in convert-trace readers). Check a feature here rather than comparing
version strings.
ingest-traces
Exports production traces from your observability platform locally, applies the posture, and uploads them as one content-addressed part. See Trace sources for each source’s config.
stdout is one part entry:
{kind, name or label, sha256, bytes, posture, anon_key_fingerprint}.
ingest-corpus
Extracts a RAG or SQL knowledge corpus locally, applies the posture, and uploads it as one part. Your data source’s credentials stay local.ingest-descriptions
Delivers your agent’s descriptions as content-addressed parts:plurai.config.yaml, simulation_prd.md and
scenario_variables.yaml, whichever exist. They are sent as written, with no posture.
stdout is one JSON array of part entries.
ingest-doc-examples
Scans a folder of example documents, applies the posture, and uploads them so generated documents follow your real formatting.
stdout is the upload manifest. Under
anonymized, images and PDFs need the anonymize-binary extra.
ingest-bundle
Applies the posture to a prepared scenario bundle (real records, or a converted trace) and uploads it.ingest-run
Uploads a finished Run’s saved artifacts, so the backend can re-score them without re-running.ingest-run-report
Uploads a Run’s rendered report, to attach to that Run’s upload.convert-trace
Converts a trace export into a scenario bundle that resumes the real conversation where it stopped. It runs locally and uploads nothing; publish the result withingest-bundle.
A resumed scenario needs a
seed_state that applies the resume seed. See
Write a harness. Exit code 2 only when nothing was written.
stash-doc
Stashes one generation input (a PRD, ascenario_variables.yaml) on the backend from disk and prints its input
doc id, so the document never passes through a model’s context.
The id is content-addressed: an unchanged file gives the same id.
fetch
Downloads backend-owned files. Both commands write through a temp file and a rename, so a failed fetch never truncates a good file.fetch policies
Prints
state=<promoted|draft|unknown|absent>.
fetch artifact
Prints
wrote <path> or missing <relpath> per file, and exits 1 when any file is missing.
job
A job id that is not one the backend issues is refused before any request.
backend
Other commands
correct-scores
written, not_recorded, unsupported or failed. With no platform connected, it
prints a skip line. Exits 0, except 2 when the Run folder or a verdicts.json cannot be read.
More commands
plurai-scan-contract
Runs the scan’s conclusions against the files they were drawn from, on your machine, before generation spends anything.check
scan_contract.json and pre_generation_findings.md to --out, plus an internal record under
.plurai/gate_authority/ that you should never commit or upload.
check touches nothing but your files unless you pass both --probe-consent and --agent-command. Then it sends
one derived question per probe to your own command, never to a Plurai service, and refuses any question that
opens with a state-changing instruction. The replies are kept in the report as evidence, so review the artifact
before you commit or upload it.
recheck
0: drift is advisory.