No Node, no Python, no Docker. Runs on macOS, Linux, and Windows.
webrain · scrapelive
❯webrain mcp
✓MCP server ready · 18 tools
❯“scrape product prices from shop.example.com”
❯navigate shop.example.com
✓loaded · 0 challenges
❯observe product cards
✓24 product cards detected
❯extract json
✓
✓
✓done · 24 items → JSON
webrain · auth + batchlive
❯“extract prices from 12 auth pages behind Turnstile”
❯vault add store.example.com
✓credential stored · AES-256-GCM + TOTP
❯launch chrome
✓real chrome up · stealth, cdp 9222
❯navigate auth.store.example.com
✓challenge turnstile → cleared · native login
❯session login service=store profile=default
✓logged in · session saved, TOTP ok
❯batch extract · 12 urls (session)
✓12 pages · 214 items
✓done · 214 products → JSON
webrain · batch interactlive
❯“collect specs from 40 public pages, no auth”
❯batch interact · 40 urls in parallel
✓clicked specs tab · read rows per page
✓312 rows · 0 logins
✓done · 312 specs → JSON
webrain · scrapelive
❯webrain mcp
✓MCP server ready · 18 tools
❯“scrape product prices from shop.example.com”
❯navigate shop.example.com
✓loaded · 0 challenges
❯observe product cards
✓24 product cards detected
❯extract json
✓
✓
✓done · 24 items → JSON
webrain · live CLI sessionlive
❯webrain mcp
→✓ MCP server ready · 18 tools
❯webrain_navigate shop.example.com
→0 challenges · 24 product cards detected
❯webrain_extract mode=autoschema
→schema: · 42 rows
❯
→12 pages · 2.1s · 189 items
Works with any MCP client
Give the scraper LLM a try.
This is the agent loop webrain runs: a plain-language prompt, eighteen intent-based tools, and structured JSON back. Presets show illustrative output, except the drone one: a real 1m43s run. Pick a demo or type your own prompt.
Autoschema probes the DOM, then schema, regex, table, JSON-LD, and BM25 modes return clean data. Zero LLM, zero cost. Live: 407 products from a real store in ~17 tool calls.
Real-Chrome profiles with an encrypted local vault and optional TOTP. Cookies transfer across engines.
AES-256-GCMTOTPcookie transfer
Challenge bypass
Every navigate reports a challenge field; real Chrome with a persistent profile and native login clears Cloudflare, Turnstile, and reCAPTCHA gates. No Python sidecar.
cloudflare_challengeblockedcaptcha
Crawl at scale
Batch, spider, sitemap, and scan modes with auto-throttle and checkpoint/resume. 132 products in one parallel call, ~2-4 s/page on Lightpanda.
PDF extract and render, video transcripts plus frames, downloads, JSON-LD, media, and a no-browser HTTP path. Video transcripts run fully offline with bundled whisper and local vision.
Bundled whisper-cli for transcripts and Qwen3-VL-2B for vision. No cloud key required. Runs fully on your machine.
whisper-cliQwen3-VL-2B
1static binary
3browser engines
18MCP tools
0Node runtime
No client needed. webrain chat drives webrain itself.
One command, one turn, your own model key. The session attaches these 18 tools and nothing else, so the model can only do what webrain can actually do.
One prompt, one turn
webrain chat “compare these two listings” runs the agent loop and prints the answer. Exit 0 completed, 1 the turn failed, 2 could not start, so it composes in a script.
The answer goes to stdout and the tool trail to stderr, so | jq and > file stay clean.
Bring your own key
Seven provider rows resolved in order, the same variable names the vision chain already reads, plus any OpenAI-compatible endpoint including a keyless local server. —print-config resolves the chain offline and prints it with the key redacted.
openrouteropenaianthropicgeminifireworksdashscopegroqlocal base url
Nothing of yours leaks in
The runtime starts in the SDK’s empty client mode with its own state directory, so your own MCP servers, skills, session store, memory and telemetry stay out of the turn. Reads and tool calls run; a shell command or file write needs —yes.
Built with —features chat. See the chat guide for the provider table and the per-target build matrix.
Skills, recipes, and agent prompts, in the repo.
webrain ships a working agent playbook, not just tools: a routing skill, verified block-bypass workflows, and a ready-to-copy news-research prompt. Clone the repo and load them into any client.
webrain skill
The router. Load it and it picks the browser, the challenge path, and the extractor for each task, mcp_webrain-* without guesswork.
PDF, same 9-page paper both ways: 5.2 s and 48 KB of markdown from the text layer, versus 157.9 s through render + tiles + local vision for half the characters. Tiling is 1.4% of that run, so the win is routing, not parallelism: extract first, then send only the pages whose text layer came back empty to vision.
Ask for results and get typed JSON: position, title, url, domain, snippet. duckduckgo, bing, yahoo, baidu and yandex answer over plain HTTP with no browser at all; google renders in a Chrome it launches with a persistent profile, brave uses its keyed API when one is set and the connected engine otherwise. auto fetches duckduckgo + bing in parallel and merges them, relevance-filtered and deduped.
Rust Programming Languagerust-lang.orgA fast, reliable, and productive programming language.
2
Rust (programming language) - Wikipediaen.wikipedia.orgA general-purpose language emphasizing performance, type safety, concurrency, and memory safety.
3
The Rust Programming Languagedoc.rust-lang.orgThe official Rust book: performance, safety, and fearless concurrency.
Pick the right engine for the job. From a full Chrome for interactive SPAs to a no-browser HTTP fetch for static pages.
Chrome
Interactive SPAs, challenges, screenshots. Anything real Chrome can do.
Default
Obscura
Fast batch scraping of non-challenged JS pages. Render build paints (PNG/PDF); a data-driven SPA may stay unmounted.
Fast
Lightpanda
Real accessibility tree, lightweight. Screenshot returns a placeholder frame.
Light
fetch_http
Static HTML, no JS, no auth. 10-100× faster. No engine at all.
No browser
Point any LLM at the web.
No driver wiring, no browser download dance, no tool wrappers. Install once, and your agent drives a real browser.
MCP native
stdio or HTTP. Works with Claude, Cursor, Copilot, Codex, Gemini.
Local first
Everything runs on your machine. No cloud, no API key, no data leaves.
Stealth and auth built in
Challenge bypass, encrypted vault, TOTP, and cookie transfer across engines.
Say it plainly. The agent picks the tool.
No selectors, no wrappers. The model reads the page, reads the challenge field, and dispatches to the right tool. These are real pairings from the agent guide.
The objections that come up before you install. The short version: yes, it runs on your machine.
Do I need Node, Python, or Docker?
No. webrain is a single Rust binary. The browsers it drives (Chrome for Testing, Obscura, Lightpanda) download on demand into a cache dir. Nothing else to install.
Does it cost money or need an API key?
No. It is open source (MIT) and local-first. Cloud keys are optional: webrain chat brings your own model key (or points at a keyless local server), and vision and video transcription can use cloud providers instead of the bundled local whisper and Qwen3-VL-2B models.
Which AI clients does it work with?
Any MCP client: Claude, Claude Code, Cursor, GitHub Copilot, Codex, Gemini, and more. Register it once in the client’s MCP config and the model drives the browser itself. Or use no client at all: webrain chat runs the loop in this binary.
How is this different from a scraping API?
webrain runs on your machine, sends no data to a third party, and gives the LLM a real browser with stealth and challenge bypass. For static pages it can be 10-100× faster than a full browser.
Does webrain chat read my own Copilot setup?
No. The runtime starts in the SDK’s empty client mode with its own state directory, so your own MCP servers, skills, session store, memory and telemetry stay out of the turn, and the model sees webrain’s 18 tools and nothing else. Reads and tool calls run; a shell command or a file write waits for —yes.
Give your agent a browser in five minutes.
Install webrain, start the MCP server, and ask your LLM to scrape. No selectors, no wrappers.