CClawMetryDocs

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.

bash
clawmetry --port 8900          # runs the dashboard
clawmetry status               # runs the status subcommand

That split explains a quirk worth knowing up front: clawmetry --help shows the dashboard's options, and each subcommand has its own --help.

Every command#

CommandPurpose
onboardFirst-time setup wizard. Run this after install.
setupSame wizard, framed as cloud connect
connectActivate cloud sync
disconnectStop cloud sync and remove the key
accountLink an email to the account, or show account info
syncStart (or restart) the sync daemon
statusLocal and cloud state, live mode, JSON mode
mcpStart the MCP server on stdio
proxyLocal enforcement proxy: budgets, loops, routing
evalRun a golden eval suite
reportsOpen the reports browser
tierThe resolved entitlement
runtimesEvery runtime and which this install can unlock
featuresEvery feature and which this install can unlock
channelsChat adapters and the concurrent-channel cap
nodesThe node-count cap
retentionThe retention window cap
bundleCheapest tier admitting a mixed bundle
licenseManage a self-hosted Pro/Enterprise license
activateShortcut for license activate
diagnoseEntitlement resolver inputs
verify-integrityVerify the tamper-evident hash chain
extensionsLoaded and failed plugins, hook counts
updateUpdate to the latest version
uninstallStop daemons and remove all files
nemoclaw-daemonsRegister LaunchAgents for NemoClaw sandbox daemons (macOS)

Global flag#

FlagEffect
--openclaw-dir PATHOpenClaw 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:

CommandMirrors
tier --jsonGET /api/entitlement
runtimes --jsonGET /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 --jsonGET /api/entitlement/diagnostic
extensions --jsonGET /api/extensions
license --json / activate --json{action, ok, message}
bash
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:

VariableEffect
CLAWMETRY_HOMEClawMetry's own state directory
CLAWMETRY_OPENCLAW_DIRSame as --openclaw-dir
CLAWMETRY_NO_BROWSERDo not open a browser on start
CLAWMETRY_OFFLINESkip every network call
DEBUG=1Verbose 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.

Cookie preferences