Skip to main content

Releases

TinySearch 0.6.4: Open-Source Browser Automation vs. ChatGPT Agent, Gemini, and Claude in Chrome

Published

In the last year, every major closed-source AI lab has shipped some version of “let the model drive a browser.” OpenAI folded Operator into ChatGPT’s agent mode. Google put a computer-use tool in the Gemini API and shipped Auto Browse in Chrome. Anthropic took Claude in Chrome to general availability in August. Perplexity’s Comet browser has been free to everyone since October. Amazon shipped Nova Act as a metered AWS service. Different products, same shape: a hosted model looks at a screenshot, decides what to click or type, and acts.

TinySearch 0.6.4 adds the same category of capability, browser interaction as a retrieval step, but built for a different job than any of the above. It’s not trying to book a flight or fill out a checkout form on your behalf. It’s there so an agent that already searches and scrapes can also get past a “load more” button, a cookie interstitial, or a client-side search box when static HTML isn’t enough.

What the closed-source players ship

Worth being precise about what “closed source” means in each case, since the products aren’t identical:

None of these are self-hostable, and all but Comet meter or gate the capability behind a subscription. That’s a reasonable business model for a general-purpose assistant that needs to act on your behalf across the whole web. It’s a much heavier commitment than what most agent-building work actually needs, which is usually just: this one page didn’t render as plain HTML, get me what’s on it.

What TinySearch 0.6.4 adds

browser_navigate opens a URL in a real browser and returns a compact accessibility-tree view of the page instead of a screenshot. browser_act then runs one action against that view: look to re-read the page, click or type against an element ref the model has already seen, wait_for a duration or a text change, or manage tabs. Both tools share the same Chromium install scrape_urls already uses, so there’s no second runtime and no extra download.

The scoping is deliberate. click and type only ever act on a ref the model observed in a prior view. There’s no tool that executes arbitrary code, fills a form blindly, uploads a file, or drags an element, that capability doesn’t exist in the tool surface at all, rather than being merely discouraged by a prompt. browser_storage_state_path lets a cookie banner get accepted once and stay accepted across later navigations, and browser_backend: "off" removes both tools entirely for anyone who’d rather not have them available.

None of that adds up to a computer-use agent in the OpenAI or Google sense. It adds up to a fallback for the cases scrape_urls can’t handle on its own: JavaScript-rendered content, a page hidden behind an interaction, a client-side search UI that has no server-rendered equivalent.

Why the constraint is the point, not a gap to close later

A general-purpose computer-use agent has to be trusted to click “purchase,” “delete,” or “send” without a human confirming each step, because that’s the product. That trust model needs the safety classifiers, virtual sandboxing, and confirmation prompts that OpenAI, Google, and Anthropic have all built out, and it’s a meaningful reason those products are hosted and metered rather than something you’d run yourself.

TinySearch’s browser tools were built for a narrower job: get the model past whatever is standing between it and the text it’s trying to read. Ref-based actions, restricted to what a prior view actually showed, keep that job’s blast radius small enough to self-host without needing a matching safety stack. It’s the same design instinct behind related_links in 0.6.0: let the model decide, but bound what it’s deciding between.

TinySearch 0.6.4 ChatGPT agent Gemini computer use Claude in Chrome Perplexity Comet
Self-hostable Yes No No (you host the harness, not the model) No No
Cost Free Plus/Pro/Business subscription Metered API, or Pro/Ultra for Auto Browse Included in any paid Claude plan Free
Action target A ref the model already observed Full-page autonomy toward a goal Full-page autonomy toward a goal Full-page autonomy, auto-approved when low-risk Full-page autonomy on your live tabs
Arbitrary code execution or blind form fill Not possible Not the intended use, but broad action surface Not the intended use, but broad action surface Not the intended use, but broad action surface Not the intended use, but broad action surface
Built for Retrieval: reading a page an agent already decided to visit General computer-use tasks General computer-use tasks General computer-use tasks General computer-use tasks

Where this fits with search and scrape

The recommended order hasn’t changed: search for discovery, scrape_urls for pages you already have a URL for, and the browser tools only when a scrape comes back thin or the page needs an interaction first. If you’re new to that flow, the TinySearch overview covers why raw HTML scraping is the default and why raw webpages make bad context even once you can render them.

Upgrading

Terminal window
pip install --upgrade tinysuite-search

The browser tools ship enabled by default using the bundled Chromium, the same one scrape_urls already installs. Nothing about search or scrape_urls changes. Set browser_backend to "off" to drop both tools from the tool list, or point browser_cdp_url at a browser you run yourself if you’d rather not use the bundled one. The configuration reference has the full list of browser settings, including timeouts, response size limits, and the external-CDP path.