CLI Reference
The Actionbook CLI (actionbook) is the primary interface for interacting with Actionbook. Every browser command is stateless — pass --session and --tab explicitly.
actionbook search
Search for available action manuals.
Usage:
actionbook search [query]
Arguments:
query: The search keyword (e.g., “youtube”, “youtube upload”).
Example:
actionbook search "youtube"
actionbook get
Retrieve a specific action manual by its ID.
Usage:
actionbook get [actionId]
Arguments:
actionId: The unique identifier of the action.
Example:
actionbook get "site/airbnb.com/page/home/element/search-button"
actionbook manual
Get detailed manual information for a site, group, or action. Alias: man.
Usage:
actionbook manual [site] [group] [action]
Arguments:
site: Site name (e.g., “youtube”, “airbnb”). If omitted, lists available sites.
group: Group name within the site (e.g., “videos”).
action: Action name within the group (e.g., “search”).
Examples:
actionbook manual youtube # Overview of a site
actionbook manual youtube videos # Actions in a group
actionbook manual youtube videos search # Detailed action docs
actionbook man youtube --json # Alias with JSON output
actionbook setup
Initial setup wizard for API key, browser preferences, health checks, and optional skills install.
Usage:
actionbook setup
actionbook setup --target claude # Quick mode: install skills for an agent
actionbook setup --non-interactive --api-key <KEY>
actionbook setup --reset
Targets: claude, codex, cursor, windsurf, antigravity, opencode, hermes, standalone, all
actionbook browser
Browser automation commands.
After actionbook setup, browser command syntax is identical across all modes (local, cloud, extension).
Global Flags
These flags apply to all actionbook browser subcommands:
| Flag | Description |
|---|
--session <id> | Target a specific session (defaults to default) |
--tab <id> | Target a specific tab |
--json | Output results as JSON envelope |
--timeout <ms> | Set command timeout in milliseconds |
Session Lifecycle
actionbook browser start
Start or attach a browser session. Entry point for all modes including cloud providers.
Options:
| Flag | Description |
|---|
--mode <mode> | Browser mode: local, extension, or cloud |
-p, --provider <name> | Cloud browser provider: driver, hyperbrowser, browseruse. Implies --mode cloud |
--session <id> | Session ID (get-or-create: reuse if exists, create if not) |
--set-session-id <id> | Always create a new session with this ID (fails if already exists) |
--open-url <url> | Open this URL on start |
--cdp-endpoint <url> | Connect to an existing CDP endpoint |
--header <KEY:VALUE> | Headers for CDP endpoint (may be repeated) |
--headless | Run in headless mode |
--profile <name> | Profile name |
--stealth / --no-stealth | Anti-detection mode (default: enabled) |
--max-tracked-requests <N> | Network request buffer size per tab (default: 500, range: 1–100000) |
Examples:
actionbook browser start --set-session-id s1
actionbook browser start --session s1 --open-url https://google.com
actionbook browser start -p hyperbrowser --session s1
actionbook browser start --mode cloud --cdp-endpoint wss://browser.example.com/ws
-p is mutually exclusive with --cdp-endpoint and --mode local/extension.
See Cloud Providers for provider-specific env vars.
Other Session Commands
actionbook browser list-sessions # List all active sessions
actionbook browser status --session s1 # Show session status
actionbook browser close --session s1 # Close a session (alias: stop)
actionbook browser restart --session s1 # Restart, preserving session_id
Tab Management
actionbook browser list-tabs --session s1 # List tabs
actionbook browser new-tab "https://example.com" --session s1 # Open new tab (alias: open)
actionbook browser close-tab --session s1 --tab t1 # Close a tab
Navigation
actionbook browser goto <url> --session s1 --tab t1 # Navigate to URL
actionbook browser back --session s1 --tab t1 # Go back
actionbook browser forward --session s1 --tab t1 # Go forward
actionbook browser reload --session s1 --tab t1 # Reload page
goto supports --wait-until to control when the command returns: domcontentloaded (default), load, or none.
Observation
# Snapshot
actionbook browser snapshot --session s1 --tab t1 # Accessibility tree with refs
actionbook browser snapshot -i --session s1 --tab t1 # Interactive elements only
actionbook browser snapshot -i -c --session s1 --tab t1 # Interactive + compact
# Page info
actionbook browser title --session s1 --tab t1 # Page title
actionbook browser url --session s1 --tab t1 # Current URL
actionbook browser viewport --session s1 --tab t1 # Viewport dimensions
# Content
actionbook browser text --session s1 --tab t1 # Full page text
actionbook browser text "<selector>" --session s1 --tab t1 # Element text
actionbook browser html --session s1 --tab t1 # Full page HTML
actionbook browser html "<selector>" --session s1 --tab t1 # Element HTML
actionbook browser value "<selector>" --session s1 --tab t1 # Input value
# Element inspection
actionbook browser attr "<selector>" href --session s1 --tab t1 # Single attribute
actionbook browser attrs "<selector>" --session s1 --tab t1 # All attributes
actionbook browser box "<selector>" --session s1 --tab t1 # Bounding rect
actionbook browser styles "<selector>" color fontSize --session s1 --tab t1 # Computed styles
actionbook browser describe "<selector>" --session s1 --tab t1 # Full element description
actionbook browser state "<selector>" --session s1 --tab t1 # State flags
actionbook browser inspect-point 420,310 --session s1 --tab t1 # Inspect at coordinates
# Query
actionbook browser query one "<selector>" --session s1 --tab t1 # Exactly one match
actionbook browser query all "<selector>" --session s1 --tab t1 # All matches
actionbook browser query count "<selector>" --session s1 --tab t1 # Match count
actionbook browser query nth 2 "<selector>" --session s1 --tab t1 # Nth match (1-based)
# Screenshot & PDF
actionbook browser screenshot output.png --session s1 --tab t1 # Screenshot
actionbook browser screenshot output.png --full --session s1 --tab t1 # Full page
actionbook browser screenshot output.png --annotate --session s1 --tab t1 # With labels
actionbook browser pdf output.pdf --session s1 --tab t1 # Save as PDF
Interaction
# Click
actionbook browser click "<selector>" --session s1 --tab t1 # Click element
actionbook browser click 420,310 --session s1 --tab t1 # Click coordinates
actionbook browser click @e5 --session s1 --tab t1 # Click by snapshot ref
actionbook browser click "<selector>" --count 2 --session s1 --tab t1 # Double-click
# Text input
actionbook browser fill "<selector>" "text" --session s1 --tab t1 # Clear field, then set value
actionbook browser type "<selector>" "text" --session s1 --tab t1 # Type keystroke by keystroke
# Keyboard
actionbook browser press Enter --session s1 --tab t1
actionbook browser press Control+A --session s1 --tab t1
# Selection
actionbook browser select "<selector>" "value" --session s1 --tab t1
actionbook browser select "<selector>" "Display Text" --by-text --session s1 --tab t1
actionbook browser select "<selector>" @e12 --by-ref --session s1 --tab t1
# Mouse
actionbook browser hover "<selector>" --session s1 --tab t1
actionbook browser focus "<selector>" --session s1 --tab t1
actionbook browser mouse-move 420,310 --session s1 --tab t1
actionbook browser cursor-position --session s1 --tab t1
actionbook browser drag "<source>" "<target>" --session s1 --tab t1
# Scroll
actionbook browser scroll down --session s1 --tab t1
actionbook browser scroll down 500 --session s1 --tab t1
actionbook browser scroll into-view @e8 --session s1 --tab t1
actionbook browser scroll top --session s1 --tab t1
# JavaScript
actionbook browser eval "document.title" --session s1 --tab t1
actionbook browser eval "document.querySelectorAll('a').length" --session s1 --tab t1
actionbook browser eval "await fetch('/api/data').then(r => r.json())" --no-isolate --session s1 --tab t1
# File upload
actionbook browser upload "<selector>" /path/to/file.pdf --session s1 --tab t1
fill clears the field and sets the value directly (like pasting). type simulates individual keystrokes and appends to existing content.
eval isolates let/const scope by default. Use --no-isolate for multi-statement async expressions or when you need shared scope across calls.
Wait
actionbook browser wait element "<selector>" --session s1 --tab t1
actionbook browser wait navigation --session s1 --tab t1
actionbook browser wait network-idle --session s1 --tab t1
actionbook browser wait condition "document.readyState === 'complete'" --session s1 --tab t1
Default timeout: 30000ms. Override with --timeout <ms>.
wait network-idle automatically falls back from strict (zero in-flight requests for 500ms) to relaxed mode on pages with persistent background traffic. Relaxed mode requires fewer than 5 new requests in a 10s window with ≤5 pending, sustained for 3s. The response includes mode (“strict” or “relaxed”) so callers know which condition was met.
Logs & Network
# Console logs
actionbook browser logs console --session s1 --tab t1
actionbook browser logs console --level warn,error --session s1 --tab t1
actionbook browser logs errors --session s1 --tab t1
# Network
actionbook browser network requests --session s1 --tab t1
actionbook browser network requests --filter /api/ --method POST --session s1 --tab t1
actionbook browser network requests --dump --out /tmp/dump --session s1 --tab t1 # Export to requests.json
actionbook browser network request <id> --session s1 --tab t1 # Full detail + response body
# HAR recording
actionbook browser network har start --session s1 --tab t1 # Start recording
actionbook browser network har stop --session s1 --tab t1 # Stop and export HAR 1.2 file
actionbook browser network har stop --session s1 --tab t1 --out /tmp/trace.har # Custom output path
HAR recording is per-tab. Multiple tabs or sessions can record independently. Output is HAR 1.2 JSON with request/response headers and timings (no response bodies — use --dump for that). If --out is omitted, a timestamped file is created in ~/.actionbook/har/. Redirect chains produce one entry per hop. Error codes: HAR_ALREADY_RECORDING, HAR_NOT_RECORDING.
Cookies & Storage
# Cookies (session-level, no --tab)
actionbook browser cookies list --session s1
actionbook browser cookies get session_id --session s1
actionbook browser cookies set token abc123 --session s1
actionbook browser cookies delete token --session s1
actionbook browser cookies clear --session s1
# Local Storage
actionbook browser local-storage list --session s1 --tab t1
actionbook browser local-storage get myKey --session s1 --tab t1
actionbook browser local-storage set myKey "value" --session s1 --tab t1
# Session Storage (same syntax as local-storage)
actionbook browser session-storage list --session s1 --tab t1
Batch Operations
actionbook browser batch-new-tab --urls https://a.com https://b.com --session s1
actionbook browser batch-snapshot --tabs t1 t2 t3 --session s1
actionbook browser batch-click @e5 @e6 @e7 --session s1 --tab t1
actionbook extension
Manage the Chrome extension used by extension mode. The extension bridge runs inside the actionbook daemon (auto-started by browser commands).
The recommended install method is the Chrome Web Store (current version: 0.4.0). actionbook extension install is a local fallback — after running it, you must manually load the unpacked extension in Chrome via chrome://extensions > Developer mode > Load unpacked, using the path from actionbook extension path.
actionbook extension status # Bridge status + extension connection state
actionbook extension ping # Measure bridge RTT
actionbook extension install # Fallback: install to ~/Actionbook/extension/ (requires manual Chrome load)
actionbook extension install --force # Force reinstall
actionbook extension uninstall # Remove extension
actionbook extension path # Print install path, status, and version
extension status returns the bridge state (listening, not_listening, or failed) and whether the extension is connected. extension ping connects to the bridge WebSocket at ws://127.0.0.1:19222 and measures round-trip time.
Extension 0.4.0 changes: Tabs opened by Actionbook are automatically grouped into a Chrome tab group titled “Actionbook” (toggleable via the extension popup). In extension mode, list-tabs now returns only Actionbook-managed tabs (debugger-attached or in the Actionbook tab group) — other user tabs are hidden. Extension versions below 0.4.0 are rejected at handshake.
actionbook daemon
The actionbook daemon runs in the background and manages browser sessions. It auto-starts on the first CLI call.
actionbook daemon restart # Stop the running daemon (next CLI call respawns)