by dondai44423
An agentic browser driver for AI , few tools, full control, real stealth, top-tier token efficiency.
# Add to your Claude Code skills
git clone https://github.com/dondai44423/bladebrobladebro is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by dondai44423. An agentic browser driver for AI , few tools, full control, real stealth, top-tier token efficiency. It has 53 GitHub stars.
bladebro's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/dondai44423/bladebro" and add it to your Claude Code skills directory (see the Installation section above).
bladebro is primarily written in Rust. It is open-source under dondai44423 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 bladebro against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Give your AI agent a browser. Few tools. Full control. Real stealth. Zero runtime deps.
Re-render-immune refs · batch actions · auto-extract · self-improving · 6-layer stealth
One MCP server · one persistent page model · zero Node.js · one binary · Linux · macOS · Windows
npm install -g bladebro && bladebro mcp
Install · The 5 tools · Architecture · Re-render immunity · Self-improvement · Stealth · Comparison · Gotchas · Limits
Bladebro is an agentic browser driver built from the agent's perspective. Instead of 20+ tools that each do one thing, Bladebro gives you 5 tools that together provide full control. It drives stock Chromium over CDP, holds a persistent Live Page Model across tool calls, and returns diff-first results: the agent sees what changed, not the whole world, every single time.
Built in Rust. One static binary. No runtime. No Node.js. No Playwright shim. Just the browser engine and your agent. Native on Linux, macOS, and Windows.
Speaks MCP 2024-11-05 through 2026-07-28: legacy initialize handshake and the new stateless per-request negotiation with server/discover, dual-dialect. Works with every MCP client, old and new.
| Innovation | What it means | Status |
|---|---|---|
| Re-render immunity | Refs survive React/Vue/Angular DOM replacement via structural fingerprints. No other agent browser does this. | Live-verified |
| Self-improvement | Learns consent selectors, biometrics, and per-domain patterns across sessions. Compounds with use, never degrades. | v3.0.14 |
| Batch actions | Multi-step workflows (fill 5 fields, submit, wait) in ONE MCP call instead of 11. | Live-verified |
| Auto-extract | Template-free list extraction. No CSS selectors, no setup. Detects structure, scores content, extracts rows. | 10+ sites verified |
| Infinite-scroll collect | Scroll + dedupe loop for feeds. ONE call, ONE artifact, zero duplicates. | 80 items verified |
| 6-layer stealth | Protocol, environment, behavior, coherence, residue, seasoning. All on by default. | incolumitas 8/8 |
| Delta-first tokens | Every action returns what changed, not the whole page. 5x cheaper than competitors. | ~1,900-token tool defs |
| Self-healing refs | Stale refs re-resolve automatically. Agent never sees "element not found" after navigation. | 26/26 sites |
| Pi agent native | pi install npm:bladebro — 5 tools registered as first-class pi tools. Zero config. |
v3.0.13 |
npm install -g bladebro
bladebro mcp
That's it. No Rust, no compilation, no dependencies. The npm package ships a prebuilt binary for your platform:
| Platform | Package | Size |
|---|---|---|
| Linux x86_64 | bladebro-linux-x64 |
5.7 MB |
| Windows x86_64 | bladebro-windows-x64 |
5.2 MB |
| macOS Intel | bladebro-darwin-x64 |
5.2 MB |
| macOS Apple Silicon | bladebro-darwin-arm64 |
4.8 MB |
npm resolves the correct binary automatically via os/cpu fields. Users only download the binary for their platform. Zero postinstall scripts, zero warnings.
pi install npm:bladebro
That's it. The extension spawns the binary as a stdio MCP subprocess, discovers tools via tools/list, and registers them natively with pi via pi.registerTool(). The agent gets 5 first-class tools (browser.act, browser.see, browser.state, browser.run, browser.vision) — no adapter, no config files, no proxy tool.
Tool definitions come from the binary at startup, so they auto-adapt to any tool def changes with zero extension maintenance. Auto-updates via pi update --extensions.
Prerequisites: Chromium or Google Chrome (auto-detected), Rust 1.86+. Linux: Xvfb for headless servers (macOS/Windows run headful natively).
git clone https://github.com/dondai44423/bladebro.git
cd bladebro
cargo build --release
./target/release/bladebro mcp
Just tell your agent to add Bladebro to its MCP config. For Claude Desktop, Cursor, and most MCP clients, add this to your config file:
{
"mcpServers": {
"bladebro": {
"command": "bladebro",
"args": ["mcp"]
}
}
}
pi install npm:bladebro
bladebro -doc # system check (Chrome, Xvfb, profile, network, version)
bladebro -v # version + update status
bladebro audit # stealth verification
| Env Var | Default | What it does |
|---|---|---|
CHROME_PATH |
auto | Path to Chrome/Chromium binary |
BLADE_PROFILE_DIR |
~/.blade/profile |
Persistent browser profile |
BLADE_FRESH |
unset | 1 = ephemeral profile (no persistence) |
BLADE_LOCALE |
en-US |
BCP-47 locale (e.g. en-GB, ne-NP) |
BLADE_TZ |
auto (IP geo) | Timezone (e.g. Europe/London, Asia/Kathmandu) |
BLADE_NOISE |
unset | 1 = enable canvas/audio fingerprint noise |
BLADE_WEBGL |
auto |
spoof / real / auto |
BLADE_MEDIA |
auto |
patch / real / auto |
BLADE_PROXY |
none | Proxy URL |
BLADE_CONSENT |
reject |
accept / reject / off — consent banner policy |
act — act, then observeEvery act returns an outcome verdict + page delta. Click auto-escalates: mouse, JS, Enter. Click by text (no see needed): act click text="Sign in". Ambiguous text? Error lists matches with refs and nth values: retry nth=2.
| Action | Example | What it does |
|---|---|---|
click |
act click e5 or act click text="Sign in" |
Mouse, JS, Enter escalation |
type |
act type label="Search" text="hello" |
Cadenced typing into textboxes |
fill |
act fill fields=[...] submit="Go" |
Multi-field form fill, auto-detects type |
batch |
act batch steps=[{click},{type},{click}] |
Multi-step workflows in ONE call |
navigate |
act navigate url="https://example.com" |
Idempotent, returns full page model |
scroll |
act scroll dy=800 |
Smooth eased wheel events |
hover |
act hover text="Products" |
Reveals dropdowns in the delta |
collect |
act collect max=50 timeout=30 |
Auto-extract + scroll + dedupe loop for infinite feeds |
wait |
act wait condition=url text="dashboard" |
6 conditions: element, title, settle, url, text, js |
eval |
act eval js="document.title" |
JS eval; el in scope when ref given |
read |
act read e5 |
Element text content |
press |
act press key=Enter |
Real key event |
upload |
act upload e7 text="/tmp/file.txt" |
File input |
select |
act select e4 option="Nepal" |
Dropdown by text or value |
pdf |
act pdf |
Export page as PDF artifact |
download |
act download url=... timeout=10 |
Fetch+Blob download, returns path |
back / forward / reload |
act back |
History + reload |
Self-healing refs — stale refs re-resolve automatically. If e5 was "Sign in" and the page navigated, act click e5 finds the new "Sign in" and clicks it. You see [ref e5 healed] in the verdict.
Batch actions — run multi-step workflows in ONE MCP call. Fills, submits, multi-click sequences: one call, one final delta. Halts on navigation or first error with step-level context. 5-step form fill+submit in one call instead of 11.
url= on any action — act fill url="https://..." fields=[...] navigates first, then fills. One call to go to a page AND act on it. Exception: download fetches via JS (no navigation), set-cookie uses url for cookie scope.
slim=true — returns verdict only, no delta. Use when you know what happens next.
see — observe (rarely needed)Navigate and act already return page state. Use see for:
| Call | What you get |
|---|---|
see |
Full view (semantic folding: nav/footer auto-fold) |
see filter="button,link" |
Filtered by role/name/landmark |
see find="price" |
Search elements by text, get refs + scores |
see extract="auto" |
Template-free list extraction: structural detection, content-value scoring |
see extract="json" template={...} |
Structured data from listing pages (one call) |
| `see extract= |