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] # https://docs.openclaw.ai/configuration/ — the default is # ~/.openclaw/openclaw.json. The file is JSON5 rather than strict JSON, and it # can contain gateway/channel credentials; the validator only supports JSON, # so it is withheld whole instead of inventing key paths that would not match # the actual parser. # https://docs.openclaw.ai/help/environment/ also documents the compatibility # fallback ~/.config/openclaw/gateway.env for environment-file credentials. 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 : read a UTF-8 prompt from a file; - reads stdin --cwd : set both the agent workspace and tool working directory --config : 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 : explicit primary model --local-model-lean: use the reduced local-model tool surface --thinking : one-run thinking level --fallback : ordered fallback model; repeatable and requires --model --timeout : 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 : Selects the agent auth/profile scope for --usage. --json: Machine-readable output. --timeout : 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"]