Browser Use, built on Pi Mono. In TypeScript.
Pi Mono + a persistent V8 REPL + raw CDP. The agent writes JavaScript, controls Chrome, and builds the helpers it needs as it goes.
Your task → Pi Mono → persistent V8 REPL → raw CDP → Chrome
↑ │
└──────── AX tree + screenshots ──────┘
The programmability of Browser Harness, with sessions, saved logins, streaming and typed results. One SDK you can put in your app.
npm install @browser_use/pi
# or: pnpm add @browser_use/pi
# or: bun add @browser_use/pi
export OPENROUTER_API_KEY=...
export BROWSER_USE_API_KEY=...import { Browser, BrowserUse } from '@browser_use/pi';
const agent = await BrowserUse.create({
model: 'openrouter/openai/gpt-5.6-luna',
reasoning: 'xhigh',
browser: Browser.cloud({ apiKey: process.env.BROWSER_USE_API_KEY! }),
workspace: './work',
});
try {
const result = await agent.run('Find the top story on Hacker News.');
console.log(result.status, result.text);
await agent.followUp('Summarize the comments.');
} finally {
await agent.close();
}Save as agent.ts. Run with node agent.ts or bun agent.ts. Uses Browser Use Cloud; no local Chrome installation needed.
Node 22.19+ · Bun 1.3.14+. Bun also needs Node for the V8 worker.
- Models: upstream Pi's model catalog and transports, with custom providers supported. Model capabilities and provider access vary. Models
- Sessions: follow-ups, saved logins, persistent workspaces, cloud browsers or your own Chrome. Sessions
- Control: streaming, hooks, typed results and compaction. Cap steps, time or cost and keep partial work. API
- Show the work: interaction highlights, recordings and GIF exports. Examples
Quickstart · Browser primitives · Python · Historical benchmarks
JavaScript runs in a killable worker with filesystem and network access. Use an isolated machine for untrusted tasks. Anonymous run counters are enabled; disable with telemetry: false or DO_NOT_TRACK=1. Telemetry
npm test
npm run check
npm run docs:build
npm run test:python