Your coding agent edits a component, runs the build, and reports the UI is now "pixel-perfect." It never opened a browser. It's guessing.
I got tired of that, so I built hwatu, a browser designed specifically for the agent verification loop.
hwatu --headless http://localhost:3000 # open, no focus steal
hwatu wait-load # block until loaded
hwatu eval 'document.title' # DOM-level checks
hwatu shot /tmp/check.png # screenshot
hwatu diff --id 1 --baseline before.png # pixel diff: 97.49% match + heatmap
hwatu close 1
The whole loop, screenshot included, runs in about 87 ms on my laptop. Cheap enough that the agent can verify after every edit instead of claiming success blind.
webkitgtk-6.0
. No 170 MB download per project.hwatu mcp
), plain CLI, and a 1-line JSON socket. Works with Claude Code, Cursor, Jcode, or any harness.Every benchmark in the repo was measured on real runs with scripts you can rerun: window spawn medians of 13-16 ms, ~87 ms full verification loop, memory measured via PSS across all WebKit child processes. Methodology in docs/benchmarks.md.
curl -fsSL https://raw.githubusercontent.com/hongnoul/hwatu/main/scripts/install.sh | bash
hwatu setup # detects Claude Code, Cursor, Jcode, or generic MCP
MIT licensed. Linux (WebKitGTK). Feedback and issues welcome: https://github.com/hongnoul/hwatu