Full environment, versions and hashes
{
"started_utc": "2026-11-10T21:54:36.030977+00:00",
"platform": "Linux-7.0.0-1017-azure-x86_64-with-glibc2.39",
"os": {
"NAME": "Ubuntu",
"ID": "ubuntu",
"PRETTY_NAME": "Ubuntu 24.04.5 LTS",
"VERSION_ID": "24.04",
"VERSION": "24.04.5 LTS (Noble Numbat)",
"VERSION_CODENAME": "noble",
"ID_LIKE": "debian",
"HOME_URL": "https://www.ubuntu.com/",
"SUPPORT_URL": "https://help.ubuntu.com/",
"BUG_REPORT_URL": "https://bugs.launchpad.net/ubuntu/",
"PRIVACY_POLICY_URL": "https://www.ubuntu.com/legal/terms-and-policies/privacy-policy",
"UBUNTU_CODENAME": "noble",
"LOGO": "ubuntu-logo"
},
"node": "v26.13.0",
"chrome": "Google Chrome for Testing 158.0.8127.18",
"headless_shell": "Google Chrome for Testing 158.0.8127.18",
"cpu_count": 4,
"cpu_model": "AMD EPYC 9V45 96-Core Processor",
"mem_total_kib": 16367524,
"runner_image": {
"ImageOS": "ubuntu24",
"ImageVersion": "20261101.360.1",
"RUNNER_ARCH": "X64"
},
"session_environment": {
"display_set": true,
"session_bus_address_set": false,
"XDG_CURRENT_DESKTOP": null,
"GTK_USE_PORTAL": null,
"GTK_MODULES": null,
"NO_AT_BRIDGE": null,
"BRUSTER_USE_SESSION_BUS": null
},
"rustc": "rustc 1.99.1 (58cf8f9c3 2026-10-13)",
"gtk": "3.24.41",
"webkitgtk": "2.52.6",
"tools": [
"bruster",
"playwright-shell",
"playwright",
"puppeteer",
"agent-browser",
"stagehand",
"browse",
"playwright-mcp",
"cypress",
"uivision",
"rustwright",
"rustwright-mcp",
"biloba"
],
"competitors": {
"source": "https://news.ycombinator.com/item?id=49756671",
"reviewed": "2026-11-01",
"scope": "The linked story and its complete public comment tree, including replies, plus user-requested Rustwright, Rustwright MCP and Biloba. Additional stories are recorded separately from comments on the original thread. This is not a search of every Hacker News submission.",
"tools": [
{
"id": "bruster",
"label": "Bruster / WebKitGTK",
"github": "https://github.com/aliilyas/bruster",
"status": "linux",
"notes": "Native JSONL; system WebKitGTK and Xvfb. Reference implementation."
},
{
"id": "playwright-shell",
"label": "Playwright / Headless Shell",
"github": "https://github.com/microsoft/playwright",
"comments": [
49756672,
49767485
],
"package": "playwright-core",
"status": "linux",
"notes": "Public Playwright API; separate Headless Shell configuration."
},
{
"id": "playwright",
"label": "Playwright / full Chrome",
"github": "https://github.com/microsoft/playwright",
"comments": [
49756672,
49767485
],
"package": "playwright-core",
"status": "linux",
"notes": "Public Playwright API."
},
{
"id": "puppeteer",
"label": "Puppeteer / full Chrome",
"github": "https://github.com/puppeteer/puppeteer",
"package": "puppeteer-core",
"status": "linux",
"notes": "Existing baseline; not named in the linked HN thread."
},
{
"id": "agent-browser",
"label": "agent-browser / full Chrome",
"github": "https://github.com/vercel-labs/agent-browser",
"comments": [
49763636,
49784241
],
"package": "agent-browser",
"status": "linux",
"notes": "Native CLI and persistent daemon; per-command CLI overhead included."
},
{
"id": "stagehand",
"label": "Stagehand / full Chrome",
"github": "https://github.com/browserbase/stagehand",
"comments": [
49756672
],
"package": "@browserbasehq/stagehand",
"status": "linux",
"notes": "Local v4 SDK and bundled extension; deterministic Page APIs. No LLM calls, act/extract inference, cloud caching, or token-efficiency claims."
},
{
"id": "browse",
"label": "browse.sh / full Chrome",
"github": "https://github.com/browserbase/stagehand/tree/main/packages/cli",
"comments": [
49784241
],
"package": "browse",
"status": "linux",
"notes": "Local browse CLI, Stagehand extension and persistent daemon; per-command Node CLI overhead included. Same monorepo as Stagehand."
},
{
"id": "playwright-mcp",
"label": "Playwright MCP / full Chrome",
"github": "https://github.com/microsoft/playwright-mcp",
"comments": [
49756672
],
"package": "@playwright/mcp",
"adapter_packages": [
"@modelcontextprotocol/sdk"
],
"status": "linux",
"notes": "Actual stdio MCP server and tool calls, including default response snapshots and client/server overhead; navigation explicitly waits for load."
},
{
"id": "sleepyhollow",
"label": "SleepyHollow / Apple WebKit",
"github": "https://github.com/bensyverson/sleepyhollow",
"comments": [
49762455,
49767052
],
"status": "macos-timing",
"notes": "Separate same-Mac Bruster/SleepyHollow timing job and artifact. Requires macOS 12+ and WebKit.framework. No Linux/PSS or runtime-footprint estimates; native validation requires the macOS workflow."
},
{
"id": "cypress",
"label": "Cypress / Chrome test runner",
"github": "https://github.com/cypress-io/cypress",
"comments": [
49766482,
49773778
],
"package": "cypress",
"status": "linux",
"notes": "Real Cypress CLI/spec runner, application iframe, proxy and task IPC; one command per test with test isolation and retries disabled. Runner, bundled Electron runtime and owned Xvfb are counted. Native snapshot is unavailable; shared DOM extraction is measured."
},
{
"id": "uivision",
"label": "Ui.Vision MCP / browser extension",
"github": "https://github.com/A9T9/RPA",
"implementation": "https://github.com/A9T9/RPA/tree/master/mcp",
"comments": [
49765724
],
"package": "uivision-mcp-bridge",
"adapter_packages": [
"playwright-core",
"@modelcontextprotocol/sdk"
],
"status": "linux",
"notes": "Official browser extension and real MCP bridge in an isolated headless Chrome profile with an open panel. Playwright provisions/closes the browser; measured operations use MCP. Macro-log extraction is chunked to respect transport limits; all calls and default response snapshots are counted. Native snapshots can truncate at 60,000 characters; shared extraction is complete."
},
{
"id": "rustwright",
"label": "Rustwright / full Chrome",
"github": "https://github.com/Skyvern-AI/rustwright",
"stories": [
48923788,
48932230,
49319583
],
"package": "rustwright",
"status": "linux",
"notes": "User-requested addition, verified against separate HN stories identifying Skyvern-AI/rustwright. Public Node SDK over its in-process Rust CDP engine. The experimental Node API lacks a viewport setter: a CDP connection provisions the viewport at startup and remains idle in memory scope. All workload operations use the SDK. Native snapshot is unavailable in the Node SDK."
},
{
"id": "rustwright-mcp",
"label": "Rustwright MCP / full Chrome",
"github": "https://github.com/Skyvern-AI/rustwright",
"implementation": "https://github.com/Skyvern-AI/rustwright/tree/main/mcp",
"stories": [
48923788,
48932230,
49319583
],
"package": "rustwright-mcp",
"adapter_packages": [
"@modelcontextprotocol/sdk"
],
"status": "linux",
"notes": "User confirmed that 'Rust MCP' means Rustwright MCP. Canonical native Rust stdio MCP server, launched directly from its official npm binary package. MCP client/server and automatic snapshots are counted; navigation explicitly waits for load. Native snapshots can truncate; shared extraction is complete. Distinct from the deprecated Python server and luka-loehr/browser-rs."
},
{
"id": "biloba",
"label": "Biloba / full Chrome",
"github": "https://github.com/onsi/biloba",
"stories": [
49699819
],
"package": "biloba",
"status": "linux",
"notes": "User-requested addition, verified against its separate Show HN story. Public TypeScript SDK and real bilobad Go daemon over chromedp; a fresh local browser and session per round. Measures serial browser operations, including daemon transport; no Vitest/Ginkgo scheduling or parallel-suite claims. Native accessibility outlines can truncate; shared extraction is complete."
}
],
"related_mentions": [
{
"name": "Jev / TypeSafe",
"comments": [
49768496
],
"github": "https://github.com/browserbase/stagehand/pull/2952",
"notes": "Typed decision model integrated with Stagehand, not a browser runtime. The verified GitHub link is the integration PR; no standalone Jev browser repository was identified. Requires a model-driven accuracy/cost evaluation."
},
{
"name": "Browserbase",
"comments": [
49763632,
49757218
],
"github": "https://github.com/browserbase/sdk-node",
"notes": "Hosted browser service; this is its client SDK, not the hosted browser source. Cloud/network latency needs a separate comparison."
},
{
"name": "Codex",
"comments": [
49756672,
49757944
],
"github": "https://github.com/openai/codex",
"notes": "Coding-agent harness using browser tools, not a browser backend."
},
{
"name": "Claude Code",
"comments": [
49756672,
49757944
],
"github": "https://github.com/anthropics/claude-code",
"notes": "Coding-agent product repository, not an open-source browser backend."
},
{
"name": "Deep Agents",
"comments": [
49757944,
49757129
],
"github": "https://github.com/langchain-ai/deepagents",
"notes": "Agent harness; browser tools and model must be specified for an end-to-end task evaluation."
},
{
"name": "Mastra",
"comments": [
49757944
],
"github": "https://github.com/mastra-ai/mastra",
"notes": "Agent framework, not a browser runtime."
},
{
"name": "Eve",
"comments": [
49757944,
49757129
],
"github": "https://github.com/vercel/eve",
"notes": "Vercel agent framework, identified through Stagehand's Eve integration and the eve npm package repository. Uses a browser integration rather than implementing a browser."
},
{
"name": "Fx",
"comments": [
49757129
],
"github": "https://github.com/vercel-labs/fx",
"notes": "Coding agent, identified through Stagehand's fx integration and fx.sh's repository link. Uses the Stagehand MCP integration for browser tasks."
},
{
"name": "Astra computer use",
"comments": [
49756970,
49757217
],
"github": null,
"notes": "Computer-use/model alternative, with no repository linked in the thread. No authoritative standalone browser repository identified; unrelated projects with the same name are not substituted. Requires a specified model and computer-use environment."
}
]
},
"competitors_sha256": "a7ea594c9373720b11a51e597df3e96755af781d64be84256edbe9aa1eca91cc",
"packages": {
"@browserbasehq/stagehand": "4.4.0",
"@modelcontextprotocol/sdk": "1.32.2",
"@playwright/mcp": "0.0.85",
"agent-browser": "0.42.0",
"biloba": "0.23.0",
"browse": "0.11.3",
"cypress": "16.3.0",
"playwright-core": "1.65.0",
"puppeteer-core": "25.17.0",
"rustwright": "0.3.0",
"rustwright-mcp": "0.1.0",
"uivision-mcp-bridge": "1.7.20"
},
"bruster_bytes": 2010032,
"bruster_sha256": "13b16fdf27fe7634ed2f5598ec1d0e37596e42e8cb157c2e6aa3fd22955e1042",
"chrome_sha256": "76bcde21a2f8c9d4fbbf42afbeab011817d000552d093e5f5e89c9b8808f4231",
"headless_shell_sha256": "41ff61e6e65b8d16b40631f4f094b46ec02f1a0f5375ae477c1d478f1fc2d89d",
"rounds": 10,
"iterations": 10,
"common_extraction_js": "(() => ({\n title: document.title,\n elements: Array.from(document.querySelectorAll('h1,h2,h3,p,li,a,input,button,select,textarea'))\n .filter(e => { const r = e.getBoundingClientRect(); return r.width > 0 && r.height > 0; })\n .map(e => ({tag: e.tagName.toLowerCase(),\n name: (e.getAttribute('aria-label') || e.getAttribute('placeholder') || e.textContent || '').trim(),\n href: e.getAttribute('href'), value: 'value' in e ? e.value : null}))\n}))()",
"harness_sha256": {
"bench_compare.py": "20029f2fb633966567e1fc609bf4639d06303dee8062ad95725ca0c514b541f9",
"bench_competitor_driver.mjs": "091a04fe34ced734f2ba96c013ef2a373b668fe83e2a8e410496dcdcc062d9ca",
"bench_mcp_driver.mjs": "d970d5f6d40e9055c36c7cbdd8572e17992f9bd245a3ec89d5c57de417f68f48",
"bench_cypress_driver.mjs": "c7a795bf4149a7275f13ea7cce10e37439ccc7c6ca7b97480b2e631321498c22",
"bench_cypress.config.cjs": "a0442f2fa87bd3f83ea2ef975e0bb6529edda9c735f8a45c25dfbd3473896c25",
"bench_cypress.cy.js": "833b3469ecab1bbd443a81c4902899abd0ab1fb8ab58df055d992e1420169bd8",
"bench_uivision_driver.mjs": "ed9bc9cdc608532af98994e0276b740c8944d72053c1a7c2355257bacc69195a",
"bench_install_uivision.py": "b44f264df9b9ad32e19276105d6d50533cc2943bb235bdb820ee03db30e10741",
"bench_rustwright_mcp_driver.mjs": "f78b48216164af7ddca8bad23a0588ad7cecf3a255113add843f425c93451d99",
"bench_footprint.py": "f6a70626b3cc160bd115e9a22d5677a990cfb45e48f32918259cd591b3b32ac4",
"bench_tools.py": "4dfe872c7dc61eac092c1a7a402c322a0f4e3a3fc9404faff48658a3fea7ac91",
"bench_audit.py": "df91d7a203077227c82fc6730033498ea20badaf519c6dd8f6bf10b1c6ae006c"
},
"package_lock_sha256": "dae5e4a15cf425863be7cc1b162ea704320e89ba99882e40d5360e946b8178c7",
"args": {
"bruster": "/home/runner/work/bruster/bruster/target/release/bruster",
"node": "/opt/hostedtoolcache/node/26.13.0/x64/bin/node",
"chrome": "/home/runner/work/_temp/benchmark-browsers/chromium-1254/chrome-linux64/chrome",
"shell": "/home/runner/work/_temp/benchmark-browsers/chromium_headless_shell-1254/chrome-headless-shell-linux64/chrome-headless-shell",
"deps": "/home/runner/work/_temp/benchmark-deps",
"output": "/home/runner/work/_temp/benchmark-results",
"rounds": 10,
"iterations": 10,
"tools": [
"bruster",
"playwright-shell",
"playwright",
"puppeteer",
"agent-browser",
"stagehand",
"browse",
"playwright-mcp",
"cypress",
"uivision",
"rustwright",
"rustwright-mcp",
"biloba"
]
},
"uivision_extension": {
"extension_id": "gcbalfbdmfieckjlnblleoemohcganoc",
"version": "10.0.305",
"source": "https://clients2.google.com/service/update2/crx?response=redirect&prodversion=158.0.8127.18&acceptformat=crx3&x=id%3Dgcbalfbdmfieckjlnblleoemohcganoc%26uc",
"resolved_url": "https://clients2.googleusercontent.com/crx/blobs/ARGaeZK-C4RaWn7VtRTVx1_lum8D0NXWg9XXG8EO6kSqXockArpAWI84dAAc8SO5UVAVom2MsahblTkVat4B83R3UfySugRNH6fIFim53QqRoz5aReyeWMcbPnu50OMYoO2sAMZSmuWWLy93G3tY7ObpiljLZ5n9oIDSRA/GCBALFBDMFIECKJLNBLLEOEMOHCGANOC_10_0_305_0.crx",
"crx_sha256": "f168313dd905b33dabaae36c44967aadeb5672b80d5025ac88c6311b90da4447",
"setup_change": "Public CRX key added to manifest to retain the official ID when unpacked",
"manifest_sha256": "66c5653607411a181586884a415cb9bd7dc09cdee97c623ff829fbc04ee62edd"
},
"native_artifacts": {
"rustwright": {
"path": "node_modules/rustwright/rustwright.linux-x64-gnu.node",
"bytes": 5585072,
"sha256": "26ea8439f6f168fa7e1a68eee970705e1583eda9debf011b8f58bc1c16538131"
},
"rustwright-mcp": {
"path": "node_modules/@skyvernai/rustwright-mcp-linux-x64-gnu/bin/rustwright-mcp",
"bytes": 10090120,
"sha256": "552f458fe2655807c624f560df6c9643c02a61dda21c00e179c44581af31676d"
},
"biloba": {
"path": "node_modules/biloba-linux-x64/bin/bilobad",
"bytes": 10432674,
"sha256": "31ac33d42fe019d0fd8c8eae9a9b44876d1b77870c991ca1fc5aec956f6daeaf"
}
},
"finished_utc": "2026-11-10T22:19:07.758956+00:00"
}