{"slug":"agent-browser-9","title":"Agent Browser","summary":"A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-18T13:23:49.181371Z","repo":{"url":"https://github.com/aAAaqwq/AGI-Super-Team","stars":100,"forks":23,"license":"MIT","updatedAt":"2026-09-27T10:44:59Z"},"bodyHtml":"<hr>\n<p>name: Agent Browser\ndescription: A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.\nread_when:</p>\n<ul>\n<li>Automating web interactions</li>\n<li>Extracting structured data from pages</li>\n<li>Filling forms programmatically</li>\n<li>Testing web UIs\nmetadata: {\"clawdbot\":{\"emoji\":\"\uD83C\uDF10\",\"requires\":{\"bins\":[\"node\",\"npm\"]}}}\nallowed-tools: Bash(agent-browser:*)</li>\n</ul>\n<hr>\n<h1>Browser Automation with agent-browser</h1>\n<h2>Installation</h2>\n<h3>npm recommended</h3>\n<pre><code>npm install -g agent-browser\nagent-browser install\nagent-browser install --with-deps\n</code></pre>\n<h3>From Source</h3>\n<pre><code>git clone https://github.com/vercel-labs/agent-browser\ncd agent-browser\npnpm install\npnpm build\nagent-browser install\n</code></pre>\n<h2>Quick start</h2>\n<pre><code>agent-browser open &lt;url&gt;        # Navigate to page\nagent-browser snapshot -i       # Get interactive elements with refs\nagent-browser click @e1         # Click element by ref\nagent-browser fill @e2 \"text\"   # Fill input by ref\nagent-browser close             # Close browser\n</code></pre>\n<h2>Core workflow</h2>\n<ol>\n<li>Navigate: <code>agent-browser open &lt;url&gt;</code></li>\n<li>Snapshot: <code>agent-browser snapshot -i</code> (returns elements with refs like <code>@e1</code>, <code>@e2</code>)</li>\n<li>Interact using refs from the snapshot</li>\n<li>Re-snapshot after navigation or significant DOM changes</li>\n</ol>\n<h2>Commands</h2>\n<h3>Navigation</h3>\n<pre><code>agent-browser open &lt;url&gt;      # Navigate to URL\nagent-browser back            # Go back\nagent-browser forward         # Go forward\nagent-browser reload          # Reload page\nagent-browser close           # Close browser\n</code></pre>\n<h3>Snapshot (page analysis)</h3>\n<pre><code>agent-browser snapshot            # Full accessibility tree\nagent-browser snapshot -i         # Interactive elements only (recommended)\nagent-browser snapshot -c         # Compact output\nagent-browser snapshot -d 3       # Limit depth to 3\nagent-browser snapshot -s \"#main\" # Scope to CSS selector\n</code></pre>\n<h3>Interactions (use @refs from snapshot)</h3>\n<pre><code>agent-browser click @e1           # Click\nagent-browser dblclick @e1        # Double-click\nagent-browser focus @e1           # Focus element\nagent-browser fill @e2 \"text\"     # Clear and type\nagent-browser type @e2 \"text\"     # Type without clearing\nagent-browser press Enter         # Press key\nagent-browser press Control+a     # Key combination\nagent-browser keydown Shift       # Hold key down\nagent-browser keyup Shift         # Release key\nagent-browser hover @e1           # Hover\nagent-browser check @e1           # Check checkbox\nagent-browser uncheck @e1         # Uncheck checkbox\nagent-browser select @e1 \"value\"  # Select dropdown\nagent-browser scroll down 500     # Scroll page\nagent-browser scrollintoview @e1  # Scroll element into view\nagent-browser drag @e1 @e2        # Drag and drop\nagent-browser upload @e1 file.pdf # Upload files\n</code></pre>\n<h3>Get information</h3>\n<pre><code>agent-browser get text @e1        # Get element text\nagent-browser get html @e1        # Get innerHTML\nagent-browser get value @e1       # Get input value\nagent-browser get attr @e1 href   # Get attribute\nagent-browser get title           # Get page title\nagent-browser get url             # Get current URL\nagent-browser get count \".item\"   # Count matching elements\nagent-browser get box @e1         # Get bounding box\n</code></pre>\n<h3>Check state</h3>\n<pre><code>agent-browser is visible @e1      # Check if visible\nagent-browser is enabled @e1      # Check if enabled\nagent-browser is checked @e1      # Check if checked\n</code></pre>\n<h3>Screenshots &amp; PDF</h3>\n<pre><code>agent-browser screenshot          # Screenshot to stdout\nagent-browser screenshot path.png # Save to file\nagent-browser screenshot --full   # Full page\nagent-browser pdf output.pdf      # Save as PDF\n</code></pre>\n<h3>Video recording</h3>\n<pre><code>agent-browser record start ./demo.webm    # Start recording (uses current URL + state)\nagent-browser click @e1                   # Perform actions\nagent-browser record stop                 # Stop and save video\nagent-browser record restart ./take2.webm # Stop current + start new recording\n</code></pre>\n<p>Recording creates a fresh context but preserves cookies/storage from your session. If no URL is provided, it automatically returns to your current page. For smooth demos, explore first, then start recording.</p>\n<h3>Wait</h3>\n<pre><code>agent-browser wait @e1                     # Wait for element\nagent-browser wait 2000                    # Wait milliseconds\nagent-browser wait --text \"Success\"        # Wait for text\nagent-browser wait --url \"/dashboard\"    # Wait for URL pattern\nagent-browser wait --load networkidle      # Wait for network idle\nagent-browser wait --fn \"window.ready\"     # Wait for JS condition\n</code></pre>\n<h3>Mouse control</h3>\n<pre><code>agent-browser mouse move 100 200      # Move mouse\nagent-browser mouse down left         # Press button\nagent-browser mouse up left           # Release button\nagent-browser mouse wheel 100         # Scroll wheel\n</code></pre>\n<h3>Semantic locators (alternative to refs)</h3>\n<pre><code>agent-browser find role button click --name \"Submit\"\nagent-browser find text \"Sign In\" click\nagent-browser find label \"Email\" fill \"user@test.com\"\nagent-browser find first \".item\" click\nagent-browser find nth 2 \"a\" text\n</code></pre>\n<h3>Browser settings</h3>\n<pre><code>agent-browser set viewport 1920 1080      # Set viewport size\nagent-browser set device \"iPhone 14\"      # Emulate device\nagent-browser set geo 37.7749 -122.4194   # Set geolocation\nagent-browser set offline on              # Toggle offline mode\nagent-browser set headers '{\"X-Key\":\"v\"}' # Extra HTTP headers\nagent-browser set credentials user pass   # HTTP basic auth\nagent-browser set media dark              # Emulate color scheme\n</code></pre>\n<h3>Cookies &amp; Storage</h3>\n<pre><code>agent-browser cookies                     # Get all cookies\nagent-browser cookies set name value      # Set cookie\nagent-browser cookies clear               # Clear cookies\nagent-browser storage local               # Get all localStorage\nagent-browser storage local key           # Get specific key\nagent-browser storage local set k v       # Set value\nagent-browser storage local clear         # Clear all\n</code></pre>\n<h3>Network</h3>\n<pre><code>agent-browser network route &lt;url&gt;              # Intercept requests\nagent-browser network route &lt;url&gt; --abort      # Block requests\nagent-browser network route &lt;url&gt; --body '{}'  # Mock response\nagent-browser network unroute [url]            # Remove routes\nagent-browser network requests                 # View tracked requests\nagent-browser network requests --filter api    # Filter requests\n</code></pre>\n<h3>Tabs &amp; Windows</h3>\n<pre><code>agent-browser tab                 # List tabs\nagent-browser tab new [url]       # New tab\nagent-browser tab 2               # Switch to tab\nagent-browser tab close           # Close tab\nagent-browser window new          # New window\n</code></pre>\n<h3>Frames</h3>\n<pre><code>agent-browser frame \"#iframe\"     # Switch to iframe\nagent-browser frame main          # Back to main frame\n</code></pre>\n<h3>Dialogs</h3>\n<pre><code>agent-browser dialog accept [text]  # Accept dialog\nagent-browser dialog dismiss        # Dismiss dialog\n</code></pre>\n<h3>JavaScript</h3>\n<pre><code>agent-browser eval \"document.title\"   # Run JavaScript\n</code></pre>\n<h3>State management</h3>\n<pre><code>agent-browser state save auth.json    # Save session state\nagent-browser state load auth.json    # Load saved state\n</code></pre>\n<h2>Example: Form submission</h2>\n<pre><code>agent-browser open https://example.com/form\nagent-browser snapshot -i\n# Output shows: textbox \"Email\" [ref=e1], textbox \"Password\" [ref=e2], button \"Submit\" [ref=e3]\n\nagent-browser fill @e1 \"user@example.com\"\nagent-browser fill @e2 \"password123\"\nagent-browser click @e3\nagent-browser wait --load networkidle\nagent-browser snapshot -i  # Check result\n</code></pre>\n<h2>Example: Authentication with saved state</h2>\n<pre><code># Login once\nagent-browser open https://app.example.com/login\nagent-browser snapshot -i\nagent-browser fill @e1 \"username\"\nagent-browser fill @e2 \"password\"\nagent-browser click @e3\nagent-browser wait --url \"/dashboard\"\nagent-browser state save auth.json\n\n# Later sessions: load saved state\nagent-browser state load auth.json\nagent-browser open https://app.example.com/dashboard\n</code></pre>\n<h2>Sessions (parallel browsers)</h2>\n<pre><code>agent-browser --session test1 open site-a.com\nagent-browser --session test2 open site-b.com\nagent-browser session list\n</code></pre>\n<h2>JSON output (for parsing)</h2>\n<p>Add <code>--json</code> for machine-readable output:</p>\n<pre><code>agent-browser snapshot -i --json\nagent-browser get text @e1 --json\n</code></pre>\n<h2>Debugging</h2>\n<pre><code>agent-browser open example.com --headed              # Show browser window\nagent-browser console                                # View console messages\nagent-browser console --clear                        # Clear console\nagent-browser errors                                 # View page errors\nagent-browser errors --clear                         # Clear errors\nagent-browser highlight @e1                          # Highlight element\nagent-browser trace start                            # Start recording trace\nagent-browser trace stop trace.zip                   # Stop and save trace\nagent-browser record start ./debug.webm              # Record from current page\nagent-browser record stop                            # Save recording\nagent-browser --cdp 9222 snapshot                    # Connect via CDP\n</code></pre>\n<h2>Troubleshooting</h2>\n<ul>\n<li>If the command is not found on Linux ARM64, use the full path in the bin folder.</li>\n<li>If an element is not found, use snapshot to find the correct ref.</li>\n<li>If the page is not loaded, add a wait command after navigation.</li>\n<li>Use --headed to see the browser window for debugging.</li>\n</ul>\n<h2>Options</h2>\n<ul>\n<li>--session </li>\n<li>--json provides JSON output.</li>\n<li>--full takes a full page screenshot.</li>\n<li>--headed shows the browser window.</li>\n<li>--timeout sets the command timeout in milliseconds.</li>\n<li>--cdp </li>\n</ul>\n<h2>Notes</h2>\n<ul>\n<li>Refs are stable per page load but change on navigation.</li>\n<li>Always snapshot after navigation to get new refs.</li>\n<li>Use fill instead of type for input fields to ensure existing text is cleared.</li>\n</ul>\n<h2>Reporting Issues</h2>\n<ul>\n<li>Skill issues: Open an issue at <a href=\"https://github.com/TheSethRose/Agent-Browser-CLI\">https://github.com/TheSethRose/Agent-Browser-CLI</a></li>\n<li>agent-browser CLI issues: Open an issue at <a href=\"https://github.com/vercel-labs/agent-browser\">https://github.com/vercel-labs/agent-browser</a></li>\n</ul>\n","files":[{"path":"CONTRIBUTING.md","sizeBytes":1626,"isText":true},{"path":"_meta.json","sizeBytes":132,"isText":true},{"path":"SKILL.md","sizeBytes":10224,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-18T13:24:14.293877Z","sha256":"D0EF4B7B60DE463CED217517DDD8B6026DBBCCB5D4C21410D1FF5D0FF7A703D3","sizeBytes":4541},"review":null,"source":{"repositoryUrl":"https://github.com/aAAaqwq/AGI-Super-Team","path":"skills/agent-browser","license":"MIT","commit":"331ecd3c1dd6597c351e5dc5d7a7d9f6e6bcab13","subtreeSha":"D5716FD74E5B53E07B090AEF126A71FBA93D3DC9AC85910CD093EEA96F706F88","lastSyncedAt":"2026-09-27T19:30:31.933956Z"},"reviewedAt":"2026-09-18T13:25:22.223499Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/aAAaqwq/AGI-Super-Team/tree/main/skills/agent-browser"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install aaaaqwq-agi-super-team@llmmart"},{"target":"git","command":"git clone https://github.com/aAAaqwq/AGI-Super-Team.git"}]}