CLI Reference

This page is generated from the Node CLI registry and command sources.

Command Summary

Command Syntax Aliases Flags Summary
operator operator setup --apk <path> [--device <id>] [--operator-package <package>] - --apk, --device, --operator-package, --help
Subcommands: setup, install
Install the Operator APK and configure the device
setup - - --apk, --device, --operator-package Alias guidance - use operator setup instead
install - - --apk, --device, --operator-package Alias guidance - use operator setup instead
devices devices - - List connected Android devices
emulator emulator list
emulator inspect <name>
emulator create [--name <name>]
emulator start <name>
emulator stop <name>
emulator delete <name>
emulator status
emulator provision
- --name
Subcommands: list, inspect, create, start, stop, delete, status, provision
Manage Android emulators (AVDs)
provision - - -
Subcommands: emulator
Provision an Android emulator
packages packages list [--device <id>] [--operator-package <pkg>] [--third-party] - --third-party, --device, --operator-package List installed packages on a device
exec exec <json-or-file> [--validate-only] [--dry-run] [--device <id>] [--operator-package <package>]
exec best-effort --goal <text> [--device <id>] [--operator-package <package>]
execute --payload, --validate-only, --dry-run, --goal, --device, --operator-package, --execution, --input, --file Execute a validated command payload
snapshot snapshot [--device <id>] [--operator-package <pkg>] [--json] snapshot-ui, snapshot_ui --device, --operator-package, --json Get current Android UI hierarchy as XML
screenshot screenshot [--device <id>] [--operator-package <pkg>] [--path <file>] [--json] take-screenshot, take_screenshot, capture-screenshot --path, --device, --operator-package, --json Capture a screenshot from the device
click click --text <text> | --id <id> | --role <role> [--device <id>] [--operator-package <pkg>] [--json] tap --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --coordinate, --long, --focus, --device, --operator-package, --json Tap the first matching UI element
open open <package-id|url|uri> [--device <id>] [--operator-package <pkg>] [--json] open-app, open_app, open-uri, open-url, open_uri, open_url --app, --device, --operator-package, --json, --help Open an app, URL, or URI on the device
type type <text> --role <role> | --id <id> [--device <id>] [--operator-package <pkg>] [--json] fill, enter-text, enter_text --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --submit, --clear, --device, --operator-package, --json, --help Type text into the first matching UI element
read read --text <text> | --id <id> | --role <role> [--device <id>] [--operator-package <pkg>] [--json] read-text, read_text --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --all, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --device, --operator-package, --json Read text from the first matching UI element
wait wait --text <text> | --id <id> | --role <role> [--device <id>] [--operator-package <pkg>] [--timeout <ms>] [--json] wait-for, wait_for, wait-for-node, wait_for_node, find, find-node, find_node --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --device, --operator-package, --timeout, --json Wait until a matching UI element appears
press press <back|home|recents> [--device <id>] [--operator-package <pkg>] [--json] press-key, press_key --key, --device, --operator-package, --json, --help Press a hardware key on the device
back back [--device <id>] [--operator-package <pkg>] [--json] - --device, --operator-package, --json Press the Android back key
close close <package> [--device <id>] [--operator-package <pkg>] [--json] close-app, close_app --app, --device, --operator-package, --json Force-stop an Android application
sleep sleep <ms> [--device <id>] [--operator-package <pkg>] [--json] - --device, --operator-package, --json Pause execution for a duration
scroll scroll <down|up|left|right> [--container-id <id>] [--device <id>] [--operator-package <pkg>] [--json] - --direction, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --device, --operator-package, --json, --help Scroll the screen in a direction
scroll-until scroll-until [<direction>] --text <text> [--click] [--device <id>] [--operator-package <pkg>] [--json] scroll_until --click, --direction, --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --device, --operator-package, --json Scroll until a target element is visible
scroll-and-click scroll-and-click [<direction>] --text <text> [--device <id>] [--operator-package <pkg>] [--json] scroll_and_click --direction, --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --click, --device, --operator-package, --json Scroll until target is visible, then click it (alias for scroll-until --click)
wait-for-nav wait-for-nav --app <package> --timeout <ms> [--device <id>] [--operator-package <pkg>] [--json] wait-for-navigation, wait_for_navigation --app, --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --validate-only, --dry-run, --timeout, --device, --operator-package, --json Wait for app or screen navigation to complete
read-value read-value --label <text> [--json] read-kv, read-key-value-pair, read_key_value_pair --label, --label-id, --label-desc, --all, --validate-only, --dry-run, --json Read the value associated with a labeled element
skills skills list
skills get <skill_id>
skills search --app <package_id> [--intent <intent>] [--keyword <text>]
skills search <keyword>
skills compile-artifact <skill_id> --artifact <name> [--vars <json>]
skills compile-artifact --skill-id <id> --artifact <name> [--vars <json>]
skills new <skill_id> [--summary <text>] [--recording-context <file>]
skills validate <skill_id> [--dry-run]
skills validate --all [--dry-run]
skills run <skill_id> [--device <id>] [--operator-package <pkg>] [--timeout <ms>] [--expect-contains <text>] [--skip-validate] [--json] [--output <json|pretty>] [skill_args...]
skills install
skills update [--ref <git-ref>]
skills sync --ref <git-ref>
- --app, --intent, --keyword, --skill-id, --artifact, --vars, --summary, --recording-context, --all, --dry-run, --device, --device-id, --operator-package, --receiver-package, --timeout, --timeout-ms, --expect-contains, --skip-validate, --ref, --json, --output
Subcommands: install, sync, new, validate, compile-artifact, run
Manage and run automation skills
recording recording start [--session-id <id>] [--device <serial>] [--operator-package <pkg>]
recording stop
recording pull
recording parse --input <file> [--out <file>]
recording export --input <file|directory> [--out <file>] [--snapshots <omit|include>]
recording compare --baseline <export.json> --result <skills-run.json> [--mode <auto|literal|semantic>]
record --session-id, --out, --input, --snapshots, --baseline, --result, --mode, --device, --operator-package
Subcommands: compare, export
Manage recording sessions on the Operator app
serve serve [--port <number>] [--host <string>] - --port, --host Start local HTTP/SSE server for remote control
mcp mcp serve - - Start the first-party MCP server
logs logs - - Tail the Clawperator log file
doctor doctor [--json]
doctor --fix
doctor --full
doctor --check-only
- --fix, --full, --check-only, --json, --format, --output Run environment and runtime checks
grant-device-permissions grant-device-permissions [--device <id>] [--operator-package <package>] - --device, --operator-package Re-grant accessibility and notification permissions
version version
version --check-compat [--device <id>] [--operator-package <package>]
- --check-compat, --device, --operator-package Show the CLI version

