Loading...
Loading...
Control and interact with Chrome browser via agent-browser-cli for tab management, page automation, CDP operations, and content extraction.
npx skill4agent add aradotso/devtools-skills agent-browser-cli-controlSkill by ara.so — Devtools Skills collection.
npm install -g @sleepinsummer/agent-browser-cligit clone https://github.com/sleepinginsummer/agent-browser-cli.git
cd agent-browser-cli
cargo build --release
# Binary will be at ./target/release/agent-browser-clichrome-extensions.zipchrome://extensionstmwd_cdp_bridgeabout:blankchrome://1876518767# Start daemon (auto-starts if not running)
agent-browser-cli start
# Stop daemon
agent-browser-cli stop
# Restart daemon
agent-browser-cli restart
# Check daemon status
agent-browser-cli status# List all tabs
agent-browser-cli tabs
# Switch to tab by index
agent-browser-cli switch 0
# Open new URL
agent-browser-cli open https://example.com
# Close current tab
agent-browser-cli close
# Get active tab info
agent-browser-cli active# Scan current page (simplified HTML)
agent-browser-cli scan
# Get text-only content (faster)
agent-browser-cli scan --text-only
# Get full page DOM
agent-browser-cli scan --full
# Scan specific tab
agent-browser-cli scan --tab 0
# Get page with screenshots of visible elements
agent-browser-cli scan --screenshot# Execute JavaScript and return result
agent-browser-cli exec 'return document.title'
# Execute with page monitoring (detects changes)
agent-browser-cli exec --monitor 'document.querySelector("#search").value = "test"'
# Multi-line JS execution
agent-browser-cli exec 'const btn = document.querySelector("button");
btn.click();
return "clicked";'
# Execute in specific tab
agent-browser-cli exec --tab 0 'return window.location.href'# Capture full page screenshot
agent-browser-cli screenshot
# Screenshot specific tab
agent-browser-cli screenshot --tab 0
# Output to specific file
agent-browser-cli screenshot --output /path/to/screenshot.png# Get all cookies for current page
agent-browser-cli cookies
# Get cookies for specific domain
agent-browser-cli cookies --domain example.com
# Set cookie
agent-browser-cli cookies --set 'name=value; domain=.example.com; path=/'# Change extension WebSocket port (default: 18765)
agent-browser-cli set-extension-port 18766
# View current config
cat ~/.agent-browser-cli/config.json# Open search engine
agent-browser-cli open "https://www.google.com"
# Wait a moment for page load, then input search query
sleep 1
agent-browser-cli exec 'document.querySelector("textarea[name=q]").value = "rust programming"'
# Submit search
agent-browser-cli exec --monitor 'document.querySelector("textarea[name=q]").form.submit()'
# Extract search results
agent-browser-cli scan --text-only# Navigate to form page
agent-browser-cli open "https://example.com/contact"
# Fill form fields
agent-browser-cli exec '
const form = {
name: document.querySelector("#name"),
email: document.querySelector("#email"),
message: document.querySelector("#message")
};
form.name.value = "AI Agent";
form.email.value = "agent@example.com";
form.message.value = "Hello from agent-browser-cli";
return "Form filled";
'
# Submit and monitor changes
agent-browser-cli exec --monitor 'document.querySelector("form").submit()'# Get list of all tabs
TABS=$(agent-browser-cli tabs)
echo "$TABS"
# Switch to first tab
agent-browser-cli switch 0
# Get current page title
agent-browser-cli exec 'return document.title'
# Open new tab
agent-browser-cli open "https://example.com"
# Work with new tab
agent-browser-cli scan --text-only# Navigate to authenticated page
agent-browser-cli open "https://example.com/dashboard"
# Extract cookies (user is already logged in)
COOKIES=$(agent-browser-cli cookies --domain example.com)
echo "$COOKIES"
# Extract protected content
agent-browser-cli scan --text-only
# Take screenshot of dashboard
agent-browser-cli screenshot --output dashboard.png# Execute action and monitor DOM changes
RESULT=$(agent-browser-cli exec --monitor '
document.querySelector("#load-more").click();
return "Clicked load more";
')
# The result includes a change summary
echo "$RESULT"
# Re-scan to get updated content
agent-browser-cli scan --text-only{
"ok": true,
"result": {
"status": "success",
"data": "...",
"metadata": {}
}
}{
"ok": false,
"error": "Error message"
}agent-browser-cli exec '
return new Promise((resolve) => {
const check = () => {
const el = document.querySelector("#target");
if (el) resolve("Found");
else setTimeout(check, 100);
};
check();
});
'agent-browser-cli exec '
return Array.from(document.querySelectorAll(".item")).map(item => ({
title: item.querySelector(".title")?.textContent,
link: item.querySelector("a")?.href,
price: item.querySelector(".price")?.textContent
}));
'agent-browser-cli exec '
const input = document.querySelector("input[type=file]");
const dt = new DataTransfer();
dt.items.add(new File(["content"], "test.txt"));
input.files = dt.files;
input.dispatchEvent(new Event("change", { bubbles: true }));
return "File set";
'agent-browser-cli exec '
const select = document.querySelector("select#country");
select.value = "US";
select.dispatchEvent(new Event("change", { bubbles: true }));
return select.value;
'chrome://extensionscat ~/.agent-browser-cli/config.jsonchrome://about:agent-browser-cli restartagent-browser-cli statusagent-browser-cli tabstail -f ~/.agent-browser-cli.log# Change extension port
agent-browser-cli set-extension-port 18766
# Update extension popup to match new port
# Restart daemon
agent-browser-cli restartnetworkingMode=mirrored.wslconfiglocalhost:18765--text-only--screenshot--monitoragent-browser-cli exec '
return await chrome.debugger.sendCommand({tabId: chrome.tabs.getCurrent().id}, "Network.getCookies", {});
'~/.agent-browser-cli/config.json{
"extension_port": 18765
}~/.agent-browser-cli.logtail -f ~/.agent-browser-cli.logagent-browser-cli tabsagent-browser-cli open <url>agent-browser-cli switch <index>agent-browser-cli scan --text-onlyagent-browser-cli exec --monitor '<js code>'agent-browser-cli scanagent-browser-cli screenshot