id = "openclaw-cli"
name = "OpenClaw"
homepage = "https://docs.openclaw.ai"
description = "Personal AI assistant you own and run on your own devices."
executables = ["openclaw"]
[dotfiles]
paths = []
secret = ["~/.openclaw/openclaw.json", "~/.config/openclaw/gateway.env"]
[commands]
format = 1
label = "OpenClaw"
description = "Run one headless agent turn or check OpenClaw status. Gateway, channels, plugins, onboarding and configuration commands are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.subcommand]]
path = ["agent", "exec"]
label = "Run one agent turn"
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://docs.openclaw.ai/cli/agent"
revision = "2026-10"
evidence = """
openclaw agent exec "Run the focused tests and fix failures"
openclaw agent exec --message-file task.md --cwd ./repo
[message]: positional prompt text
--message-file <path>: read a UTF-8 prompt from a file; - reads stdin
--cwd <dir>: set both the agent workspace and tool working directory
--config <path>: run against this config file instead of the ambient config (JSON5 and $include supported)
--isolated: ignore the ambient config and use only exec defaults
--model <provider/model>: explicit primary model
--local-model-lean: use the reduced local-model tool surface
--thinking <level>: one-run thinking level
--fallback <provider/model>: ordered fallback model; repeatable and requires --model
--timeout <seconds>: deadline in seconds (default 600; 0 disables it)
--json: emit the stable JSON envelope
"""
[[commands.subcommand.field]]
id = "message"
label = "Prompt"
type = "string"
position = 0
sources = ["docs"]
[[commands.subcommand.field]]
id = "message_file"
label = "Prompt file"
description = "Read the prompt from a UTF-8 file instead."
type = "path"
option = ["--message-file"]
path = { kind = "file", role = "input" }
sources = ["docs"]
[[commands.subcommand.field]]
id = "cwd"
label = "Working directory"
description = "Sets both the agent workspace and the tool working directory."
type = "path"
option = ["--cwd"]
path = { kind = "directory", role = "input" }
sources = ["docs"]
[[commands.subcommand.field]]
id = "config"
label = "Config file"
type = "path"
option = ["--config"]
path = { kind = "file", role = "input" }
sources = ["docs"]
[[commands.subcommand.field]]
id = "isolated"
label = "Ignore ambient config"
type = "boolean"
option = ["--isolated"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "model"
label = "Model"
description = "provider/model."
type = "string"
option = ["--model"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "fallback"
label = "Fallback models"
description = "Ordered fallbacks; requires a model."
type = "string"
option = ["--fallback"]
multiple = true
sources = ["docs"]
[[commands.subcommand.field]]
id = "thinking"
label = "Thinking level"
type = "string"
option = ["--thinking"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "local_model_lean"
label = "Lean tool surface for local models"
type = "boolean"
option = ["--local-model-lean"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "timeout"
label = "Timeout (seconds)"
description = "Default 600; 0 disables the deadline."
type = "integer"
option = ["--timeout"]
validation = { min = 0 }
sources = ["docs"]
[[commands.subcommand.field]]
id = "json"
label = "JSON output"
type = "boolean"
option = ["--json"]
sources = ["docs"]
[[commands.subcommand.task]]
id = "prompt"
label = "Run a prompt"
fields = ["message", "cwd", "model"]
required = ["message"]
[[commands.subcommand.task]]
id = "from_file"
label = "Run a prompt file in a repo"
fields = ["message_file", "cwd", "json"]
required = ["message_file"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["message", "message_file", "cwd", "model", "json"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["config", "isolated", "fallback", "thinking", "local_model_lean", "timeout"]
[[commands.subcommand]]
path = ["status"]
label = "Check status"
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://docs.openclaw.ai/cli/status"
revision = "2026-10"
evidence = """
openclaw status
openclaw status --all
openclaw status --deep
openclaw status --usage --agent work
--all: Full diagnosis (read-only, pasteable).
--deep: Requests channel health (live checks where supported). Also enables the security audit.
--usage: Prints normalized provider usage windows as X% left.
--agent <id>: Selects the agent auth/profile scope for --usage.
--json: Machine-readable output.
--timeout <ms>: Check timeout in milliseconds (default: 60000).
"""
[[commands.subcommand.field]]
id = "all"
label = "Full diagnosis"
type = "boolean"
option = ["--all"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "deep"
label = "Deep channel health checks"
type = "boolean"
option = ["--deep"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "usage"
label = "Provider usage"
type = "boolean"
option = ["--usage"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "agent"
label = "Agent id"
description = "Agent auth/profile scope for usage."
type = "string"
option = ["--agent"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "json"
label = "JSON output"
type = "boolean"
option = ["--json"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "timeout"
label = "Timeout (ms)"
type = "integer"
option = ["--timeout"]
validation = { min = 1 }
sources = ["docs"]
[[commands.subcommand.task]]
id = "full"
label = "Full diagnosis"
fields = ["all", "deep", "json"]
set = { all = [true] }
[[commands.subcommand.task]]
id = "usage"
label = "Show provider usage"
fields = ["usage", "agent"]
set = { usage = [true] }
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["all", "deep", "usage", "agent", "json"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["timeout"]