Chrome browser automation from the command line using the DevTools Protocol.
The name comes from William Gibson's novel Agency, where the AI persona "Eunice" has access to a set of autonomous AIs called "aunties." This tool is a companion to eunice - an agentic CLI runner - giving AI agents the ability to see and interact with the web.
# One-liner install (recommended)
curl -sSf https://longrunningagents.com/auntie/install.sh | bash
# From source
git clone https://github.com/xeb/auntie.git
cd auntie
make install
# Or directly with cargo
cargo install --git https://github.com/xeb/auntie.git
# Start Chrome with remote debugging
auntie start
# Navigate to a page
auntie open https://example.com
# Get page content
auntie page # HTML
auntie page --markdown # Markdown
# Take a screenshot
auntie screenshot shot.png
auntie screenshot shot.png --full-page
# Execute JavaScript
auntie script "document.title"
# Stop Chrome
auntie stop
| Command |
Description |
auntie start |
Start Chrome with remote debugging (port 9222) |
auntie start --headless |
Start in headless mode |
auntie stop |
Stop the running Chrome instance |
auntie status |
Check if Chrome is available |
| Command |
Description |
auntie open <url> |
Navigate to URL |
auntie reload |
Reload current page |
auntie reload --hard |
Hard reload (bypass cache) |
auntie back |
Navigate back |
auntie forward |
Navigate forward |
| Command |
Description |
auntie page |
Get page HTML |
auntie page --markdown |
Get page as Markdown |
auntie save <file> |
Save HTML to file |
auntie screenshot <file> |
Capture screenshot |
auntie screenshot <file> --full-page |
Full page screenshot |
auntie pdf <file> |
Save page as PDF |
| Command |
Description |
auntie script "<code>" |
Execute JavaScript |
auntie script -f script.js |
Execute from file |
| Command |
Description |
auntie tabs |
List open tabs |
auntie tab new |
Open new tab |
auntie tab new <url> |
Open new tab with URL |
auntie tab close <id> |
Close tab by ID |
| Command |
Description |
auntie find <selector> |
Find element by CSS selector |
auntie wait <selector> |
Wait for element to appear |
auntie click <selector> |
Click element |
auntie type <text> |
Type text |
auntie type <text> --selector <sel> |
Type into specific element |
auntie key <key> |
Press keyboard key (Enter, Tab, etc.) |
| Command |
Description |
auntie cookies |
List all cookies |
auntie cookie set <name> <value> |
Set a cookie |
Store and apply login credentials:
# Add a credential
auntie cred add github --url "github.com/*" --username user --password pass
# List credentials
auntie cred list
# Apply credential to current page (fills forms, injects cookies)
auntie cred apply github
# Delete
auntie cred delete github
Save and restore browser sessions:
# Save current cookies as a session
auntie session save my-session
# List sessions
auntie session list
# Load a session (restores cookies)
auntie session load my-session
# Delete
auntie session delete my-session
| Option |
Default |
Description |
--port |
9222 |
Chrome DevTools port |
--chrome |
auto |
Path to Chrome executable |
--user-data-dir |
- |
Chrome profile directory |
--json |
false |
Force JSON output |
--timeout |
30 |
Page load timeout (seconds) |
--verbose |
false |
Enable verbose logging |
--quiet |
false |
Suppress non-essential output |
By default, auntie uses human-readable output for TTY and JSON for pipes:
# Human readable
auntie tabs
# JSON output (automatic when piping)
auntie tabs | jq '.tabs[0].url'
# Force JSON
auntie tabs --json
auntie start
auntie open https://example.com/login
auntie type "username" --selector "input[name=username]"
auntie type "password" --selector "input[type=password]"
auntie click "button[type=submit]"
auntie wait ".dashboard"
auntie session save example-login
auntie start
auntie open https://news.ycombinator.com
auntie page --markdown > hn.md
auntie start
auntie open https://example.com/form
auntie type "John Doe" --selector "#name"
auntie type "john@example.com" --selector "#email"
auntie click "#submit"
auntie screenshot confirmation.png
# Get first tab URL
auntie tabs --json | jq -r '.tabs[0].url'
# Get all cookie names
auntie cookies --json | jq -r '.cookies[].name'
auntie stores data in ~/.auntie/:
auntie.db - SQLite database for credentials, sessions, and state
- Chrome, Chromium, or Chrome Canary
- Linux, macOS, or Windows
MIT