BrowserBash - CLI that turns plain-English into real browser tests | Product Hunt

Plain English in.
Real browser proof out.

BrowserBash is the free, open-source validation layer for AI agents: plain-English tests, a real Chrome, and a verdict that is an exit code, not a vibe. Your coding agent plugs in over MCP with one line, and it all runs on free local models (Ollama), zero API keys.

$ npm install -g browserbash-cli

100% free to use. Install the CLI and automate in seconds — no signup needed to run. Create a free account for the dashboard: run history, video recordings and per-run replay.

Describe a test.
Watch AI run it.

BrowserBash turns one plain-English sentence into a real browser test — no selectors, no code, no flaky locators — and hands your AI agent a machine-readable verdict over MCP or NDJSON. Free local models (Ollama), zero API keys, no credit card. Open source, Apache-2.0.

$ npm install -g browserbash-cli

Free forever for the CLI — install and automate any site in seconds. A free account adds a dashboard with run history, video recordings and per-run replays.

Watch a run, line by line

One objective in, NDJSON events out — the same stream your CI and AI agents consume.

browserbash
$ browserbash run "Open https://news.ycombinator.com, find the story about Linux on the front page, and store its title as 'linux_story' and its points as 'points'" --agent --headless

Prefer to just watch a full run?

One sentence in, a real Chrome driven start to finish, green ✓ PASSED out, about fifteen seconds.

BrowserBash demo — a branded terminal running a plain-English browser test to a green PASSED verdict.
$ npm install -g browserbash-cli

Your coding agent builds it. BrowserBash proves it works.

Claude Code, Cursor, Codex or any MCP host plugs BrowserBash in with one line and gets three tools: run an objective, run a test file, run a whole suite. Every call returns a structured verdict, so "did my change break the checkout?" becomes a tool call, not a guess.

$ claude mcp add browserbash -- browserbash mcp

MCP server built in

browserbash mcp serves run_objective, run_test_file and run_suite on stdio. No extra install, no cloud relay, nothing leaves your machine.

Verdicts, not vibes

status, summary, extracted values, deterministic assertion results and cost land in one JSON object. Exit codes 0/1/2/3 for shell agents.

Deterministic assertions

Verify steps compile to real Playwright checks with no model in the loop — expected vs actual evidence on every failure, agent-judged checks clearly flagged.

NDJSON for everything else

Not on MCP? --agent streams one JSON event per line with a stable, additive schema. Same contract since v1.0.

Budgets your platform team will sign off

cost_usd per run, --budget-usd per suite: spend stops the suite, skipped tests are reported, nothing runs away overnight.

Warm runs cost nothing

The replay cache re-runs green tests with zero model calls, so agents can validate after every edit without burning tokens.

Pick an objective, watch Bo work

Replays of real CLI output. Copy any command and run it on your machine — that's the whole product.

Three layers, all swappable

1 · Provider

Where does the browser run?

  • local — your Chrome (default)
  • cdp — any DevTools endpoint
  • browserbase — cloud browsers
  • lambdatest — TestMu grid
  • browserstack — Automate grid

2 · Engine

Who interprets the English?

  • stagehand — MIT OSS by Browserbase (default)
  • builtin — Anthropic tool-use loop, auto-selected for cloud grids

3 · LLM

Who does the thinking?

  • Ollama first — local, free, no keys
  • Anthropic / OpenAI / Google via flags
  • Any OpenAI-compatible server (vLLM, LM Studio)
The fully-free stack is the default.ollama pull qwen3 && browserbash run "…"Stagehand (MIT) + local Chromium + Ollama — zero cloud cost, no API keys.

Built for agents and CI, friendly to humans

Open source first

Apache-2.0 CLI on an MIT engine. The default path costs nothing and phones no one.

Markdown tests, now with real assertions

Committable *_test.md files with @import, API steps for data seeding, and Verify steps that run as deterministic Playwright checks.

Log in once, reuse everywhere

browserbash auth save captures a login session; --auth replays it in every test. No more re-login per test, no rate-limit walls in CI.

Record and import

