Show HN: Browser Tools SDK – an optimal browser harness for agents

Posted by tanishqkanc 3 days ago

Counter11Comment6OpenOriginal

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.

Comments

Comment by opwizardx 3 days ago

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?

Comment by tanishqkanc 2 days ago

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

Comment by tanishqkanc 3 days ago

[flagged]

Comment by cognitiveinline 3 days ago

Yeah to get any serious attention, publish the 26 tasks, and compare the session and tokens before you make such claims.

Comment by tanishqkanc 2 days ago

As stated on the website, full methodology and results are available here: https://github.com/saffron-health/libretto/tree/main/package...

Comment by chriswunan 2 days ago

Does it use the user login or open a headless broswer?

Comment by tanishqkanc 2 days ago

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

Comment by kalpitrathore 2 days ago

[flagged]