Setup

Command Syntax Aliases Flags Summary
operator operator setup --apk <path> [--device <id>] [--operator-package <package>] - --apk, --device, --operator-package, --help
Subcommands: setup, install
Install the Operator APK and configure the device
setup - - --apk, --device, --operator-package Alias guidance - use operator setup instead
install - - --apk, --device, --operator-package Alias guidance - use operator setup instead
doctor doctor [--json]
doctor --fix
doctor --full
doctor --check-only
- --fix, --full, --check-only, --json, --format, --output Run environment and runtime checks
grant-device-permissions grant-device-permissions [--device <id>] [--operator-package <package>] - --device, --operator-package Re-grant accessibility and notification permissions
version version
version --check-compat [--device <id>] [--operator-package <package>]
- --check-compat, --device, --operator-package Show the CLI version

operator

  • Summary: Install the Operator APK and configure the device
  • Syntax: operator setup --apk <path> [--device <id>] [--operator-package <package>]
  • Aliases: -
  • Flags: --apk, --device, --operator-package, --help
  • Subcommands: setup, install

setup

  • Summary: Alias guidance - use operator setup instead
  • Syntax: -
  • Aliases: -
  • Flags: --apk, --device, --operator-package

install

  • Summary: Alias guidance - use operator setup instead
  • Syntax: -
  • Aliases: -
  • Flags: --apk, --device, --operator-package

doctor

  • Summary: Run environment and runtime checks
  • Syntax: doctor [--json], doctor --fix, doctor --full, doctor --check-only
  • Aliases: -
  • Flags: --fix, --full, --check-only, --json, --format, --output

grant-device-permissions

  • Summary: Re-grant accessibility and notification permissions
  • Syntax: grant-device-permissions [--device <id>] [--operator-package <package>]
  • Aliases: -
  • Flags: --device, --operator-package

version

  • Summary: Show the CLI version
  • Syntax: version, version --check-compat [--device <id>] [--operator-package <package>]
  • Aliases: -
  • Flags: --check-compat, --device, --operator-package

Device Management