Click through a flow once and get a plain-English test. Or point browserbash import at your Playwright suite and review the generated twins.

Parallel, sharded, budgeted

run-all schedules by real memory, splits across CI machines with --shard, runs viewport matrices, and hard-stops at --budget-usd.

Monitor what you test

The same test doubles as a production check: browserbash monitor --every 10m alerts your Slack only when pass flips to fail.

Free. Open source. No lock-in.

Other AI browser tools want a credit balance or their cloud. BrowserBash is free and open source — run it with no account, no API keys, no meter. An account is optional, only for the dashboard.

Zero signup to run

npm install and automate in sixty seconds — no account needed for the CLI. A free dashboard account is optional, for run history and recordings.

Open source all the way down

Apache-2.0 with the full agent loop in the repo. Read it, fork it, fix it — not just the README.

Your models, your machine

Local Ollama by default — free, private, unmetered. Or bring an Anthropic or OpenRouter key and swap models with one flag.

Cloud-neutral by design

Browserbase, LambdaTest, BrowserStack or your own Chrome. Use the grid your team already pays for.

Private by default

Runs never leave your machine unless you add --upload. Nothing phones home on its own.

Built for CI, not demos

Natural-language E2E test automation with exit codes your pipeline already understands.

We pointed it at our own Playwright suite

The Testing Academy runs a production Playwright + TypeScript framework against TTACart. We rewrote its end-to-end checkout — login, cart, checkout, confirmation — as one plain-English file and ran it with a single command on a free local model. Same journey, session held to the end, recorded for replay.

6 page objects → 1 file

The full login-to-checkout journey, rewritten as one committable *_test.md — no selectors, no page objects.

Session held to the end

The AI agent keeps the logged-in session alive from the first step through the order confirmation screen.

$0 on a local model

Ran on a local Ollama model — no API key, no grid, nothing leaving the machine. Captured with --record.

Read the full case study →github.com/PramodDutta/AdvancePlaywrightFramework1x → plain EnglishHow we rewrote the suite, ran it with one command, and replayed it in the dashboard.
Open the case study →

The validation-layer release, just shipped

Everything below is live in the free CLI today: npm install -g browserbash-cli. Built in the open, shipped to everyone, no paid gate on anything that runs on your machine.

MCP server

browserbash mcp plugs the whole CLI into Claude Code, Cursor, Codex and any MCP host as three validation tools. One line, zero dependencies.

testmd v2: per-step execution

version: 2 files run step by step on one browser session: API steps seed data over plain HTTP, Verify steps assert deterministically, English steps drive the agent.

Deterministic Verify assertions

Nine grammar forms compile to real Playwright checks. A pass means the condition held; a fail ships expected-vs-actual evidence in run_end.assertions.

Saved logins (auth save / --auth)

Log in once in a visible browser, reuse the session across every run, suite and monitor. Stored 0600, origin-checked, secrets never printed.

Monitor mode + webhooks

browserbash monitor runs a test on an interval and alerts Slack or any webhook only on pass/fail changes. Warm cache makes it nearly token-free.

Budgets and cost visibility

cost_usd on every run, --budget-usd / --budget-tokens on suites: crossing the budget stops new launches, reports the rest as skipped and exits 2.

Sharding + viewport matrix

--shard 2/4 splits a suite deterministically across CI machines; --matrix-viewport runs every test per viewport with labeled results.

Playwright import

browserbash import converts your existing specs to plain-English tests heuristically and writes an honest IMPORT-REPORT.md for whatever it could not translate.

Flow recorder

browserbash record captures a click-through in a real browser and writes the test file. Password values never leave the page.

From zero to your first run in 3 steps

All free. No credit card, no paid API keys.

1

Install the CLI

One line from npm. Free and open source.

npm install -g browserbash-cli
2

Run with a free model

Local Ollama or a free OpenRouter model — no keys.

ollama pull qwen3
browserbash run "Open example.com and store the heading as 'h1'"
3

Create a free account

Connect once, then see every run, recording and replay on your dashboard.

browserbash connect --key bb_...
browserbash run "..." --record --upload
Create free account →