Plain English in.Real browser out.
demo
Watch a run, line by line
One objective in, NDJSON events out — the same stream your CI and AI agents consume.
browserbash
human--agent NDJSON
$ browserbash run "Open https://news.ycombinator.com and store the top story title as 'top\_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 twelve seconds.

`$ npm install -g browserbash-cli`copy
try it
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.
Grab the top HN storyExtract a headingLogin with masked secretsScrape three pricesRun a markdown test
how it works
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
- `stagehand` — MIT OSS by Browserbase (default)
- `builtin` — Anthropic tool-use loop, auto-selected for cloud grids
- Ollama first — local, free, no keys
- Anthropic / OpenAI / Google via flags
- Any OpenAI-compatible server (vLLM, LM Studio)
2 · Engine
Who interprets the English?
3 · LLM
Who does the thinking?
The fully-free stack is the default.`ollama pull qwen3 && browserbash run "…"`Stagehand (MIT) + local Chromium + Ollama — zero cloud cost, no API keys.
features
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.
\--agent NDJSON mode
One JSON event per line on stdout. Exit codes 0/1/2/3 are the verdict — no prose parsing.
Markdown tests
Committable \*\_test.md files with @import composition. Result.md written after every run.
5 providers, one flag
Same objective runs on local Chrome or a cloud grid with --provider. Adding a vendor is one file.
Secrets stay secret
Variables marked secret are masked as \\\\\* in every log line, remark and summary.
CI-ready verdicts
GitHub Actions recipe included. The process exit code is the test result.
why browserbash
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.
case study
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 English`How we rewrote the suite, ran it with one command, and replayed it in the dashboard.
quick start
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