semantic snapshots ยท stable @refs

A browser CLI
built for agents.

Turn any web page into a compact semantic snapshot with stable @refs, then click, fill, and read it from your shell. No Playwright, no DOM dumps, minimal context.

br: login demo
$ br open https://yeswehack.com/login
opened https://yeswehack.com/login

$ br snap --compact
Sign in | https://yeswehack.com/login
@1 input  Email
@2 input  Password
@3 button Sign in
@4 link   Forgot password?

$ br fill @1 "hunter@yeswehack.com"
$ br fill @2 "$PASSWORD"
$ br click @3
ok navigated #dashboard
the model

One page, four steps.

Everything in br is this loop. Snapshot, act on refs, snapshot again.

๐ŸŒ browser
โ†’
๐Ÿ“ธ snapshot
โ†’
๐Ÿ”– @refs
โ†’
โšก actions
who it's for

Same page. Three ways in.

If it renders in a browser, br turns it into commands: for an agent, a human, or a bug hunter.

๐Ÿค–

AI agents

A browser without the DOM firehose. Compact snapshots, stable handles, deterministic exit codes, --json on everything.

br batch << JSONL
{"command":"open", ...}
{"command":"snapshot", ...}
{"command":"click","target":"@4"}
JSONL
๐Ÿง‘โ€๐Ÿ’ป

Humans

A browser you can pipe. Inspect a page, fill a form, grab a screenshot, or read it inline via Kitty graphics.

br open news.ycombinator.com
br snap --compact
br view    # inline image
br live github.com
๐Ÿ›ก๏ธ

Bug bounty

Scriptable, headful triage: map inputs, read client-side state, run JS in page context, pipeable into recon. Authorized targets only.

br eval 'document.cookie'
br attr @5 href
br --backend chrome cdp ...
br screenshot finding.png
surface

A small command set.

Everything you need to drive a page, nothing you don't.

open <url>navigate to a page
snap --compactsemantic snapshot + @refs
click <ref>click an element
fill <ref> <text>focus, clear, type
find <text>search the current refs
eval <js>run JS in page context
viewrender viewport inline
live [url]terminal browser (humans)
batchJSONL, one op per line
--backend chromepick the engine (CDP)
install

Up in a minute.

Needs Zig 0.16+ and Bun 1.4+ (with Bun.WebView).

# with Nix (recommended)
nix develop
zig build
export BR_BUN="$(command -v bun)"
./zig-out/bin/br open https://news.ycombinator.com

# then snapshot and act on @refs
br snap --compact
br click @1