by wxtsky
Bring Your Own Browser — let your AI agent use the Chrome you already have open
# Add to your Claude Code skills
git clone https://github.com/wxtsky/byobLast scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T16:23:58.669Z",
"npmAuditRan": false,
"pipAuditRan": true
}See how byob compares with popular alternatives.
byob is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by wxtsky. Bring Your Own Browser — let your AI agent use the Chrome you already have open. It has 132 GitHub stars.
Yes. byob passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/wxtsky/byob" and add it to your Claude Code skills directory (see the Installation section above).
byob is primarily written in JavaScript. It is open-source under wxtsky on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh byob against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Bring Your Own Browser — let your AI assistant use the Chrome you already have open.
English · 中文
byob is a local MCP server that lets AI coding tools (Claude Code, Cursor, Cline, Windsurf, etc.) directly control your real Chrome — the one where you're already logged into everything.
"read my Twitter timeline and summarize the top 5 posts"
"google 'mcp protocol spec', click the first result, read the page"
"take a screenshot of example.com"
"grab my GitHub session cookie so I can curl with it"
"open my Gmail tab and tell me how many unread"
| WebFetch | Headless Puppeteer | byob | |
|---|---|---|---|
| Sees logged-in pages | ❌ | ⚠️ manual cookie copy | ✅ already logged in |
| Passes bot detection | ❌ | ❌ | ✅ real human browser |
| Setup time | 0 | hours | ~5 min |
| Cloud cost | free | $$ | free |
curl -fsSL https://raw.githubusercontent.com/wxtsky/byob/main/install.sh | bash
On Windows, run the same command from Git Bash or MSYS2. The script checks prerequisites (Node.js ≥ 20, bun, Chrome/Edge/Brave), clones the repo, builds everything, and walks you through MCP registration interactively. If bun is not installed, it offers to install it for you using the native installer for your OS.
Set
BYOB_INSTALL_DIRto change the install location (default:~/byob). Advanced:BYOB_REPO,BYOB_REF, andBYOB_SKIP_SETUP=1are supported for forks, pinned refs, and CI-style dependency install only.
Requires Node.js ≥ 20, bun, Chrome, and any MCP-compatible AI tool.
git clone https://github.com/wxtsky/byob
cd byob
bun install
bun run setup
bun run setup walks through the install interactively:
After the script finishes, three manual steps remain:
Open chrome://extensions in Chrome.
/your/path/to/byob/packages/extension/output/chrome-mv3
Quit Chrome completely (⌘Q on Mac / close all windows on Windows), then reopen.
Closing a single tab or window is not sufficient — Chrome only reads the Native Messaging config at startup.
The setup script registers your selected tools automatically. The block below is for reference only — use it if you skipped the prompt or want to register a different tool later:
claude plugin marketplace add wxtsky/byob
claude plugin install byob@byob --scope user
Run /reload-plugins in Claude Code after installing. The plugin includes the
/byob:control-chrome Skill and starts its bundled MCP server automatically;
do not also register a second byob MCP server.
For local development without installing:
claude --plugin-dir /path/to/byob/plugins/byob
claude mcp add byob -s user -- /path/to/tsx /path/to/byob-mcp.ts
To enable browser_eval, add -e BYOB_ALLOW_EVAL=1 after -s user.
codex mcp add byob -- /path/to/tsx /path/to/byob-mcp.ts
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"byob": {
"command": "/path/to/tsx",
"args": ["/path/to/byob-mcp.ts"]
}
}
}
Add to ~/.codeium/windsurf/mcp_config.json (same JSON format as Cursor):
{
"mcpServers": {
"byob": {
"command": "/path/to/tsx",
"args": ["/path/to/byob-mcp.ts"]
}
}
}
Open Cline sidebar → MCP Servers → Configure, then add (same JSON format):
{
"mcpServers": {
"byob": {
"command": "/path/to/tsx",
"args": ["/path/to/byob-mcp.ts"]
}
}
}
The actual paths are printed by the setup script. The examples above use shortened paths for readability.
To enablebrowser_eval, add"env": { "BYOB_ALLOW_EVAL": "1" }to the config (or-e BYOB_ALLOW_EVAL=1for CLI tools).
After you finish steps 2 and 3 (load the extension and ⌘Q-restart Chrome), setup auto-detects the bridge coming online and prints ✓ bridge online. The installation is complete — open a new session in your AI tool and try "use byob to read ...".
If you exited setup early with Ctrl+C, or want to check the state later:
bun run doctor
bun run doctor prints actionable fixes under every ✗ (e.g. "⌘Q-restart Chrome", "extension ID mismatch", etc.).
| Tool | What it does |
|---|---|
browser_read |
Open a page, scroll through, read all text |
browser_read_markdown |
Same, returns clean markdown (no nav/ads) |
browser_extract_table |
Pull <table> elements as JSON |
browser_get_console_logs |
Snapshot console.log / warn / error |
browser_start_record_network |
Start recording HTTP + WebSocket traffic |
browser_stop_record_network |
Stop recording, export JSON or HAR |
browser_screenshot |
Screenshot → saved to disk |
browser_download_images |
Download all images from a page |
browser_click |
Click a button or link |
browser_type |
Type into an input (optionally press Enter) |
browser_press_key |
Send a keyboard key (Enter, Escape, F5, ArrowDown, ...) |
browser_hover |
Hover the mouse over an element to trigger tooltips/menus |
browser_select |
Choose an option in a native <select> |
browser_scroll |
Scroll to top/bottom, an element, or a Y coordinate |
browser_get_html |
Get raw HTML of an element or the whole page |
browser_get_cookies |
Export cookies for curl / scripts |
browser_navigate |
Open a URL in a new or existing tab |
browser_go_back |
Go back one step in browser history |
browser_go_forward |
Go forward one step in browser history |
browser_wait_for |
Wait for an element to appear |
browser_list_tabs |
List all open tabs |
browser_switch_tab |
Switch to a tab |
browser_close_tab |
Close a tab by tabId |
browser_eval |
Run JavaScript on the page (off by default) |
browser_set_cookies |
Write a cookie via chrome.cookies.set (CHIPS-aware). |
browser_print_pdf |
Save current page as PDF (default ~/.byob/pdfs/). |
browser_get_storage |
Read localStorage / sessionStorage for an origin. |
browser_get_performance |
Page Web Vitals + navigation timing. |
browser_upload_file |
Upload local files to <input type="file">. |
browser_intercept_start |
Start a stateful request-interception session. |
browser_intercept_stop |
Stop a browser_intercept_start session and return hit stats. |
browser_drag |
Drag the mouse from one point to another (linear interpolation). |
browser_emulate_device |
Emulate mobile/tablet viewport / DPR / touch / UA. |
browser_snapshot |
Get a compact accessibility tree with reusable element references. |
browser_new_tab |
Create an empty or pre-navigated background tab. |
browser_reload |
Reload a tab and wait for it to finish loading. |
browser_get_js_dialog |
Inspect an alert / confirm / prompt without resolving it. |
browser_handle_js_dialog |
Explicitly accept or dismiss a JavaScript dialog. |
browser_history |
Search Chrome history with optional terms and date bounds. |
browser_clipboard_read_text |
Read plain text from the system clipboard. |
browser_clipboard_write_text |
Replace the system clipboard with plain text. |
17 of these tools support framePath to reach into nested iframes (including cross-origin).
Full schemas: shared/src/schemas.ts
AI tool → byob-mcp → byob-bridge → Chrome extension → your tab
(stdio) (Unix socket) (Native Messaging) (Chrome DevTools Protocol)
All communication stays local. No data leaves your machine. When Chrome closes, all byob processes exit automatically.
bun run setup # install or re-install
bun run doctor # check what's working
bun run bridges # list running bridge processes
bun run logs # tail the bridge log
bun run unsetup # remove everything
All run from the byob repo root.
Ctrl+C propagates through the entire chain (MCP → bridge → extension → Chrome), cleanly detaching all debug sessions.browser_eval automatically falls back to chrome.scripting.executeScript.