Browser Runtime

Demo

Write a goal and get the exact command that runs it, then read what real runs produced. Execution happens on your machine: the runtime drives your browser with your keys, so nothing is sent to mlola.com and no public endpoint can be used to browse the web.

Example prompts

Choose one to load it into the playground. The proven prompts run where their requirements are met; the templates show the shape of a goal for your own application and never resolve as written.

Your prompt

Browser
Fast path
Run this on your machine
npx @mlola/browser-cli browser run \
  --goal "Download my latest invoice" \
  --url "http://127.0.0.1:4311/billing" \
  --headless --no-human --yes

Providers come from mlola.config.json, .env.local or the shell; check them with mlola browser config show before running. The first run opens its own Agent Window, and a tab of yours is borrowed only with your approval.

What a real run looks like

Output from runs on a developer machine, verbatim.

A real site: fetch a file from ftp.gnu.org

Goal Download the file hello-1.3.tar.gz · URL https://ftp.gnu.org/gnu/hello/

The file listing, where the runtime chose the file's link
Step 1: the file link is observed and chosen.
The same page after the download was verified
The end: the same page, because a download does not change it. The proof is the download event and the verified file, not a screenshot.
browser runexit 0
→ NAVIGATE https://ftp.gnu.org/gnu/hello/  ⤓ downloaded hello-1.3.tar.gz  ✔ verified: download evidence: 1 event(s), 1 artifactrun completed — verification verified · steps 2 in 3.5sartifacts  a1 hello-1.3.tar.gz (unknown, verified)maturity check: 3 runs, 3 completed, 2 steps each, artifact verified every time

Headless Chrome, local fixture

Goal Download my latest invoice · URL http://127.0.0.1:4311/billing

browser runexit 0
→ NAVIGATE http://127.0.0.1:4311/billing (55ms)step click → 6 (999ms, conf 0.85)  ⤓ downloaded invoice-2026-08.pdf (invoice)step done (311ms, conf 0.99)  ✔ verified: artifact evidence: a1 invoice-2026-08.pdfrun completed — steps 2 in 3.0s · fast path 100% · $0.0000

Your own Chrome, through the extension

Goal Download my latest invoice · URL http://127.0.0.1:4311/billing

browser runexit 0
browser   your own Chrome via the extension (extension 0.2.5, protocol 1.1)→ NAVIGATE http://127.0.0.1:4311/billing (63ms)  ⤓ downloaded invoice-2026-08 (2).pdf (invoice)  ✔ verified: artifact evidence: a1 invoice-2026-08 (2).pdfcleanup  closedTabs: ["t18","t19"] · returnedTabs: [] · orphanLocks: [] · errors: []

Jev as the fast path, with an OpenRouter key only

Goal Download my latest invoice · URL http://127.0.0.1:4311/billing

browser runexit 0
decisions  2x  openrouter:jev · typesafe/jev-1.13-20260917run completed — verification verified · steps 2 in 3.7sartifacts  a1 invoice-2026-08.pdf (invoice, verified)

No TypeSafe key in the environment; --fast openrouter uses the decisions endpoint.

Go further

Want a hosted runner instead? That needs an allowlisted, rate-limited service on our side, and the runtime would no longer use your own logins, so running locally stays the default.