Command Syntax Aliases Flags Summary
devices devices - - List connected Android devices
emulator emulator list
emulator inspect <name>
emulator create [--name <name>]
emulator start <name>
emulator stop <name>
emulator delete <name>
emulator status
emulator provision
- --name
Subcommands: list, inspect, create, start, stop, delete, status, provision
Manage Android emulators (AVDs)
provision - - -
Subcommands: emulator
Provision an Android emulator
packages packages list [--device <id>] [--operator-package <pkg>] [--third-party] - --third-party, --device, --operator-package List installed packages on a device

devices

  • Summary: List connected Android devices
  • Syntax: devices
  • Aliases: -
  • Flags: -

emulator

  • Summary: Manage Android emulators (AVDs)
  • Syntax: emulator list, emulator inspect <name>, emulator create [--name <name>], emulator start <name>, emulator stop <name>, emulator delete <name>, emulator status, emulator provision
  • Aliases: -
  • Flags: --name
  • Subcommands: list, inspect, create, start, stop, delete, status, provision

provision

  • Summary: Provision an Android emulator
  • Syntax: -
  • Aliases: -
  • Flags: -
  • Subcommands: emulator

packages

  • Summary: List installed packages on a device
  • Syntax: packages list [--device <id>] [--operator-package <pkg>] [--third-party]
  • Aliases: -
  • Flags: --third-party, --device, --operator-package

Execution

Command Syntax Aliases Flags Summary
exec exec <json-or-file> [--validate-only] [--dry-run] [--device <id>] [--operator-package <package>]
exec best-effort --goal <text> [--device <id>] [--operator-package <package>]
execute --payload, --validate-only, --dry-run, --goal, --device, --operator-package, --execution, --input, --file Execute a validated command payload
skills skills list
skills get <skill_id>
skills search --app <package_id> [--intent <intent>] [--keyword <text>]
skills search <keyword>
skills compile-artifact <skill_id> --artifact <name> [--vars <json>]
skills compile-artifact --skill-id <id> --artifact <name> [--vars <json>]
skills new <skill_id> [--summary <text>] [--recording-context <file>]
skills validate <skill_id> [--dry-run]
skills validate --all [--dry-run]
skills run <skill_id> [--device <id>] [--operator-package <pkg>] [--timeout <ms>] [--expect-contains <text>] [--skip-validate] [--json] [--output <json|pretty>] [skill_args...]
skills install
skills update [--ref <git-ref>]
skills sync --ref <git-ref>
- --app, --intent, --keyword, --skill-id, --artifact, --vars, --summary, --recording-context, --all, --dry-run, --device, --device-id, --operator-package, --receiver-package, --timeout, --timeout-ms, --expect-contains, --skip-validate, --ref, --json, --output
Subcommands: install, sync, new, validate, compile-artifact, run
Manage and run automation skills
serve serve [--port <number>] [--host <string>] - --port, --host Start local HTTP/SSE server for remote control
mcp mcp serve - - Start the first-party MCP server

exec

  • Summary: Execute a validated command payload
  • Syntax: exec <json-or-file> [--validate-only] [--dry-run] [--device <id>] [--operator-package <package>], exec best-effort --goal <text> [--device <id>] [--operator-package <package>]
  • Aliases: execute
  • Flags: --payload, --validate-only, --dry-run, --goal, --device, --operator-package, --execution, --input, --file

skills

  • Summary: Manage and run automation skills
  • Syntax: skills list, skills get <skill_id>, skills search --app <package_id> [--intent <intent>] [--keyword <text>], skills search <keyword>, skills compile-artifact <skill_id> --artifact <name> [--vars <json>], skills compile-artifact --skill-id <id> --artifact <name> [--vars <json>], skills new <skill_id> [--summary <text>] [--recording-context <file>], skills validate <skill_id> [--dry-run], skills validate --all [--dry-run], skills run <skill_id> [--device <id>] [--operator-package <pkg>] [--timeout <ms>] [--expect-contains <text>] [--skip-validate] [--json] [--output <json|pretty>] [skill_args...], skills install, skills update [--ref <git-ref>], skills sync --ref <git-ref>
  • Aliases: -
  • Flags: --app, --intent, --keyword, --skill-id, --artifact, --vars, --summary, --recording-context, --all, --dry-run, --device, --device-id, --operator-package, --receiver-package, --timeout, --timeout-ms, --expect-contains, --skip-validate, --ref, --json, --output
  • Subcommands: install, sync, new, validate, compile-artifact, run

