Peekaboo
STDIOmacOS GUI automation and screenshot tool with AI vision analysis capabilities
macOS GUI automation and screenshot tool with AI vision analysis capabilities

Peekaboo brings high-fidelity screen capture, AI analysis, and complete GUI automation to macOS. Version 3 adds native agent flows and multi-screen automation across the CLI and MCP server.
Note: v3 is currently in beta (3.0.0-beta1) and has a few known issues; see the changelog for details.
brew install steipete/tap/peekaboo
npx -y @steipete/peekaboo
# Capture full screen at Retina scale and save to Desktop peekaboo image --mode screen --retina --path ~/Desktop/screen.png # Click a button by label (captures, resolves, and clicks in one go) peekaboo see --app Safari --json-output | jq -r '.data.session_id' | read SID peekaboo click --on "Reload this page" --session "$SID" # Run a natural-language automation peekaboo "Open Notes and create a TODO list with three items" # Run as an MCP server (Claude/Cursor) npx -y @steipete/peekaboo # Minimal Claude Desktop config snippet (Developer → Edit Config): # { # "mcpServers": { # "peekaboo": { # "command": "npx", # "args": ["-y", "@steipete/peekaboo"], # "env": { # "PEEKABOO_AI_PROVIDERS": "openai/gpt-5.1,anthropic/claude-opus-4" # } # } # } # }
| Command | Key flags / subcommands | What it does |
|---|---|---|
| see | --app, --mode screen/window, --retina, --json-output | Capture and annotate UI, return session + element IDs |
| click | --on <id/query>, --session, --wait, coords | Click by element ID, label, or coordinates |
| type | --text, --clear, --delay-ms | Enter text with pacing options |
| press | key names, --repeat | Special keys and sequences |
| hotkey | combos like cmd,shift,t | Modifier combos (cmd/ctrl/alt/shift) |
| scroll | --on <id>, --direction up/down, --ticks | Scroll views or elements |
| swipe | --from/--to, --duration, --steps | Smooth gesture-style drags |
| drag | --from/--to, modifiers, Dock/Trash targets | Drag-and-drop between elements/coords |
| move | --to <id/coords>, --screen-index | Position the cursor without clicking |
| window | list, move, resize, focus, set-bounds | Move/resize/focus windows and Spaces |
| app | launch, quit, relaunch, switch, list | Launch, quit, relaunch, switch apps |
| space | list, switch, move-window | List or switch macOS Spaces |
| menu | list, list-all, click, click-extra | List/click app menus and extras |
| menubar | list, click | Target status-bar items by name/index |
| dock | launch, right-click, hide, show, list | Interact with Dock items |
| dialog | list, click, input, file, dismiss | Drive system dialogs (open/save/etc.) |
| image | --mode screen/window/menu, --retina, --analyze | Screenshot screen/window/menu bar (+analyze) |
| list | apps, windows, screens, menubar, permissions | Enumerate apps, windows, screens, permissions |
| tools | --source native|mcp, --server <name> | Inspect native + MCP tools |
| config | init, show, add, login, models | Manage credentials/providers/settings |
| permissions | status, grant | Check/grant required macOS permissions |
| run | .peekaboo.json, --output, --no-fail-fast | Execute .peekaboo.json automation scripts |
| sleep | --duration (ms) | Millisecond delays between steps |
| clean | --all-sessions, --older-than, --session | Prune sessions and caches |
| agent | --model, --dry-run, --resume, --max-steps, audio | Natural-language multi-step automation |
| mcp | serve, list, add, enable/disable, test | Manage external MCP servers and serve Peekaboo |
Set providers via PEEKABOO_AI_PROVIDERS or peekaboo config add.
pnpm install then pnpm run build:cli or pnpm run test:safe.pnpm run lint && pnpm run format.MIT