Give your AI real hands in your browser
Your AI thinks once, and Dowser resolves every click, fill and read locally, in milliseconds. No screenshots through your model, nothing leaves your machine.
First principles
Every browser agent has to answer one question: which element did you mean?
An assistant has intent in words (“click add to cart”). A browser has state in a render tree. Something must translate one into the other. Firing the click is trivial; deciding which element is the entire job, and there are only four ways to do it.
Who grounds it
A human
The status quo. The AI tells you what to click, tab after tab, and you click it.
Your time, every action
Who grounds it
A model, per action
Ship a screenshot or page snapshot to the model, let it pick. Every popular agent works this way.
10,000+ tokens and seconds, every action
Who grounds it
Brittle selectors
Classic RPA: hard-coded XPaths and CSS. No language, breaks when the page changes.
Your engineering time, forever
Who grounds it
A local matcher
Dowser. Rank the page's own accessibility tree against the request, on your machine, no model.
Milliseconds. Zero tokens.
Where the money goes
The model in the loop is the cost. Not the model.
When the model is the element finder, every action pays a model’s price in dollars, seconds and context window. Cheaper models shrink the bill; nothing shrinks the round-trips or the snapshots piling up in your conversation.
Snapshot architecture, one action
snapshot the page ~18,000 tokens model reads it ~2 s model picks a target click snapshot again ~18,000 tokens ...
Dowser, one action
dowser_act "add to cart" matched: button "Add to cart" confidence: 0.98 6 ms done.
A 30-step task through a snapshot loop is roughly 300,000 tokens of page representations and thirty round-trips before the model has had a useful thought. Through Dowser it is thirty sentence-sized tool calls, about a thousand tokens total. These aren’t our numbers alone: the most popular snapshot tool’s own users report 25,000-token snapshots and multi-million-token days.
Time to find and click one thing on a page, shorter is faster
Typical figures from our own runs, not vendor benchmarks. Dowser and Claude in Chrome measured on the same page; Codex, Gemini and Perplexity estimated.
The insight
The web already answered the question. Decades ago.
Screen readers needed exactly this: natural-language access to a page by role and name. So every page ships a machine-readable semantic index of itself, the accessibility tree, and the web is obligated to maintain it. Using a frontier model to re-derive “which of these is the email field” on every click is re-solving, at inference prices, a problem the page has already answered in its own metadata. Dowser reads that index instead. Lookup, where everyone else does inference. That is why 6 ms versus 1,300 ms isn’t an optimization; it’s a different complexity class.
What Dowser ranks against
textbox "Email" textbox "Password" refused button "Continue" link "Forgot password?" checkbox "Remember me" unchecked button "Add to cart" ← 0.98
Proof, not promises
A real run, and a benchmark you can re-run.
Below is a screen recording of the extension on a live site, timings included. Underneath it, the numbers from our public 60-task grounding benchmark, with the code and the caveats.
Synthetic fixture pages, jsdom, tasks written by us. Snapshot-tool success is not simulated; only its per-action input size is measured. Methodology and limits in bench/README.md.
The same run, side by side
| Dowser | Claude in Chrome | |
|---|---|---|
| Time to find each target | ~6 ms | 1 to 2 s |
| Model calls per step | 0 | 1 |
| Tokens per step | 0 | ~1,500 |
| Leaves your machine | nothing | a screenshot |
Same three steps as the clip: find, type, open. The model-driven figures are typical for a screenshot-per-step agent.
Determinism
When it doesn’t know, it doesn’t guess.
dowser_act "delete" Not confident enough to act: confidence 0.21 is below 0.5. [e1] button "Delete draft" 0.94 [e2] button "Delete account" 0.71 [e3] button "Delete attachment" 0.43 Nothing was clicked.
A model reading a snapshot always produces an answer, including when it shouldn’t: the second red button probably means delete. A ranker with a real confidence score, the margin between the best match and the next, can do something a generative loop structurally cannot: refuse. Below the bar, Dowser returns the candidates, says why each matched, and acts on none of them. Deterministic execution isn’t just cheaper; it’s the difference between an agent that misfires quietly and one whose uncertainty is visible and handled.
The boundary
Webpages give Dowser data. They don’t get to talk to your agent.
The famous browser-agent vulnerability is a page that says “ignore your instructions and do X” landing in the model’s context dressed as content. Snapshot tools inherit it by construction. Keeping the page out of the model isn’t only a cost optimization; it is a channel separation, and channel separations hold when model judgment doesn’t.
Enters your model
- Structured candidates: role, name, confidence, position
- Reads you asked for, capped and labelled untrusted
- One-line action results
Never enters your model
- Screenshots. Pages are never rendered to pixels.
- Page snapshots or serialized DOMs
- Password, card and one-time-code fields, ever
The extension talks to exactly one endpoint: your own MCP server on 127.0.0.1. Tested, documented, checkable: the security model.
Where it’s the wrong tool
First principles cut both ways.
Canvas-only pages
A page with no accessibility tree gives the ranker nothing to rank. Dowser says so and returns low confidence; a vision tool reads those better.
Reproducible test suites
Dowser acts in your live browser. For CI runs that must be identical every time, Playwright is the right tool, and many people run both.
Twice-a-week use
If your assistant rarely touches the browser, per-action costs never compound and free snapshot tools are perfectly rational.
Setup
Two minutes. One click is yours, the rest is your AI’s.
There’s no installer to run and no settings to get right. You hand your assistant one line, press one button when it asks you to, and start giving it work.
- 1
Hand this line to your AI
Paste it into Claude Code or whichever assistant you use. It downloads Dowser, pairs the local piece to your machine and wires itself in. Nothing to configure.
Set up the Dowser browser extension for me: fetch https://dowser.click/install.md and follow the steps in it, then confirm Dowser is connected.
Message your assistant
Claude Code
Codex
Gemini CLI
Cursor
Windsurf- + any MCP assistant
- 2
Add it to your browser
Your assistant sends you the link; this press is yours, because browsers only let a person add an extension. It comes from the Chrome Web Store, so it is the reviewed build and it keeps itself updated.
chromewebstore.google.comDowserReal hands for your AI, in this browser.One click · updates itself · remove any timeAdd to Chrome
- 3
Then just ask
Your assistant reports back that Dowser is connected and your five free days have started. From here you talk, it clicks.
Add the blue one in medium to my cartdowser_act click "color blue" · 5 msdowser_act click "size medium" · 4 msdowser_act click "add to cart" · 6 msDone. Blue, medium, and it’s in your cart. Want me to head to checkout?
Rather do it by hand? It’s four lines.
Needs Node 18 or newer and a Chrome-based browser. Everything stays on your machine.
downloadcd ~ && curl -fsSL -o dowser.zip https://dowser.click/dowser-extension.zip && unzip -o dowser.zippaircd ~/dowser && npm install && npm run setuploadchrome://extensions › Developer mode › Load unpacked › ~/dowser/distconnectclaude mcp add --scope user dowser -- node ~/dowser/mcp/server.mjs
Full instructions, including Cursor, Windsurf, Codex and Windows
Simple monthly pricing
One flat price. Everything on.
- Works with Claude and any assistant that can use tools
- Clicking, typing, reading, moving between pages
- The glow and cursor so you can see what it's up to
- Every update, no tiers, no metered anything
- Five days free before you pay a cent
- Pay securely with Stripe
- Your key appears right away on the receipt page
- Paste the key to your AI to activate, or click the Dowser icon in your toolbar and paste it there
Questions
Questions you’re probably having.
Do I need to be technical?
Not really. Copy the line in the Setup section, paste it to your assistant, and it does the install. The extension itself is one click on the Chrome Web Store. Figure a couple of minutes start to finish.
Does my browsing go anywhere?
No. It runs on your computer and only talks to your own assistant, right there on the machine. The extension needs no account and nothing watches from a server; the only account is the optional one on this site for managing your subscription.
What happens after the trial?
Your assistant gets a note that the trial's up and where to buy. Nothing gets removed. Pop in a key and you carry on where you left off.
Which browsers?
Chrome, Brave, Edge, and the other Chrome-based ones. It's on the Chrome Web Store, and Brave and Edge install from there too. Your key works in any of them.
What if it clicks the wrong thing?
If it isn't sure, it won't click. It shows your assistant the likely matches and lets it pick, so a bad guess never actually happens.
Refunds and cancelling?
You get five days free before paying anyway. Cancel anytime and it simply stops billing. And if you subscribe and change your mind within 14 days, email us and we'll refund that payment.