Steve
Overview
Use the steve CLI to automate macOS applications through the Accessibility API. Prefer steve when you need deterministic, scriptable UI control with JSON responses.
Quick Start
- Assume the CLI is installed and available on
PATH. If not, download it from the GitHub releases page: https://github.com/mikker/steve/releases - Ensure Accessibility permissions are granted for the terminal running steve.
steve apps
Core Tasks
Target an app or window
Use --app, --bundle, or --pid to select the app, and --window to scope to a window title.
steve elements --app "System Settings" --window "Settings"
Find text reliably
Use --text to match visible text via AXValue, AXDescription, or AXStaticText title (case-insensitive substring).
steve find --text "Dictation Mode" --window "Settings"
Click the right ancestor
After a text match, use --ancestor-role and --click to press a nearby container row/cell/button.
steve find --text "Dictation Mode" --window "Settings" --ancestor-role AXRow --click
Common interactions
steve click --title "OK"
steve type "hello world"
steve key cmd+shift+p
steve menu "File" "New"
Reliability Tips
- Prefer
--windowand--textover raw coordinates. - Use
waitfor UI state changes before clicking:
steve wait --title "Results" --timeout 5