CLI reference
CLI overview#
clawmetry is one binary with two personalities. With no subcommand it is the
dashboard and takes dashboard flags. With a subcommand it is the
management CLI.
clawmetry --port 8900 # runs the dashboard
clawmetry status # runs the status subcommandThat split explains a quirk worth knowing up front: clawmetry --help shows the
dashboard's options, and each subcommand has its own --help.
Every command#
| Command | Purpose |
|---|---|
onboard | First-time setup wizard. Run this after install. |
setup | Same wizard, framed as cloud connect |
connect | Activate cloud sync |
disconnect | Stop cloud sync and remove the key |
account | Link an email to the account, or show account info |
sync | Start (or restart) the sync daemon |
status | Local and cloud state, live mode, JSON mode |
mcp | Start the MCP server on stdio |
proxy | Local enforcement proxy: budgets, loops, routing |
eval | Run a golden eval suite |
reports | Open the reports browser |
tier | The resolved entitlement |
runtimes | Every runtime and which this install can unlock |
features | Every feature and which this install can unlock |
channels | Chat adapters and the concurrent-channel cap |
nodes | The node-count cap |
retention | The retention window cap |
bundle | Cheapest tier admitting a mixed bundle |
license | Manage a self-hosted Pro/Enterprise license |
activate | Shortcut for license activate |
diagnose | Entitlement resolver inputs |
verify-integrity | Verify the tamper-evident hash chain |
extensions | Loaded and failed plugins, hook counts |
update | Update to the latest version |
uninstall | Stop daemons and remove all files |
nemoclaw-daemons | Register LaunchAgents for NemoClaw sandbox daemons (macOS) |
Global flag#
| Flag | Effect |
|---|---|
--openclaw-dir PATH | OpenClaw config directory (default ~/.openclaw). Env: CLAWMETRY_OPENCLAW_DIR |
It applies to both personalities — subcommands and the dashboard.
The --json convention#
Most read-only commands take --json and emit a machine-readable envelope. The
shapes are deliberately aligned with the matching HTTP endpoints so a wrapper
does not need two parsers:
| Command | Mirrors |
|---|---|
tier --json | GET /api/entitlement |
runtimes --json | GET /api/entitlement (runtimes slice) |
runtimes --why <id> | GET /api/entitlement/lock-reason?runtime=<id> |
features --why <id> | GET /api/entitlement/lock-reason?feature=<id> |
channels --why <N> | GET /api/entitlement/lock-reason?channels=N |
bundle --json | /api/entitlement/required-tier + /affordable-tiers |
diagnose --json | GET /api/entitlement/diagnostic |
extensions --json | GET /api/extensions |
license --json / activate --json | {action, ok, message} |
clawmetry tier --json | jq '.tier'
clawmetry runtimes --json | jq '[.runtimes[] | select(.detected) | .id]'
clawmetry status --json | jq '{daemon, cloud, store_bytes}'Environment#
Every command honours the environment described in Environment variables. The ones that change CLI behaviour most often:
| Variable | Effect |
|---|---|
CLAWMETRY_HOME | ClawMetry's own state directory |
CLAWMETRY_OPENCLAW_DIR | Same as --openclaw-dir |
CLAWMETRY_NO_BROWSER | Do not open a browser on start |
CLAWMETRY_OFFLINE | Skip every network call |
DEBUG=1 | Verbose logging |
Exit codes#
See Exit codes and JSON output — several commands are designed to be used in CI, and their exit codes are part of the contract.