hwatu MCP
A headless WebKit browser verifies pages in one call, scores pixel diffs and hands the live session to a human.
- 118 ★ on the repository
- Last commit
Extended access
Why this level
- The agent opens pages, runs JavaScript in them and types into forms, which exposes sessions and local sites.
- The installer runs through `curl | bash`.
Install
- Works in
Manual install
curl -fsSL https://raw.githubusercontent.com/hongnoul/hwatu/main/scripts/install.sh | bashThe first README install option puts a single static binary in place. The `webkitgtk-6.0` package is also required. Arch has `yay -S hwatu`.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The agent opens pages, runs JavaScript in them and types into forms, which exposes sessions and local sites.
- The installer runs through `curl | bash`.
This is third-party code. Review the repository files before installing.
What it does
A daemon keeps a warm WebKit engine, and an agent reaches it over MCP, the CLI or one JSON line on a Unix socket. A single `hwatu check` command opens a page, runs an expression, takes a screenshot and returns console output and load time. `hwatu diff` gives a match percentage for two pages with a heatmap, and `motion` expresses animations as numbers: duration, easing, velocity. Windows are invisible by default and never steal focus. When a check needs a human, such as a CAPTCHA, `hwatu focus <id>` turns the same session into a normal window. The `challenge` feature only detects protection and waits; it cannot solve it.
Who it is for. Linux developers whose agent edits a UI and must verify the result in a browser itself, without Chromium or Node.
Good fit when
- An agent adjusted a layout and compares it to a reference, climbing the match percentage.
- After a form change, a scenario must run, reload and confirm the data persisted.
- Several agents run in parallel and browser windows must not interrupt work at the computer.
- An animation on a reference page must be measured and reproduced.
Not a fit when
- You need to test in Chromium, because hwatu renders with WebKit; keep a Playwright matrix for engine-specific bugs.
- You work on macOS or Windows, since only Linux is supported.
- Widevine or passkeys are required, which WebKitGTK does not support.
Example request
Open localhost:3000 with hwatu, verify the success message after saving a name on /settings, reload the page and report any console errors.MCP
- Transport
- stdio
- Authentication
- not required
Limitations
Linux only, with the distro `webkitgtk-6.0` package required. The installer runs as `curl ... | bash`, so read `scripts/install.sh` first. The author's figures (35 ms per check, about nine times faster than Playwright) come from their own measurements described in `docs/benchmarks.md`.
How to disable. Stop the daemon, remove the `hwatu` entry from the MCP config and run `hwatu setup --undo` to revert agent setup.
FAQ
How do I connect hwatu to Claude Code?
Run `hwatu setup --client claude --scope project`. `--dry-run` previews changes and `--undo` reverts them. Manually, add the entry `{"command": "hwatu", "args": ["mcp"]}`.
How is hwatu different from Playwright?
It returns measurements instead of raw screenshots: match percentage, animation numbers and `expect` results. A page check takes one call instead of five.
Does hwatu solve CAPTCHAs?
No. `challenge` only detects protection and waits. A human solves it in the window that `hwatu focus <id>` opens.
Which systems does hwatu run on?
Linux only, with WebKitGTK 6. On Arch install it with `yay -S hwatu`, or build from source with `cargo build --release`.
What makes an agent actually use hwatu?
Connecting is not enough. Add an instruction to `AGENTS.md`, `CLAUDE.md` or Cursor rules to verify UI changes with `expect`.
Discussion
No questions or reviews yet.
Related
MCP serversAn MCP server that spins up several browser agents to test a site for broken links, UI bugs and accessibility issues
The interactive HTTP client lets you inspect a browser request, change parameters and explore its response in the terminal.
kogiQA MCP gives an agent a browser that finds page elements without selectors, for debugging web apps and writing e2e tests
A skill that tests your agent's code in a real browser: reads your changes, builds a test plan and runs it through Playwright with your own cookies
One binary for agent browser automation: a CLI with browser and check skills, an MCP server and clients for JS, Python and Java
websocat connects to WebSocket services from the terminal, sends text or binary messages and supports protocol debugging.
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| hwatu (this card) | no | not required | 118 | |
| Playwright MCP | yes | not required | 39,261 | drives a Chromium browser and returns snapshots; hwatu on WebKit returns measurements, match percentages and animation numbers |
| Chrome DevTools MCP | yes | not required | 54,879 | attaches to your Chrome with its tabs; hwatu keeps its own invisible engine and never takes focus |
README in short
The README walks through a verification loop: a reference and the edit are compared with `diff`, then edits repeat until the target match. The author raised a clone of the Stripe landing page from 85.1 to 98.8 percent.