Docs/CLI Reference

CLI Reference

The invariance CLI is the fastest way for agents and humans to emit trace nodes, manage runs, and operate monitors from a terminal.

Installation

bash
npm install -g @invariance/cli

Or with pnpm:

bash
pnpm add -g @invariance/cli

Verify:

bash
invariance version

Authentication

The browser flow is the recommended setup. It opens the dashboard, you approve the device, and the CLI stores the returned key in ~/.invariance/config.json.

Browser login (recommended)bash
invariance login --browser
# Or with a specific profile
invariance login --browser --profile staging
Paste a key directlybash
invariance login --api-key inv_live_...
# Or via environment
export INVARIANCE_API_KEY=inv_live_...
Identity and logoutbash
invariance auth whoami
invariance logout

Configuration

Configuration is resolved from (highest priority first):

  1. Environment: INVARIANCE_API_KEY, INVARIANCE_BASE_URL
  2. Config file at ~/.invariance/config.json
  3. Named profiles inside the config file (selected with --profile <name>)
Inspect and mutatebash
invariance config get baseUrl
invariance config set baseUrl https://api.useinvariance.com

# Full setup check
invariance doctor

See the Configuration page for every supported key.

Runs

A run is a container for the trace nodes produced by a single agent task.

Lifecyclebash
# Start a run and capture its id
RUN_ID=$(invariance run start --name "refactor auth" --json | jq -r .id)

# Update status: open | completed | failed
invariance run update "$RUN_ID" --status completed
invariance run cancel "$RUN_ID" --reason "superseded"

# Fork from an existing node
invariance run fork "$RUN_ID" --from-node <node_id>
Inspectbash
invariance run list --limit 20
invariance run get "$RUN_ID"
invariance run metrics "$RUN_ID"
invariance run verify "$RUN_ID"       # verify proof chain
invariance run narrative "$RUN_ID"    # LLM-generated summary
invariance run llm-calls "$RUN_ID"
invariance run nodes "$RUN_ID"

Trace nodes

Write one node per meaningful unit of work — a tool call, an LLM call, a decision.

Writebash
invariance node write "$RUN_ID" \
  --action-type tool_call \
  --input  '{"pattern":"verifyToken"}' \
  --output '{"matches":7}'

# Batch: one JSONL node per line, up to 100 per call
invariance node write "$RUN_ID" --file ./nodes.jsonl
List and streambash
invariance node list "$RUN_ID" --limit 50
invariance node tail "$RUN_ID" --interval 2000

Monitors

Rules that watch runs and emit signals when conditions match.

CRUDbash
invariance monitor list
invariance monitor get <monitor-id>
invariance monitor create --spec '{"name":"PII Check","rule":"Agent must not output SSNs"}'
invariance monitor update <monitor-id> --patch '{"name":"PII Check v2"}'
invariance monitor pause <monitor-id>
invariance monitor resume <monitor-id>
Execute and inspectbash
invariance monitor evaluate  <monitor-id>
invariance monitor executions <monitor-id>
invariance monitor findings   <monitor-id>

Signals

Alerts raised by monitors or emitted directly.

bash
invariance signal list
invariance signal get <signal-id>
invariance signal emit --severity high --title "Prompt drift detected" --message "Root cause under review"
invariance signal ack <signal-id>
invariance signal resolve <signal-id>

Findings

Investigation records attached to a monitor execution.

bash
invariance finding list
invariance finding get <finding-id>
invariance finding update <finding-id> --status resolved

Reviews

Human-in-the-loop queue for findings that need judgment.

bash
invariance review list
invariance review get <review-id>
invariance review claim <review-id>
invariance review unclaim <review-id>
invariance review resolve <review-id> --decision passed --notes "looks fine"

Agent identity

bash
invariance agent me
invariance agent set-key --public-key <ed25519-public-key-hex>

Metrics

bash
invariance metrics overview
invariance metrics overview --window-hours 168

Other commands

Help, completions, diagnosticsbash
invariance --help
invariance completions zsh
invariance doctor
invariance version

Every command accepts --help; every data command accepts --json for machine-readable output.

On this page
InstallationAuthenticationConfigurationRunsTrace nodesMonitorsSignalsFindingsReviewsAgent identityMetricsOther commands