Bruster
Native webview browser automation for AI agents. Rust-powered, with JSON-lines control and a built-in MCP server. Runs on macOS, Linux, and Windows.
Documentação
"method": "navigate",
"params": { "url": "https://example.com" }
"method": "snapshot",
"params": { "format": "text" }
EXAMPLE SNAPSHOT
e1heading Example Domain
e2textThis domain is for use in…
e3linkLearn more
"method": "click", "params": { "ref": "e3" }
The browser engine
belongs to your platform.
macOS WKWebView
Linux WebKitGTK
Windows WebView2
The browser is native.The workflow is yours.
Automate the everyday work: navigate, inspect, fill, click, and capture. Connect it to the tools you already use.
Speak your language
Send JSON over stdin. Read results on stdout. Python, Rust, Go, or anything that can start a process can drive bruster.
Give your agent a browser
One --mcp flag turns browser methods into tools. Get compact snapshots, screenshot images, and page events.
Keep the moving parts small
A compiled Rust controller backed by native browser libraries and helper processes. Install the platform runtime where needed.
Your first automation,without the ceremony.
Install the binary or run the Docker image. Start a session. Send a command. Each request has an ID, so results stay easy to follow alongside page events.
- 1 Choose your setup Use a prebuilt release or the Docker Hub image.
- 2 Connect your workflow Use the native protocol or your MCP client.
- 3 Make the browser do the work Inspect a page, fill a form, capture a screenshot. Read the getting-started guide
Ready when you are.
v0.3.3
Install on macOS or Linux
curl -fsSL https://raw.githubusercontent.com/aliilyas/bruster/main/install.sh | sh
Installs to ~/.local/bin. Read the script
On Windows?Download the release
A note for Linux
Install WebKitGTK 4.1. On machines without a desktop session, install Xvfb too. Platform setup →
$ bruster --hiddenJSON lines
Or run bruster --mcp --quiet from your MCP client.
Docker Hub amd64 & arm64
docker run --rm -i ilyastmn/bruster:latest
Includes WebKitGTK, Xvfb, fonts, and HTTPS certificates. Docker setup · Connect your MCP client
Less guesswork.More measurements.
Compare bruster with Playwright, Puppeteer, and agent-browser. Inspect startup, navigation, screenshots, memory, and installed runtime files.
Idle process-tree memory
218.7 MiB
Total PSS, including the Xvfb display
Installed runtime files
427.9 MB
Lower bound, including native dependencies
Bruster / WebKitGTK · Linux · 29 Oct 2026 · 10 sessions. Memory includes Xvfb; installed size is a lower bound. See all configurations, ranges, versions, and conditions in the full report.
One interface.Plenty of possibilities.
01 /
Browser automation scripts
Extract rendered text, fill forms, and save screenshots from the language you already write.
02 /
Focused smoke tests
Check that your pages load and key interactions work. Use your own assertions around structured responses.
03 /
Agent-driven workflows
Let an MCP-compatible client inspect and interact with pages using the same native controller.
Before you start.
Is bruster a replacement for Playwright?
It is an alternative for workflows that benefit from a native-webview controller and JSON-lines or MCP access. Playwright offers a complete testing ecosystem, cross-browser engines, tracing, and browser-context isolation. Compare the trade-offs for your workload.
Does bruster need Node.js or a browser download?
The bruster executable needs no Node.js. It uses WKWebView on macOS, WebKitGTK on Linux, and WebView2 on Windows. Install the native runtime where required; rendering also uses its libraries and helper processes. WebView2 is Chromium-based.
Can I run it in CI without a display?
On Linux, WebKitGTK needs a display even in hidden mode. Install Xvfb for a virtual display. When DISPLAY is unset, bruster automatically tries xvfb-run. See the CI setup.
Can I use bruster from Python?
Yes. Start the executable with Python’s standard-library subprocess module, write a JSON request to stdin, and read stdout until you receive its matching ID. Try the complete Python example.