serve

  • Summary: Start local HTTP/SSE server for remote control
  • Syntax: serve [--port <number>] [--host <string>]
  • Aliases: -
  • Flags: --port, --host

mcp

  • Summary: Start the first-party MCP server
  • Syntax: mcp serve
  • Aliases: -
  • Flags: -

Device Interaction

Command Syntax Aliases Flags Summary
snapshot snapshot [--device <id>] [--operator-package <pkg>] [--json] snapshot-ui, snapshot_ui --device, --operator-package, --json Get current Android UI hierarchy as XML
screenshot screenshot [--device <id>] [--operator-package <pkg>] [--path <file>] [--json] take-screenshot, take_screenshot, capture-screenshot --path, --device, --operator-package, --json Capture a screenshot from the device
click click --text <text> | --id <id> | --role <role> [--device <id>] [--operator-package <pkg>] [--json] tap --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --coordinate, --long, --focus, --device, --operator-package, --json Tap the first matching UI element
open open <package-id|url|uri> [--device <id>] [--operator-package <pkg>] [--json] open-app, open_app, open-uri, open-url, open_uri, open_url --app, --device, --operator-package, --json, --help Open an app, URL, or URI on the device
type type <text> --role <role> | --id <id> [--device <id>] [--operator-package <pkg>] [--json] fill, enter-text, enter_text --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --submit, --clear, --device, --operator-package, --json, --help Type text into the first matching UI element
read read --text <text> | --id <id> | --role <role> [--device <id>] [--operator-package <pkg>] [--json] read-text, read_text --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --all, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --device, --operator-package, --json Read text from the first matching UI element
wait wait --text <text> | --id <id> | --role <role> [--device <id>] [--operator-package <pkg>] [--timeout <ms>] [--json] wait-for, wait_for, wait-for-node, wait_for_node, find, find-node, find_node --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --device, --operator-package, --timeout, --json Wait until a matching UI element appears
press press <back|home|recents> [--device <id>] [--operator-package <pkg>] [--json] press-key, press_key --key, --device, --operator-package, --json, --help Press a hardware key on the device
back back [--device <id>] [--operator-package <pkg>] [--json] - --device, --operator-package, --json Press the Android back key
close close <package> [--device <id>] [--operator-package <pkg>] [--json] close-app, close_app --app, --device, --operator-package, --json Force-stop an Android application
sleep sleep <ms> [--device <id>] [--operator-package <pkg>] [--json] - --device, --operator-package, --json Pause execution for a duration
scroll scroll <down|up|left|right> [--container-id <id>] [--device <id>] [--operator-package <pkg>] [--json] - --direction, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --device, --operator-package, --json, --help Scroll the screen in a direction
scroll-until scroll-until [<direction>] --text <text> [--click] [--device <id>] [--operator-package <pkg>] [--json] scroll_until --click, --direction, --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --device, --operator-package, --json Scroll until a target element is visible
scroll-and-click scroll-and-click [<direction>] --text <text> [--device <id>] [--operator-package <pkg>] [--json] scroll_and_click --direction, --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --click, --device, --operator-package, --json Scroll until target is visible, then click it (alias for scroll-until --click)
wait-for-nav wait-for-nav --app <package> --timeout <ms> [--device <id>] [--operator-package <pkg>] [--json] wait-for-navigation, wait_for_navigation --app, --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --validate-only, --dry-run, --timeout, --device, --operator-package, --json Wait for app or screen navigation to complete
read-value read-value --label <text> [--json] read-kv, read-key-value-pair, read_key_value_pair --label, --label-id, --label-desc, --all, --validate-only, --dry-run, --json Read the value associated with a labeled element

