Mlola product
Reliable browser use with a fast path.
MLola Browser Runtime executes real browser tasks without asking a frontier model for every click. Browser mechanics, safety, verification and recovery are deterministic systems; models are used only where judgement or generation is actually required.
npm install @mlola/browser-runtime
export TYPESAFE_API_KEY="..." # fast-path key: https://typesafe.ai
npx @mlola/browser-cli browser doctor
npx @mlola/browser-cli browser run \
--goal "Download my latest invoice" \
--url https://billing.example.com/invoicesOne step
One observation. One decision. One typed action.
The loop is deliberately boring: every step is observable, every effect is verified, and no model has direct browser authority.
Observe
One atomic observation per step: controls, labels, values, geometry and page state in a single pass — no screenshot in the normal loop.
Decide
One request to the fast path: the model picks one operation and its target from the list that is actually compatible.
Policy
Risk is classified in code — payments, deletions, sends, secrets. Risky actions need approval or a human takeover.
Execute
A typed action runs after freshness, visibility and occlusion checks. Model output never becomes a selector or code.
Verify
"Done" is a claim. Independent evidence — an artifact, URL, DOM state, runtime event — or a human confirms it.
Model routing
Four tiers, each with a job.
The frontier model is a fallback, not the default path. What decides cost is how many routine steps the fast path handles — and that is measured on every run.
Fast path
Routine decisions: operation and target. One request per step, latency measured every time.
Planner
Only for long-horizon work: laying out subgoals and handling dead ends.
Text helper
Used only when a value must be generated; otherwise your own wording is reused literally.
Human
Login, OTP, CAPTCHA and risky decisions: the runtime pauses and hands over control.
Safety
Boundaries are deterministic, not prompt requests.
- Typed actions only — no selector, coordinate or JavaScript ever comes from a model
- Risk can only be raised by target context; a model cannot lower it
- Passwords, OTP and card data: takeover required, never in model state or traces
- Instruction-like page content is quarantined, not negotiated
- Unknown-effect actions (submits, uploads) are never retried without re-observing
Evidence
Verifiable, recoverable, auditable.
- Every step is verified against the next observation
- Append-only local event log: replayable and auditable
- Deterministic eval corpus: core, matrix, security, regression, stress
- Every real bug is minimized into a permanent regression case
- Per-run metrics: fast-path share, latency, cost, human interventions
Status
V1 runs today. Some of it is still ahead.
V1 drives Chrome through Playwright: a runtime-managed profile, or attaching to a browser you already have open. The npm packages are published, along with the CLI and a local daemon.
The next phase is the extension runtime: an isolated agent window and explicit, permissioned tab borrowing. We do not list it as shipped before it ships.