On this page
On this page
CLI commands
CLI reference
openclaw is the main CLI entry point. Each core command has a dedicated
reference page or is documented with the command it aliases. This index lists
the commands, global flags, and output styling rules that apply across the CLI.
Setup commands by intent:
openclaw setupandopenclaw onboardverify inference first, then start OpenClaw for Gateway, workspace, channels, skills, and health setup.openclaw setup --baselinecreates the baseline config and workspace without walking the guided onboarding flow.openclaw configurechanges targeted parts of an existing setup: model auth, gateway, channels, plugins, or skills.openclaw channels addconfigures channel accounts after the baseline exists. A channel selection alone uses guided setup. Account, credential, or channel-config flags use the direct path for scripts.
Command pages
| Area | Commands |
|---|---|
| Setup and onboarding | openclaw · setup · onboard · configure · config · completion · doctor · dashboard |
| Reset, backup, and migration | backup · database · migrate · reset · uninstall · update |
| Messaging and agents | message · agent · agents · templates · attach · acp · mcp |
| Health and sessions | status · health · triage · sessions · resume · audit |
| Gateway and logs | gateway · logs · system |
| Models and inference | models · promos · infer · capability (alias for infer) · memory · wiki |
| Network and nodes | connect · directory · nodes · node · worker |
| Runtime and sandbox | approvals · exec-policy (see approvals) · sandbox · tui · chat/terminal (aliases for tui --local) · browser |
| Worktrees | worktrees |
| Automation | cron (alias automations) · hooks · webhooks · transcripts |
| Discovery and docs | dns · docs |
| Pairing and channels | pairing · qr · devices · channels · users |
| Security and plugins | security · secrets · skills · plugins · proxy |
| Legacy aliases | daemon (gateway service) · clawbot (namespace) |
| Plugins (optional) | file-transfer · path · policy · voicecall · workboard (if installed) |
Global flags
| Flag | Purpose |
|---|---|
--dev |
Isolate state under ~/.openclaw-dev, default gateway port 19001, and shift derived ports |
--profile <name> |
Isolate state under ~/.openclaw-<name> (OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH) |
--container <name> |
Run the CLI inside a running Podman/Docker container named <name> (default: env OPENCLAW_CONTAINER) |
--log-level <level> |
Override the global log level for file + console output |
--no-color |
Disable ANSI colors (NO_COLOR=1 is also respected) |
--update |
Shorthand for openclaw update; works for both source checkouts and package installs |
-V, --version, -v |
Print version and exit |
Place command-specific options after their command name, for example openclaw status --json. Global options such as --profile can precede the command.
Unknown root options fail with an option error and a help hint instead of starting onboarding or the TUI.
A named --profile replaces standard state and config paths inherited from
another profile, including a running Gateway service. Explicitly customized
state directories and config paths remain unchanged.
Use -- to stop option parsing. Command words still dispatch after it: for example,
openclaw -- config get gateway.port reads the configured port. A token such as
--help after -- is a positional argument.
Output modes
- ANSI colors and progress indicators render only in TTY sessions.
- OSC-8 hyperlinks render as clickable links where supported. Otherwise the CLI prints plain URLs.
- Human-readable report values neutralize terminal escape sequences before styling.
Embedded newlines, carriage returns, and tabs appear as
\n,\r, and\tinstead of changing the report layout. This display formatting does not change the underlying paths, configuration values, or JSON fields. Bidirectional formatting controls are removed from displayed values; ordinary right-to-left letters and emoji are preserved. - On bounded reporting commands,
--jsonreserves stdout for one JSON document. The CLI suppresses styling and progress output. Warnings and diagnostics stay on stderr. - Interactive UIs and wizards, long-running servers and streams, shell integration,
and pure side-effect commands may omit
--jsonwhen they have no meaningful report to return. - Long-running commands show a progress indicator (
OSC 9;4when supported). - Connection failures give a short explanation and a status-check command. If a request may have completed, check its result before retrying. Unexpected failures point to a recovery command; use
OPENCLAW_DEBUG=1when rerunning to include diagnostics. JSON failures keep their diagnostic fields. - Update failures keep their reason on stderr, including in JSON mode.
- Resource cleanup failures are reported on stderr without replacing the command's result. Cleanup that exceeds its reporting deadline remains tracked and reports any later failure.
JSON failures
Successful JSON payloads remain command-specific. When a command in JSON output mode fails, it exits nonzero and writes one JSON document to stdout with this envelope:
A command may add domain-specific fields, such as per-item results, beside this
envelope. Gateway-backed agent turns that fail after the Gateway accepted the run
also record the accepted runId and origin: "gateway" beside the envelope, so
scripts can report the in-flight run. Failure messages are sanitized. Human-readable
diagnostics may also be written to stderr, so scripts should parse stdout and still
check the exit status.
Onboarding and setup failures retain phase and the top-level message beside
the envelope. Use error.message for the shared failure description and phase
for onboarding-specific recovery.
Color palette
OpenClaw uses a lobster palette for CLI output:
| Token | Hex | Used for |
|---|---|---|
accent |
#FF5A2D |
Headings, labels, primary highlights |
accentBright |
#FF7A3D |
Command names, emphasis |
accentDim |
#D14A22 |
Secondary highlight text |
info |
#FF8A5B |
Informational values |
success |
#2FBF71 |
Success states |
warn |
#FFB020 |
Warnings, option flags, fallbacks |
error |
#E23D2D |
Errors, failures |
muted |
#8B7F77 |
De-emphasis, metadata |
Palette source of truth: packages/terminal-core/src/palette.ts.
Command tree
Full command tree
This map covers core commands and their primary subcommands. Plugin-added
subcommands (for example under skills, plugins, and wiki) evolve
independently. Run <command> --help for the authoritative, current list.
Plugins can add additional top-level commands, such as
openclaw workboard or openclaw voicecall.
Database
openclaw database provides shared-state preparation, schema preflight,
preservation verification, shared-state ownership, and offline database-family engine porting. See
database schemas for compatibility contracts.
Stop the Gateway and embedded agents first. --family selects all existing
physical stores of one family and changes only that family's override. Omit it
to port all eligible families when their engines are homogeneous; mixed
selections require a family. Agent and shared-state families can use different
engines. --dry-run checks
read-only prerequisites without creating migration
artifacts. Recovery requires the active manifest at
<stateDir>/recovery/database-port/manifest.json; --resume and --rollback are
mutually exclusive and cannot be combined with --family, --to, or --dry-run.
Completed ports retain exact original captures and an archived manifest under
<stateDir>/recovery/database-port/<operation-id>/. To keep later writes when
returning to SQLite, run a new --to sqlite port; completed manifests are not an
undo mechanism. Reverse-port before a raw package-manager downgrade. See the
port runbook for
backup contents, interruption recovery, and restart guidance.
Prepare exact PostgreSQL shared state
Use prepare-state to initialize an absent PostgreSQL shared-state namespace or
validate an existing one for the installed OpenClaw version. It requires valid
PostgreSQL configuration for the state family and an existing matching local
anchor in the selected profile/state directory; it does not create or replace
an anchor, port SQLite data, or select a new store identity.
Stop the Gateway and embedded agents first. The command acquires exclusive shared-state schema custody without waiting for another owner and closes its native resources before releasing custody. It does not stop a running owner or bypass an unfinished database port.
Both identity options are required:
--expected-store-id <uuid>must exactly match the store UUID in the existing PostgreSQL anchor. Do not generate a replacement UUID.--expected-namespace <namespace>must exactly match both the anchor's namespace and<schemaPrefix>_state_<uuid-prefix>for the configureddatabase.postgres.schemaPrefix. Here,uuid-prefixis the first 16 characters of the store UUID with hyphens removed. The namespace accepts lowercase letters, digits, and underscores, starting with a letter or underscore.
Only a namespace that is entirely absent is bootstrapped with the installed schema. An existing namespace, even an empty or incomplete one, is never treated as new: it must pass existing-only identity, metadata, catalog, and current schema-version validation. This command does not migrate or repair existing state. See anchors and catalog admission.
Success reports prepared after bootstrap or ready for an already valid store.
With --json, the result includes ok, status, path (the local anchor),
storeId, namespace, and schemaVersion. Without it, the command prints
Shared state: <status> (<namespace>). Failures exit nonzero; --json uses the
JSON failure envelope.
If identity validation fails, check the selected profile, configuration, and matched anchor before retrying. For incompatible or incomplete existing storage, use a compatible OpenClaw version or restore a matched backup; do not delete the namespace or edit its metadata to force preparation.
Exact SQLite migration capture
An external controller can capture a running local Gateway only while it holds a ready, non-drain suspension with terminal sessions preserved and zero write custody. Use the controller's existing request and suspension IDs; this command neither creates the initial suspension nor resumes or stops the Gateway.
Quiesced capture authenticates to the selected local backend with its shared token or password. It creates its own verified filesystem archive and exact SQLite images under the same bounded suspension without writing to the source database or journal files. The Gateway keeps its live ownership heartbeat: its own lease timestamps can advance during suspension. Capture does not stop those renewals or treat a captured lease as authority to activate restored state. Filesystem archive creation and verification run in a joined subprocess so blocking SQLite or filesystem work does not prevent suspension renewal. The archive step has a 30-minute deadline; cancellation waits for the child to stop before capture returns. It renews only the supplied controller request and refuses changed owners, expired suspensions, pending writes, and PostgreSQL sources. The controller must retain the suspension until capture finishes, then decide whether to resume or stop its Gateway.
The output must be outside the source state and configuration roots. Restore only
extracts into new private staging; it never activates that state. Preserve the
producer's manifest digest and the same logical source paths. Exact captures contain
private credentials and retained operational state, unlike sanitized ordinary backups.
For a stopped source, the existing offline mode instead requires --base-archive
from that same stopped state and does not accept suspension IDs.
Chat slash commands
Chat messages support /... commands. See slash commands.
Highlights:
/status- quick diagnostics./trace- session-scoped plugin trace/debug lines./config- persisted config changes./debug- runtime-only config overrides in memory, not on disk. Requirescommands.debug: true.
Usage tracking
openclaw status --usage and the Control UI surface provider usage/quota when
OAuth/API credentials are available. Data comes directly from provider usage
endpoints and is normalized to X% left. Providers with current usage
windows: Anthropic, Gemini CLI, GitHub Copilot, MiniMax, OpenAI Codex,
Xiaomi, and z.ai.
See Usage tracking for details.