Skip to content

Documentation

Drive a real browser from the shell.

KOALINT installs a koalint executable on your PATH. Every command returns plain JSON and auto-targets the current deck's browser.

CLI reference

Every command.

koalint navigate --url <u>Open a page in this deck's browser.
koalint snapshotThe page as a numbered element map (10–100× cheaper than a screenshot).
koalint snapshot --mode diffOnly what changed since the last snapshot.
koalint click --ref NClick element [N] from the snapshot.
koalint type --ref N --text "…" --submitType into a field, optionally pressing Enter.
koalint find --query "sign in"Locate elements by text.
koalint readThe page as clean article text.
koalint scrape --url <u> [--full]Page → clean Markdown.
koalint map --url <u> [--limit N]List every URL under a site.
koalint crawl --url <u> --limit NScrape many pages → Markdown[].
koalint extract --url <u> --schema '{…}'A ready prompt → structured JSON.
koalint sessionsList open browser sessions.
koalint deck spawn <path> [--agent skip] [--prompt "…"] [--name N]Open a sibling deck with its own agent; prints the new deck id.
koalint deck send <id> <text>Type into another deck.
koalint deck read <id>That deck's screen, as text.
koalint deck wait <id> --for <regex>Block until the other deck prints a match.
koalint deck list | close <id>See or end the decks you launched.
For agents

The loop your agent runs.

Navigate, snapshot to see the map, act on a reference, snapshot again. References are content-addressed, so they survive the page changing under you.

# a typical agent turn
koalint navigate --url https://shop.example
koalint snapshot
→ [12] input “Search”, [13] button “Go”…
koalint type --ref 12 --text "boots" --submit
koalint snapshot --mode diff
→ 20 new results…
koalint scrape --full
Good to know
  • • Inside a deck, KOALINT_AGENT is set — omit --agent.
  • • The legacy aperture command still works as an alias.
  • • CAPTCHAs, passwords, 2FA, payment → KOALINT pauses for the human.
  • • Output is JSON, so pipe it straight into your model.