Skip to Content
Commands

Command reference

The CLI exposes both mm and llmstatus — same binary, pick your favorite. Per-command help: mm <command> --help.

Commands

CommandWhat it does
mm status [dir]Free offline model-health check — no account needed. Always exits 0
mmLaunch the TUI (inventory · scan · what’s-new · alerts · account)
mm ci [dir]CI gate: fail the build on deprecated/retiring models
mm fix [dir]Rewrite dying model ids to their replacement, in place
mm scan [dir]Scan + upload usages to your cloud inventory (needs login); interactive TUI, or --ci/--json for pipelines
mm sourcesList detection sources and whether each can run on this machine
mm integrationsManage live integrations (list · enable <id> · disable <id> · env <id> <tag>)
mm login [api_key]Browser sign-in with polling (or paste a key)
mm signupCreate an account in the browser
mm logoutForget the saved API key
mm configView or change local settings (analytics, update channel)
mm clearDelete tracked usages from your cloud inventory
mm updateUpdate the binary to the latest version now and relaunch
mm upgradeOpen Stripe checkout, poll until Pro is active (--lifetime for the one-time plan)
mm tuiForce-launch the TUI (needs an interactive terminal)
mm play [dir]Play Donkey Kong while a background scan walks the dir
mm helpPrint help

mm ci

The CI gate. Exits non-zero when a finding is at or above the --fail-on threshold (none · deprecating · retiring · retired; default retired). Emits GitHub annotations and a step summary when it detects GitHub Actions. Offline-capable, no account needed. --json prints the full report to stdout, --json-out <file> writes clean findings JSON to a file, --diff <base> limits findings to files changed vs a base ref (automatic on pull requests via GITHUB_BASE_REF), and --report (Pro) syncs the run’s usages and a CI-run row to your account. See CI & GitHub.

npx @modelstatus/cli ci . --fail-on retiring

mm fix

Rewrites dying model ids to their registry replacement, in place. Boundary-safe, style-preserving, and chain-resolved (if the replacement is itself retiring, it resolves to the end of the chain). Only filesystem references with a known replacement are touched. Asks before writing — a non-TTY needs --yes. --dry-run previews the rewrites without writing, --model <provider/slug> limits the fix to one model, --json gives machine output.

mm integrations

Manages the local on/off state of the live integrations — the gate for what mm scan and mm status run by default. Ids: aws-lambda, vercel, supabase-edge, github-actions. mm integrations env <id> <prod|staging|dev|unknown> sets a declared environment for a source. mm integrations list --json prints machine-readable state.

mm config

Bare mm config lists local settings (analytics, update channel, config path). mm config analytics on|off toggles anonymous usage analytics. Also honored: MM_NO_ANALYTICS=1, DO_NOT_TRACK=1, CI=1.

mm clear

Deletes tracked usages from your cloud inventory. Destructive and needs login; requires an explicit --yes or --force (it will not proceed on --ci alone). --all also wipes projects, alert rules, and the in-app feed — a full reset.

mm update

Updates the binary to the latest version now and relaunches. You can also add --update to any command. This updates the software; mm upgrade is the paid plan.

Common flags

--api URL override the API base URL (default https://llmstatus.ai) --key KEY use this API key for this call (won't be saved) --project ID-OR-NAME pick the project to scan into (created if the name is new) --dir PATH directory to scan (alternative to the positional arg) --yes don't prompt — non-interactive mode --json machine-readable output --ci shorthand for --yes --json --dry-run print what would change, change nothing --offline use the cached registry only (no network) --update update the binary first, then run the command --fail-on THRESHOLD (ci) none | deprecating | retiring | retired (default: retired) --json-out FILE (ci) write findings JSON to a file --diff BASE (ci) limit findings to files changed vs BASE --model SLUG (fix) only fix this one model (full provider/slug) --all (clear) also wipe projects, alert rules + the in-app feed --force (clear) confirm the delete --sources LIST which scan sources to run (default: filesystem + enabled integrations; "all" for everything) values: filesystem, env, aws-secrets, k8s, helm, sql, aws-lambda, vercel, supabase-edge, github-actions, all --region REGION AWS region for aws-secrets / aws-lambda --namespace NS k8s namespace --kube-context CONTEXT kubectl context --db DSN postgres dsn for the sql source --sql-table TABLE narrow the sql source to one table --vercel-project P Vercel project for the vercel source --vercel-team T Vercel team --gh-repo OWNER/NAME repo for the github-actions source --supabase-ref REF Supabase project ref

Environment variables

Env varWhat it does
LLMSTATUS_API_KEY / MM_API_KEYAPI key for this invocation (instead of the saved login)
LLMSTATUS_API_BASEOverride the API base URL (same as --api)
LLMSTATUS_REGISTRY_URLOverride the CDN base for the signed registry (point at a private mirror)
LLMSTATUS_NO_OPENSet to anything truthy to skip the auto-open of browser tabs (login, upgrade)
MM_NO_AUTO_UPDATEDisable the binary’s background self-update
MM_NO_ANALYTICSDisable anonymous usage analytics (DO_NOT_TRACK and CI also count)
MM_VERSIONUsed by install.sh — pin a specific version (default: latest)
MM_INSTALL_DIRUsed by install.sh — where to install the binary (default: ~/.local/bin)
MM_CDNUsed by install.sh — override the binary CDN base (default: https://cdn.llmstatus.ai)

Exit codes

CodeMeaning
0Success. mm status always exits 0 — it informs; mm ci gates
1Error (network, parse, unknown command — message on stderr), or mm ci found a model at or past --fail-on

Examples

# Snapshot a single repo, free, no account: mm status # Same but only use the cache (no network): mm status --offline # Preview every rewrite mm fix would make, write nothing: mm fix --dry-run # Full project scan + non-interactive upload to a named project: mm scan --ci --project web-app # Preview what scan would upload — including secret-source candidates: mm scan --sources all --dry-run # Use a private API mirror: LLMSTATUS_API_BASE=https://api.acme-internal.com mm scan # CI: fail the build if anything is retiring or retired: npx @modelstatus/cli ci . --fail-on retiring