We’re open-sourcing Browser Tools SDK: a small TypeScript package to give any AI agent a reliable way to control a real browser. With just a few lines of code, you can give any agent a production-ready browser harness
import { createAiSdkBrowserTools } from "libretto-browser-tools/ai-sdk";
import { LocalBrowserProvider } from "libretto-browser-tools";
const { tools } = createAiSdkBrowserTools(new LocalBrowserProvider());
const result = await generateText({
model: anthropic("claude-sonnet-4-5"),
tools,
prompt: "Go to Hacker News and tell me the top story",
});
We built the Browser Tools SDK because access to a browser is one of the most important tools of a productive agent, but we found many of the existing tools lacking. Using the insights we gained building Libretto, we were able to build the SDK so that it’s significantly more context and cost-efficient than other tools:We compared Browser Tools SDK against agent-browser, playwright-cli, and dev-browser on 26 live-site tasks with GPT 5.6 Sol (best results from 3 runs). Browser Tools tied for the best pass rate at 24/26 and came in about 55% cheaper per successful task than the next alternative ($0.106 vs $0.235) while also using far fewer tokens (1.45M vs 2.29M+). Benchmark methodology is in the repo.
The Browser Tools SDK only exposes 6 tools, of which only 2 are really important: `browser_snapshot` and `browser_exec`. The snapshot tool was designed from the ground up to be extremely context-efficient and provide agents the overview they need to know what to try next. The exec tool takes and executes raw Playwright code, of which the models have been trained on heaps of, and know how to use without much direction.
Works with AI SDK and Pi out of the box, plus a custom path for anything else. More frameworks are coming soon. You can also use any browser infra provider (Libretto Cloud, Kernel, Browserbase, etc.) or use `LocalBrowserProvider` to run Chromium locally (although that will have less anti-bot protections).
MIT licensed. Check out the docs: https://libretto.sh/docs/browser-tools/quickstart and join the Discord: https://discord.gg/NYrG56hVDt.
We’d love any and all feedback.
What make browser tools sdk more efficient than just using playwright-cli? With playwright-cli agent typically executes code written with playwright too.
Where do your sdk’s efficiency boosts come from?
with playwright-cli, the agent makes reasoning decisions between each cli call. with browser-tools, the agent can write big playwright code blocks that execute in one go meaning less turns and the agent can select exactly what it needs from the result.
I think the code version of playwright-cli is still supported but we just use the default instructions given by the cli which push it towards per cli call usage
[flagged]
Yeah to get any serious attention, publish the 26 tasks, and compare the session and tokens before you make such claims.
As stated on the website, full methodology and results are available here: https://github.com/saffron-health/libretto/tree/main/package...
Does it use the user login or open a headless broswer?
If you’re using a local provider, it can open browsers in headed mode so it can log in. For remote providers, you’ll need to ask the agent for the live url which will be a proxy feed of the page to log in
[flagged]