| name | browser |
| description | Open and drive a REAL Chromium browser pane inside anu's tmux session. Use this whenever you need to actually SEE or interact with a web page — check a localhost dev preview after starting a dev server, verify a deploy looks right, read a docs/page that needs JavaScript, reproduce a UI bug, or fill out / click through a web form. Renders a real page (JS/CSS/Canvas/WebGL) via the kitty graphics protocol, in the same Chromium the human sees, so they watch your actions live. Drive it with the `browser` command or the browser_* MCP tools (open/navigate/screenshot/read/snapshot/eval/click/crop/type). |
browser: a real browser pane you can drive
anu can open a real Chromium browser as a tmux pane — not a text browser. The
page renders for real (JavaScript, CSS, Canvas, WebGL). You open one beside you and
drive it; the human watches it live in the same Chromium.
The same plugin also provides pdfpane, a native in-pane PDF previewer. Use
pdfpane <file.pdf> when the user wants a PDF visible inside anu without going
through Chromium's PDF plugin. It watches the file and repaints after rebuilds.
Inside the pane, use +/- to zoom, 0 for fit-page, w for fit-width,
h/j/k/l or arrows to pan, and n/p to change pages.
The one thing to know
browser [url]
browser navigate [%pane] <url>
browser back|forward|reload [%pane]
browser screenshot [%pane] [out]
browser read [%pane]
browser snapshot [%pane]
browser eval [%pane] <js...>
browser click [%pane] --role link --name "Docs"
browser click-id [%pane] <id>
browser fill [%pane] --role textbox --name "Search" --value "query"
browser crop-id [%pane] <id> [out]
browser wait-text [%pane] "Loaded" --timeout 10000
browser type [%pane] <text...>
browser downloads [%pane]
browser ls
browser close [%pane]
pdfpane [--here] file.pdf [page]
[%pane] is the pane id from browser / browser ls. Omit it when only one
browser pane is open — the command resolves the sole pane. Every action drives
the SAME Chromium the human sees, so they watch it happen.
How you actually use it
Use semantic state first, then pixels when the task is visual:
snapshot is the fast structured view. It returns visible controls and visual
elements with id, role, name, text, selector, and geometry.
- Prefer
click-id, fill-id, --selector, or --role ... --name ... over
free text. Free text is exact and fails when ambiguous instead of guessing.
crop-id, crop --selector ..., and screenshot are your eyes for plots,
canvases, layout, and anything whose meaning is visual.
- Use
eval for page/app state and wait-text|wait-url|wait-selector after
navigation or async actions.
p=$(browser http://localhost:5173 | grep -oE '%[0-9]+')
browser screenshot "$p" /tmp/preview.png
browser read "$p"
browser navigate "$p" https://staging.example.com
browser eval "$p" 'document.title'
browser snapshot "$p"
browser click "$p" --role link --name 'Pricing'
browser wait-url "$p" /pricing
browser crop "$p" --selector 'main' /tmp/pricing-main.png
Via MCP (if you have the browser_* tools)
Same capabilities as tools: browser_open (returns the pane id), browser_navigate,
browser_back, browser_forward, browser_reload, browser_screenshot (returns a
PNG path — read it to see the page), browser_read, browser_snapshot,
browser_eval, browser_click, browser_fill, browser_crop, browser_wait,
browser_type, browser_downloads, browser_list, browser_close.
Prefer these when available; they pass arguments without shell quoting.
Notes
- Engine: default is Helium; override with
--engine chrome|chromium|<path> or
ANU_BROWSER_ENGINE. It's a fresh, isolated, headless Chromium per pane (its own
profile) — not the human's logged-in browser.
- PDFs: prefer
pdfpane for local PDF preview panes, especially LaTeX watch
workflows. It uses macOS PDFKit by default and can use a compatible renderer via
ANU_PDF_RENDERER.
- Keybind: the human opens one with
prefix + b.
- Requires a kitty-graphics terminal (Ghostty/kitty) and tmux — already true in
an anu session. Each pane is isolated and torn down when closed.
- Close panes you opened when you're done (
browser close %NN).