Price terms as published
Each line is the vendor’s own wording, split from the price capture checked on 2026-10-06. Nothing here is rounded, converted or re-worded — the full sentences stay in the review below. Lines that carry only a price continue the plan named on the line above, in the vendor’s own order.
| # | Plan / term | Checked |
|---|---|---|
| 1 | Free (MIT) | 2026-10-06 |
| 2 | bring your own OpenRouter API key | 2026-10-06 |
The short version
dots is a local application that gives an AI agent its own browser. The project’s one-line pitch explains the split it is fixing: “Every AI agent is a model and a browser. You can swap the model with one flag. The website still sees a headless, fingerprinted, obviously automated browser — and acts like it.”
What you get is two panels at http://127.0.0.1:8765: a conversation with a model of your
choosing on the left, and a real Firefox window the model drives on the right. It is not a
script that drives an installed Chrome — it is a Firefox build the project patches in C++,
so the fingerprint is decided inside the engine rather than painted over by JavaScript after
the fact. It runs without any browser automation framework: no navigator.webdriver flag, no
Chrome DevTools connection, no injected script, no automation namespace, and mouse and
keyboard events that move the way a person’s do.
The price of entry is deliberately small. The software is MIT-licensed and free; the only recurring cost is the OpenRouter API key you paste in, and the project’s own line on that is “You choose your model, you choose your price.” There is no subscription, no seat count, and no hosted version to sign up for.
How it works
One identity per seed. Launch dots with --seed my_customer_1, --profile-dir ./profile, and it derives a distinct browser identity from that seed and stores it on disk.
Come back tomorrow, same seed, same profile directory, and the same site sees the same
session — logins, cookies and all. Small per-seed variation in fingerprint is normal; the
same seed always stays consistent.
One person’s behaviour, not a script’s. Pointer and keyboard events are generated to look human — not random. The guide is explicit that “Do not assume that ‘slower’ automatically means ‘less detectable’”, and mentions replaying one agent view of a session.
It follows your exit. --proxy sets the egress IP and rewrites the locale to match —
timezone, language and currency all move with the proxy, not with your laptop. Pick a
residential exit in the target country and the fingerprint follows.
Your model, your key. The chat panel runs any OpenRouter model (the default named in the
README is openrouter/z-ai/glm-5.2), so the cost line is whatever you were already paying
per token. If tokens matter, the README suggests --no-video, because the agent’s own view
is screenshotted into the conversation.
An MCP server for your existing coding agent. The companion project
feder-cr/invisible_playwright_mcp is added with a one-line uvx command, which gives Claude
Code, Codex, Gemini CLI or any other MCP client this same browser: Open the landing page from the repo. Fill the demo form. Tell me the success toast.
What it is for
The README’s own hunt is a full research loop: a lead list, a catalogue, a storefront or a
piece of published research, with every scrape ending in a --csv and --report final.md —
“From lead list to shortlist to first draft.” That framing matters, because it positions dots
against headless scraping APIs and site-specific connectors rather than against general chat
assistants: it is for work where the blocker is the website refusing to serve the agent, not
for answering questions about it.
Pricing
| Item | Price | What it covers |
|---|---|---|
| dots | Free | MIT-licensed local app, stealth Firefox build, --seed identities, MCP server — no paid tier (verified from the repo and README on 2026-10-06) |
| Your model | Your own cost | An OpenRouter API key; you choose the model and the price per token |
| Tagged releases | None yet | The repo has no tags or releases, so installs run from main via uvx --from git+https://github.com/feder-cr/dots dots |
The numbers behind the download
All of this was read from the GitHub API, the repository README and a third-party directory on 2026-10-06:
- 2,620 stars and 438 forks in the repository’s first week — created 2026-09-29, last pushed 2026-10-03, 147 subscribers watching it.
- MIT licence, Python for the project, with the browser engine work living in the companion repositories rather than in this one.
- 0 open issues, 1 open pull request, no tags — a project that is young enough that
almost everything is still in
main. - The parent line is much bigger:
feder-cr/invisible_playwright_mcpsits at 31,774 stars (created 2024-08-04, MIT, pushed 2026-10-05) andfeder-cr/invisible_playwrightat 3,018 stars (created 2026-05-13). dots is the interface layer grown out of those. - Independent corroboration: SkillsLLM’s directory entry for the MCP server records 31,762
stars and 4,685 forks, mcpmarket lists the same server as “Top Premium” with no reviews yet,
and a GitHub Topics listing for
stealth-browser/anti-detect-browsershows dots at 2.6k stars updated 2026-10-03. On the practical side, a Ministry of Testing forum post from 2026-10-02 describes using the parentinvisible_playwrightserver with Claude to drive an accessibility test — the same engine, used by somebody who is not the author.
Who this is for
- Developers whose agents hit walls. If your agent gets a CAPTCHA, an empty search page or a Cloudflare challenge the moment it touches a real site, that is the problem this targets.
- People running multi-step browser work — lead lists, catalogues, published research — where each step needs the same logged-in identity.
- Anyone with an OpenRouter key already, since that is the only paid ingredient.
- Not for users who want a browser product. There is no installer-with-icon download, no
team plan, no dashboard, and no vendor to call; you run a
uvxcommand againstmain.
What we deliberately didn’t test
We have not run dots, pointed it at a site protected by Cloudflare or Turnstile, or
compared its fingerprint against a commercial anti-detect browser. Every capability line above
comes from the repository README, the GitHub API and the third-party listings as captured on
2026-10-06 — official-basis only, no hands-on claims, and we do not score it.
Three things a reader should weigh: the anti-detection claim is the project’s own and we did not verify it against any particular bot wall; at seven days old with no tagged releases, the command-line surface is still moving; and “one identity per seed” only stays private if the profile directory and proxy you pair it with do — the tool does not make those decisions for you.
Sources
- https://github.com/feder-cr/dots (README: pitch, install,
--seed/--profile-dir/--proxysemantics, model panel, MCP command; fetched 2026-10-06) - https://api.github.com/repos/feder-cr/dots (stars, forks, created/pushed dates, language, licence; fetched 2026-10-06)
- https://api.github.com/repos/feder-cr/invisible_playwright_mcp and https://api.github.com/repos/feder-cr/invisible_playwright (sibling repository counts; fetched 2026-10-06)
- https://github.com/topics/stealth-browser (directory listing showing dots at 2.6k stars, updated 2026-10-03)
- https://www.skillsllm.com/install-feder-cr-invisible-playwright-mcp/ (third-party star/fork snapshot for the companion MCP server)
- https://mcpmarket.com/server/feder-cr-invisible_playwright_mcp (third-party directory listing, no reviews)
- https://www.ministryoftesting.com/community/forums/forum/accessibility-and-inclusive-design/341071-using-claude-and-invisible-playwright-for-accessibility-testing (independent practitioner use of the companion browser engine, 2026-10-02)