← Tools

Browser automation

jat-pilot

Drive your own browser — consent-scoped agent automation.

Install jat install pilot
Source

Agents that browse usually get their own throwaway browser. Sometimes the thing you need is behind your logged-in session — a gated download, a click-through terms page, an app only your account can reach. jat-pilot lets an agent drive your real browser, but only with your consent: it acts on a tab you explicitly enabled, and refuses every tab you didn't.

The model

Consent is the contract

Consent is enforced by jat-pilot itself, per tab. You run pilot enable <tab>; anything the agent tries on a tab you didn't enable exits with a refusal, not an action. It drives a dedicated browser profile on its own debug port — never your daily profile's zero-auth port — so the fleet can never reach a session you didn't hand it.

The verbs

Layered by altitude

Prefer the highest-level verb that works. Each rung drops closer to the metal — start at the top and only descend when you have to.

  1. 1 element visible text · labels · aria

    Preferred. Survives redesigns — no selectors to rot.

    pilot element click --text "Save"
  2. 2 page CSS selectors

    Drop down when the text collides or there's nothing to match on.

    pilot page fill "#email" you@example.com
  3. 3 js raw evaluate

    The escape hatch. Full page access — reach for it last.

    pilot js "return document.title"

A real testing driver

Keyboard and verification verbs make it more than a clicker — synthetic events most handlers ignore, real trusted input they don't.

jat-pilot key "Control+K"

trusted keypress via CDP — real shortcuts, not synthetic events

jat-pilot console --filter error

capture console + runtime errors, including ones already fired

jat-pilot assert --selector ".modal" --count 1

verification oracle — exit 0 if the DOM matches, 3 if not

Setup

jat install pilot
pilot setup && pilot tabs
pilot enable 0
tab 0 enabled — agent may now act on this tab

Part of the jatstack

jat-pilot is the browser jat's agents reach for when a job needs your real, logged-in session — the one no throwaway profile can stand in for. Pair it with jat-secret and an agent can resolve the credential and drive the flow it unlocks, all on your own machine. The parts assume each other; together they're worth more than the sum.

How the family fits together

Full verb reference and the consent model on GitHub.

View on GitHub