FSB — Full Self Browsing
A DOM-first Chrome extension that automates browsing from plain English and exposes the same runtime to Claude Code, Codex, and other MCP clients.
- Source repo
- fullselfbrowsing/FSB
- Stars
- ★ 205
- Last updated
- 17d ago
- License
- MIT
- Primary language
- JavaScript
- FA score
- 54/100 · Major gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformCodex · Claude Code · OpenAI API · Claude APIClaude.ai (Partial support)
- Cost
- Free software; you pay for model usage
- Setup effort
- Low · running in minutes
- You'll need
- Typical use
- A QA or frontend engineer repeating the same page flow for regression coverage can have FSB re-run clicks, form fills, and state transitions while collecting an action log for each step.
- Not a fit if
- Teams needing unattended, long-running background automation
- Users who cannot send page text and form labels to a model provider
- Teams expecting all 128 catalog apps to execute directly
- Source review
- 54/100 · Major gaps
What does this agent do, and when should you use it?
FSB (Full Self Browsing) is an MIT-licensed Manifest V3 Chrome extension, currently at version 0.9.91, that turns a natural-language task into browser actions by reading the live DOM instead of screenshots. The extension captures selectors, forms, ARIA labels, and DOM deltas, plans the next tool call through a universal OpenAI-compatible provider layer, executes actions in content scripts, and verifies what changed before continuing. A companion npm package, fsb-mcp-server, is a local bridge that registers 69 tools and lets Claude Code, Codex, Cursor, VS Code, Windsurf, and similar clients drive the same extension over ws://localhost:7225. FSB also runs standalone from its popup or side panel against xAI, Gemini, OpenAI, Anthropic, OpenRouter, LM Studio, or a custom endpoint. Beyond DOM automation it ships a 128-app capability catalog with signed and audited first-party API invokes, real file uploads via CDP, single-element trigger watchers, long-term memory, and session replay. Everything runs in your own browser and local process with no hosted account, with the tradeoff that Chrome and the extension must stay open.
The MV3 background worker (extension/background.js) owns session state, model calls, tool execution, MCP routing, and storage; content scripts (extension/content/) build element references and selectors, execute actions, stream DOM state through the PhantomStream capture adapter, and wait for stable results. The AI layer (extension/ai/) handles provider settings, live model discovery, tool definitions, transcripts, and action history over one shared OpenAI-compatible request path. The action surface covers navigation, clicking, type_text, press_key, scrolling, tab management, spreadsheet ranges, coordinate tools, execute_js, and upload_file, which sets a real absolute path on an <input type="file"> through CDP DOM.setFileInputFiles, including inputs hidden behind styled dropzones. The MCP server publishes curated groups — visual sessions, autopilot, trigger watchers, manual control, read-only inspection, developer capture, capability search/invoke, observability and replay, and vault — serializing mutation tools so two clients cannot click or type at once while read-only tools bypass the queue where safe. search_capabilities and invoke_capability query a 128-app catalog where only signature-verified, audited, denylist-gated T1/T1b capabilities execute directly. Memory stores episodic, semantic, and procedural records extracted from finished sessions and retrieves them by domain, task type, recency, and keywords on later tasks.
- A QA or frontend engineer repeating the same page flow for regression coverage can have FSB re-run clicks, form fills, and state transitions while collecting an action log for each step.
- A researcher collecting visible text across many pages can use read_page and get_dom_snapshot to pull structured content directly instead of parsing screenshots.
- An operations or data-entry specialist working through structured back-office forms can drive dropdowns, custom controls, and table inputs, then verify each submission.
- A developer who wants Claude Code or Codex to exercise a local build in a real browser can install fsb-mcp-server and drive Chrome with manual tools or run_task.
- Someone monitoring a page for restocked inventory, a threshold crossing, or a content change can arm a single-element watch with trigger, get_trigger_status, list_triggers, and stop_trigger.
- A support or commerce user comparing product pages, reading dashboard tables, or preparing a cart under supervision can hand the task to the extension's autopilot loop without writing a script.
How do you install or deploy this agent?
Requirements: Chromium 116+ in a stable desktop browser (Chrome, Edge, Brave, or Chromium).
- Clone and install dependencies:
git clone https://github.com/fullselfbrowsing/FSB.git
cd FSB
npm install
npm --prefix mcp installThe extension needs no build step; load the extension/ directory directly.
- Load the extension: open chrome://extensions/, enable Developer mode, click “Load unpacked,” select the extension/ directory, then open the FSB toolbar icon, pick a provider in settings, and confirm connectivity with Test API. Settings accept xAI, Gemini, OpenAI, Anthropic, OpenRouter, LM Studio at http://localhost:1234, or a custom OpenAI-compatible endpoint.
- Optional MCP bridge, one command per client:
npx -y fsb-mcp-server@latest install --claude-code
npx -y fsb-mcp-server@latest install --claude-desktop
npx -y fsb-mcp-server@latest install --cursor
npx -y fsb-mcp-server@latest install --vscode
npx -y fsb-mcp-server@latest install --windsurf
npx -y fsb-mcp-server@latest install --codex
npx -y fsb-mcp-server@latest install --allAppend --dry-run to preview without writing, then restart the client so the server is picked up. No FSB API key is needed on this path because the MCP client's own model does the reasoning.
How do you use this agent?
Standalone: click the FSB toolbar icon, open the popup or side panel, paste a provider API key in settings, and type a task such as “Scroll down,” “Search for cats on Google,” or “Read this page and summarize it.” Start with read-only tasks, then simple click or type tasks, and leave the visual overlay on while evaluating. Stay on a normal webpage, not a chrome:// or extension page.
Through MCP: verify the bridge first with npx -y fsb-mcp-server@latest doctor and npx -y fsb-mcp-server@latest status --watch, then issue instructions from the client. Manual tools are the default path: read_page or get_dom_snapshot to understand the page, execute_js for safe DOM reads and DOM-triggered clicks, native click, type_text, press_key, and drag when real browser events matter, then verify with a fresh snapshot and set is_final:true on the last action to clear the overlay immediately. Use run_task when you explicitly want FSB's own loop. The extension connects to the bridge on ws://localhost:7225, and an optional Streamable HTTP mode exposes http://127.0.0.1:7226/mcp. Trigger watchers are local to the open session: Chrome and the extension must stay running, results come back to the MCP caller, and there is no server-side monitoring or push delivery.
What are this agent's strengths and limitations?
- The DOM-first design produces a concrete latency and cost gap: the README claims 50–200 ms per step versus 1–3 seconds for vision-based agents, and hidden elements stay visible in the structure.
- MCP onboarding is a single npx install per client for Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, and Codex, with no FSB API key required when the client's model does the reasoning.
- Provider coverage is broad — xAI, Gemini, OpenAI, Anthropic, OpenRouter, LM Studio local models, and custom OpenAI-compatible endpoints — plus live model discovery and 30 bundled fallback models.
- The reliability plumbing is real: post-action verification, stuck-action detection, smart waiting, a serialized mutation queue, audit records, and Node tests covering extension modules, MCP contracts, and bridge behavior.
- Native file upload goes beyond synthetic drag-drop: upload_file uses CDP DOM.setFileInputFiles for real file inputs, including ones hidden behind styled dropzones, behind a sensitive-path denylist that logs audit metadata without persisting disk paths.
- It is tightly bound to a live browser: trigger watchers, PhantomStream preview, and coordinate tools all require Chrome and the extension to stay open, with no server-side monitoring, which rules out fully unattended long-running automation.
- Capability coverage is narrower than the 128-app catalog suggests — only signed and audited T1/T1b entries execute directly, while other hits return learn-pending, discovery-pending, or guarded fail-closed responses.
- Autopilot is explicitly framed as production ready only for supervised automation; the README warns that complex or sensitive sites remain unpredictable and that failures should be debuggable via inspection rather than guaranteed.
- There is migration debt: background agents are retired, and while old chrome.storage.local['bgAgents'] data is preserved, scheduled or recurring automation is no longer an active feature.
- Model cost is entirely on the user's provider account, and task context including visible page text and form labels is sent to that provider, so sensitive pages need a deliberate decision before use.
How does this agent compare with similar options?
The README directly contrasts FSB with Project Mariner, Claude Computer Use, and OpenAI Operator, which rely on visual page understanding, and reports latency, hidden-element visibility, and token-cost differences in FSB's favor. It also credits OpenTabs as the inspiration for the Native Capability Catalog's first-party API execution model.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| FSB — Full Self Browsing This agent | 54 · Major gaps | Browser extensionFree + model costs | ★ 205 | 17d ago | JavaScript | Codex · Claude Code · OpenAI API · Claude API |
| Browsentic | 75 · Some gaps | — | ★ 282 | 2d ago | TypeScript | Codex · Claude Code |
| WebBrain | 68 · Some gaps | Browser extensionFree + model costs | ★ 1.7k | today | JavaScript | Claude Code |
| Open Browser Use | 65 · Some gaps | CLIFree | ★ 418 | 5d ago | JavaScript | Codex · Claude Code |
How does FollowAgents rate this agent?
Why each dimension lost points
The product reaches the user's real Chrome sessions, tabs, vault credentials, and local file uploads, and exposes a broad tool surface, so least privilege is only partially demonstrated. The skill requires confirmation before purchases, deletions, account changes, and public posts; the README describes upload-path safeguards, encrypted keys, extra confirmation for sensitive origins, and secret-free audit logs. The supplied code does not show these controls in enough depth for full credit. The README describes dependencies and a local bridge but supplies no dependency-security audit evidence. Pairing and uninstall-related implementation are visible, but they do not establish comprehensive recovery. Acknowledgements and MIT copyright give partial attribution; publisher identity remains unverified.
The README describes DOM snapshots, post-action verification, stuck detection, and recovery; MCP source shows diagnostic states and layered failure output, supporting ordinary failure handling. There are version-documentation tensions: the README and skill identify 0.9.92, while the skill's tool contract also refers to older versions; a supplied test fixture says required modules do not yet exist, creating some tension with the current product description. Dependency installation and CI workflows are documented, but the product relies on external npm, browser, and model services, and the source packet does not establish their availability or execution results.
The intended Chrome/MCP audience and QA, research, form, and developer scenarios are described, with Chromium version, platform, and client setup notes. The skill distinguishes read-only inspection from interactive browser work and requires confirmation for sensitive submissions; the README names boundaries such as DOM, canvas, and shadow DOM behavior. Triggers are scoped to a selector and configured conditions, though their operation depends on Chrome and the extension staying open.
Repository layout, installation steps, troubleshooting, examples, known limitations, and the MIT license are documented clearly. A main changelog and a separate MCP changelog are identified. Naming stability loses credit because multiple product versions and references to an older contract coexist, and the supplied packet does not include the full changelog contents. Maintenance responsibility is only inferable from repository, issue-tracker, and release-workflow references; no explicit maintenance commitment or response policy is shown.
The product provides progress, action logs, DOM state, failure diagnostics, and MCP tools that are usable for browser tasks. DOM automation, MCP control, and trigger monitoring provide clear additional value. Cost discussion includes model/token accounting and comparative latency, but the packet gives no independent cost-benefit evidence for a higher score, and use still requires a browser, model setup, and local bridge.
The README gives concrete installation and diagnostic commands, interface details, and security claims that can be traced in part to the skill, MCP source, CI workflows, and test files. The benchmark, passing-test, and security claims are not independently reported or corroborated by corresponding implementation detail in the supplied excerpts, limiting cross-source corroboration. Documentation generally separates feature descriptions from limitations, but promotional performance and quality claims lack supporting evidence within this packet.
- This is a low-confidence static review; the packet does not include the full source or run results, so it cannot establish actual security, reliability, or benchmark performance.
- The extension controls a real browser session and supports credentials, payment flows, and local file uploads. Confirm the target and action before submissions, payments, account changes, or public posts.
- Some tool-contract documentation references older versions; check that the extension and MCP server versions match before installation.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
mcp-v0.11.2 fsb-mcp-server v0.11.2
Release notes excerpt
Install / Update ```bash npx -y [email protected] install --all ``` Or install globally: ```bash npm i -g [email protected] ``` What's Changed * Allow the portfolio to embed the FSB site by @LakshmanTurlapati in https://github.com/fullselfbrowsing/FSB/pull/148 * Ship MCP 0.11.2 with FSB logo and automatic npm releases by @LakshmanTurlapati in https://github.com/fullselfbrowsing/FSB/pull/152 Full Changelog: https://github.com/fullselfbrowsing/FSB/compare/extension-v0.9.92...mcp-v0.11.2View on GitHub ↗ -
extension-v0.9.92 FSB extension v0.9.92
Release notes excerpt
FSB Chrome extension v0.9.92. Install from the Chrome Web Store when available, or use the attached package for a supervised manual installation. What's Changed * Release notes page, Korean locale, and the August 2026 privacy policy by @LakshmanTurlapati in https://github.com/fullselfbrowsing/FSB/pull/117 * Fix silent QR pairing failures on the showcase dashboard by @LakshmanTurlapati in https://github.com/fullselfbrowsing/FSB/pull/119 * Persist anonymous users-by-location and fix IPv6 geo by @LakshmanTurlapati in https://github.com/fullselfbrowsing/FSB/pull/120 …View on GitHub ↗ -
mcp-v0.11.1 fsb-mcp-server v0.11.1
Release notes excerpt
Install / Update ```bash npx -y [email protected] install --all ``` Or install globally: ```bash npm i -g [email protected] ``` What's Changed * Release notes page, Korean locale, and the August 2026 privacy policy by @LakshmanTurlapati in https://github.com/fullselfbrowsing/FSB/pull/117 * Fix silent QR pairing failures on the showcase dashboard by @LakshmanTurlapati in https://github.com/fullselfbrowsing/FSB/pull/119 * Persist anonymous users-by-location and fix IPv6 geo by @LakshmanTurlapati in https://github.com/fullselfbrowsing/FSB/pull/120 …View on GitHub ↗
FAQ
Do I need an FSB account or a paid FSB API key?
What browser permissions does it take, and does it touch my accounts?
A task failed — what should I check?
Can trigger watchers run while I'm away from the machine?
Can I deploy the whole thing to a server?
Thanks — we use this to improve the page.