AI NewsOpen sourceAnnouncement

feder-cr released an open-source agent-browser called dots the same day OpenAI announced Dots, and it reached 1,930 stars in under 24 hours

An MIT-licensed AI agent that runs its own browser reached 1,930 stars in under 24 hours on GitHub. The project, called dots and published by Federico Elanjian, uses a patched Firefox engine so a page cannot tell it apart from a human's browser, and lets any OpenRouter model drive it.

AI News

Editorial3 min read

LinkedInX
feder-cr released an open-source agent-browser called dots the same day OpenAI announced Dots, and it reached 1,930 stars in under 24 hours

Why it mattersA team building an agent that has to reach real websites can now try the browser problem separately from the model problem, from a Python installer, with no account other than an OpenRouter key.

An MIT-licensed agent-browser called dots hit 1,930 stars on GitHub in less than a day, according to the GitHub API record on Wednesday. The repository was created on 2026-09-29 by Federico Elanjian, who also maintains AIHawk, and the timing landed the same day OpenAI announced its own agent product of the same name at DevDay. The two are not related.

The pitch in the README is short. Every web agent is a model and a browser. The model is the part product teams keep swapping; the browser is what the website actually sees, and it is what usually gets the agent blocked. dots picks one browser and builds around it.

What the browser gives up to look human

The engine is Firefox with C++ patches. The README says fingerprint decisions happen inside the engine itself, so a page's JavaScript cannot read the automation layer through the DOM. There is no WebDriver flag, no DevTools protocol running, and no automation globals exposed to the page. A --seed argument produces the same fake person on every run, with screen, fonts, GPU, timezone and language agreeing with each other. The pointer travels across the page rather than teleporting to a coordinate, and keys are pressed one at a time, so the event sequence a website receives is what a person would produce. --profile-dir keeps logins and cookies between runs, and --proxy makes the exit location, timezone and language agree.

The model side is deliberately thin. Any model on OpenRouter works, and --model switches it. Nothing about the browser is tied to a specific provider, which is how the project separates the two decisions the README calls out at the top.

The example task, and where this fits

The README's example is a price check across five dates on a travel site, with instructions to say when a date has no availability and not to guess a number. The reason that example works is exactly the point of the project. On a task like this, the failures a working web agent runs into sit in the browser: the page never loads, a challenge appears, a session expires, or a click lands on the wrong element. All of those happen before the model gets asked anything.

For a team that has been trying to reach a real website with Playwright or Puppeteer through a coding agent and hitting bot walls, this is a separate primitive to try. There is a matching MCP server, invisible_playwright_mcp, which exposes the same browser to Claude Code, Codex, Gemini CLI or any other MCP client, so the browser can plug into a workflow a team already has.

The traction reads as real

The repository was created 21 hours before the star count was checked, which puts the growth rate at around 92 stars an hour on the first day. Federico Elanjian's earlier project AIHawk reached a much larger audience, so the account has followers who watch new work, and some of the burst is that. The MIT licence keeps the option open for a team to test it as a browser primitive rather than pull in a whole platform. Amazon's own block list for Meta's Muse agent, published in September, shows that websites are now writing block rules for named AI agents, so a browser that a website cannot pick out from a person's traffic is where a workaround has to start.

Source

  • Primary: feder-cr/dots, created 2026-09-29 by Federico Elanjian, MIT licence. Star count 1,930 as of 2026-09-30 20:35 UTC, from the GitHub API stargazers_count field.

This item was written by an AI system from the linked source. Reveneau is responsible for what it publishes.

Share
LinkedInX