snapshot

  • Summary: Get current Android UI hierarchy as XML
  • Syntax: snapshot [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: snapshot-ui, snapshot_ui
  • Flags: --device, --operator-package, --json

screenshot

  • Summary: Capture a screenshot from the device
  • Syntax: screenshot [--device <id>] [--operator-package <pkg>] [--path <file>] [--json]
  • Aliases: take-screenshot, take_screenshot, capture-screenshot
  • Flags: --path, --device, --operator-package, --json

click

  • Summary: Tap the first matching UI element
  • Syntax: click --text <text> | --id <id> | --role <role> [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: tap
  • Flags: --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --coordinate, --long, --focus, --device, --operator-package, --json

open

  • Summary: Open an app, URL, or URI on the device
  • Syntax: open <package-id|url|uri> [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: open-app, open_app, open-uri, open-url, open_uri, open_url
  • Flags: --app, --device, --operator-package, --json, --help

type

  • Summary: Type text into the first matching UI element
  • Syntax: type <text> --role <role> | --id <id> [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: fill, enter-text, enter_text
  • Flags: --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --submit, --clear, --device, --operator-package, --json, --help

read

  • Summary: Read text from the first matching UI element
  • Syntax: read --text <text> | --id <id> | --role <role> [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: read-text, read_text
  • Flags: --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --all, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --device, --operator-package, --json

wait

  • Summary: Wait until a matching UI element appears
  • Syntax: wait --text <text> | --id <id> | --role <role> [--device <id>] [--operator-package <pkg>] [--timeout <ms>] [--json]
  • Aliases: wait-for, wait_for, wait-for-node, wait_for_node, find, find-node, find_node
  • Flags: --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --device, --operator-package, --timeout, --json

press

  • Summary: Press a hardware key on the device
  • Syntax: press <back|home|recents> [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: press-key, press_key
  • Flags: --key, --device, --operator-package, --json, --help

back

  • Summary: Press the Android back key
  • Syntax: back [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: -
  • Flags: --device, --operator-package, --json

close

  • Summary: Force-stop an Android application
  • Syntax: close <package> [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: close-app, close_app
  • Flags: --app, --device, --operator-package, --json

sleep

  • Summary: Pause execution for a duration
  • Syntax: sleep <ms> [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: -
  • Flags: --device, --operator-package, --json

scroll

  • Summary: Scroll the screen in a direction
  • Syntax: scroll <down|up|left|right> [--container-id <id>] [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: -
  • Flags: --direction, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --device, --operator-package, --json, --help

scroll-until

  • Summary: Scroll until a target element is visible
  • Syntax: scroll-until [<direction>] --text <text> [--click] [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: scroll_until
  • Flags: --click, --direction, --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --device, --operator-package, --json

scroll-and-click

  • Summary: Scroll until target is visible, then click it (alias for scroll-until --click)
  • Syntax: scroll-and-click [<direction>] --text <text> [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: scroll_and_click
  • Flags: --direction, --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --container-text, --container-text-contains, --container-id, --container-desc, --container-desc-contains, --container-role, --container-selector, --click, --device, --operator-package, --json

wait-for-nav

  • Summary: Wait for app or screen navigation to complete
  • Syntax: wait-for-nav --app <package> --timeout <ms> [--device <id>] [--operator-package <pkg>] [--json]
  • Aliases: wait-for-navigation, wait_for_navigation
  • Flags: --app, --text, --text-contains, --id, --desc, --desc-contains, --role, --selector, --validate-only, --dry-run, --timeout, --device, --operator-package, --json

read-value

  • Summary: Read the value associated with a labeled element
  • Syntax: read-value --label <text> [--json]
  • Aliases: read-kv, read-key-value-pair, read_key_value_pair
  • Flags: --label, --label-id, --label-desc, --all, --validate-only, --dry-run, --json

Recording

Command Syntax Aliases Flags Summary
recording recording start [--session-id <id>] [--device <serial>] [--operator-package <pkg>]
recording stop
recording pull
recording parse --input <file> [--out <file>]
recording export --input <file|directory> [--out <file>] [--snapshots <omit|include>]
recording compare --baseline <export.json> --result <skills-run.json> [--mode <auto|literal|semantic>]
record --session-id, --out, --input, --snapshots, --baseline, --result, --mode, --device, --operator-package
Subcommands: compare, export
Manage recording sessions on the Operator app

recording

  • Summary: Manage recording sessions on the Operator app
  • Syntax: recording start [--session-id <id>] [--device <serial>] [--operator-package <pkg>], recording stop, recording pull, recording parse --input <file> [--out <file>], recording export --input <file|directory> [--out <file>] [--snapshots <omit|include>], recording compare --baseline <export.json> --result <skills-run.json> [--mode <auto|literal|semantic>]
  • Aliases: record
  • Flags: --session-id, --out, --input, --snapshots, --baseline, --result, --mode, --device, --operator-package
  • Subcommands: compare, export

Utilities

Command Syntax Aliases Flags Summary
logs logs - - Tail the Clawperator log file

logs

  • Summary: Tail the Clawperator log file
  • Syntax: logs
  • Aliases: -
  • Flags: -