Command reference
The CLI exposes both mm and llmstatus — same binary, pick your favorite. Per-command help: mm <command> --help.
Commands
| Command | What it does |
|---|---|
mm status [dir] | Free offline model-health check — no account needed. Always exits 0 |
mm | Launch 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 sources | List detection sources and whether each can run on this machine |
mm integrations | Manage live integrations (list · enable <id> · disable <id> · env <id> <tag>) |
mm login [api_key] | Browser sign-in with polling (or paste a key) |
mm signup | Create an account in the browser |
mm logout | Forget the saved API key |
mm config | View or change local settings (analytics, update channel) |
mm clear | Delete tracked usages from your cloud inventory |
mm update | Update the binary to the latest version now and relaunch |
mm upgrade | Open Stripe checkout, poll until Pro is active (--lifetime for the one-time plan) |
mm tui | Force-launch the TUI (needs an interactive terminal) |
mm play [dir] | Play Donkey Kong while a background scan walks the dir |
mm help | Print 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 retiringmm 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 refEnvironment variables
| Env var | What it does |
|---|---|
LLMSTATUS_API_KEY / MM_API_KEY | API key for this invocation (instead of the saved login) |
LLMSTATUS_API_BASE | Override the API base URL (same as --api) |
LLMSTATUS_REGISTRY_URL | Override the CDN base for the signed registry (point at a private mirror) |
LLMSTATUS_NO_OPEN | Set to anything truthy to skip the auto-open of browser tabs (login, upgrade) |
MM_NO_AUTO_UPDATE | Disable the binary’s background self-update |
MM_NO_ANALYTICS | Disable anonymous usage analytics (DO_NOT_TRACK and CI also count) |
MM_VERSION | Used by install.sh — pin a specific version (default: latest) |
MM_INSTALL_DIR | Used by install.sh — where to install the binary (default: ~/.local/bin) |
MM_CDN | Used by install.sh — override the binary CDN base (default: https://cdn.llmstatus.ai) |
Exit codes
| Code | Meaning |
|---|---|
0 | Success. mm status always exits 0 — it informs; mm ci gates |
1 | Error (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