invisible_dots README

The project's README from github.com/feder-cr/invisible_dots. As one markdown file: README.md.

AIHawk

AIHawk is an open-source AI browser agent that browses the web undetected: a web browsing agent on a stealth Firefox that anti-bot systems see as a normal person, so no captchas and no blocks. You say what you want in plain language, and it browses, clicks, types and reads the actual web to get it done.

FEATURED IN
Business Insider · TechCrunch · Semafor · Wired · The Verge · Vanity Fair · 404 Media


Two ways to use this browser agent

1. From your assistant, over MCP

Windows, in PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
$env:Path = "$env:USERPROFILE\.local\bin;$env:Path"
uvx invisible-playwright fetch

Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uvx invisible-playwright fetch

Then tell your assistant it exists.

Claude Code:

claude mcp add --scope user stealth -- uvx aihawk

Codex:

codex mcp add stealth -- uvx aihawk

Gemini CLI:

gemini mcp add --scope user stealth uvx aihawk

2. Standalone: the web UI

We bring the interface, you bring an OpenRouter key. Chat on the left, the live browser on the right.

Windows, in PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
$env:Path = "$env:USERPROFILE\.local\bin;$env:Path"
uvx invisible-playwright fetch
uvx aihawk ui --openrouter-key sk-or-...

Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uvx invisible-playwright fetch
uvx aihawk ui --openrouter-key sk-or-...

Then open http://127.0.0.1:8765 and type the same thing.


What to ask a web browsing agent

Anything that needs real web automation: a browser rather than an API, and a person's judgement about what is on the page.

Go to <paste the URL>. One way, Milan to Lisbon, economy, one checked bag, one adult. Check every date from the 12th to the 16th of next month, one at a time, and read the cheapest fare for each day. The date field is a calendar widget, so click the days rather than typing them. If a date has no availability, say so. Do not guess a number.

It drives the page the way a person would: the pointer moves, keys are pressed.

Options: proxy, profile, seed

A .env beside the command

Rather than retyping the key and the binary path, put them in a .env in the directory you run from:

OPENROUTER_API_KEY=sk-or-...
STEALTHFOX_BINARY=/path/to/firefox

It is read at startup, and on the way in it never overrides something already set, so the order is --flag > the environment > .env > the default. Only the directory you are in is read - there is no search upwards, so running from a subfolder cannot silently pick up a different key. The startup line names the variables it applied and never prints their values.

Passing --openrouter-key puts the key in your shell history, and on Linux in the process list. OPENROUTER_API_KEY in the environment or in a .env avoids both.

The wiki: AI browser-agent guides

The reading room around the agent lives in the wiki: the AI browser-agent landscape: browser-use, Operator-style and computer-use agents compared, what to check when an agent gets blocked, and what happened to OpenAI Operator, among others. Worked examples, transcripts and their outputs live in articles/.

The rest of the family: engine, core

The MCP server from option 1 ships inside this package: aihawk with no subcommand is the server, aihawk ui the interface. Its config blocks for clients that take a file, its settings and its tools are on the wiki page The MCP server.

Using it responsibly

This automates a browser under your control. Read the terms of the sites you point it at, respect their rate limits, and do not submit anything a human has not read.

Privacy Policy

AIHawk runs on your machine and has no server of its own. What leaves your computer, and to whom:

Nothing else is collected and nothing is sent to the author. Sessions, profiles and screenshots are stored locally, under AIHAWK_HOME if set and otherwise in the application-data directory of your system, and are yours to delete; nothing is retained anywhere else. Questions go to the issues.

License

MIT. Everything distributed before 2 September 2026 was released under AGPL-3.0 and stays under it.

invisible_dots (feder-cr/invisible_dots)

antidetect-browser
Searching Database…

What is this?AIHawk is an open-source AI browser agent that browses the web undetected: it drives a stealth Firefox that anti-bot systems see as a normal person, so no captchas and no blocks. You say what you want in plain language, and it browses, clicks, types and reads the actual web to get it done.
Is this a hosted service I sign up for, or something I run myself?Something you run yourself: it is self-hosted and has no server of its own. There are two ways to use it — plug it into your assistant over MCP, or run the standalone web UI with the chat on the left and the live browser on the right.
How do I get it running?Two paths. Over MCP, run the one-line install for your OS and then tell your assistant — Claude Code, Codex or Gemini CLI — that it exists. Standalone, run the command and open the local interface at 127.0.0.1:8765 (the default host and port), then type what you want in the chat.
Do I need an OpenRouter key to run it?For the standalone web UI, yes — you bring your own OpenRouter key via --openrouter-key, the OPENROUTERAPIKEY variable or a .env file. Over MCP there is no separate key: the assistant you plugged it into uses whichever model it runs. The model defaults to z-ai/glm-5.3-flash and can be changed with --model.
Anything I should watch out for when running it?A few things: exposing the interface beyond 127.0.0.1 gives you no authentication; passing the key as a flag leaves it in your shell history, so prefer the environment or a .env file; and a custom --binary must be exactly the pinned build or startup refuses. Also read the terms of the sites you automate and respect their rate limits.
Does it run on macOS?The README documents Windows (PowerShell) and Linux install commands only — macOS is not mentioned. It may well work, but there is no official word on it.
What leaves my computer when I use it?Three channels: the sites you visit see the browser as they would any Firefox; your model provider gets the conversation and page content under your OpenRouter key; GitHub sees ordinary HTTPS requests for the engine download, a GeoIP database when a proxy is set, and an anonymous per-launch counter. Sessions, profiles and screenshots stay local and are yours to delete.
Is the licensing straightforward?For current releases, yes: MIT. The catch is that everything distributed before 2 September 2026 was released under AGPL-3.0 and stays under it, so older versions carry copyleft obligations.
How does it stay undetected by anti-bot systems?It drives a stealth Firefox the way a person would — the pointer moves, keys are pressed — so anti-bot systems see a normal user rather than a script. A --seed pins a stable browser identity across runs, and when --proxy is set the timezone, locale and egress follow the proxy.
What kinds of tasks is it good for?Anything that needs real web automation: a browser rather than an API, plus human judgement about what is on the page. The README's example is checking flight fares day by day on an airline site — clicking through the calendar widget instead of typing dates, reading each day's cheapest fare, and reporting when a date has no availability rather than guessing a number.
Can I code against the engine instead of chatting with it?Yes. The same package ships invisibleplaywright, a Python library whose API is Playwright's, for writing code instead of prompts, and invisiblecore, which turns a seed into a fingerprint, preferences, proxy and geolocation. The MCP server lives there too: 'aihawk' with no subcommand is the server, 'aihawk ui' opens the interface.
Will my logins and cookies survive a restart?Only if you keep them: pass --profile-dir with a directory to store the profile in, and logins and cookies persist between runs. Profiles and screenshots are stored locally and are yours to delete.
Creator
feder-cr
Size
118.3 MB
Stars
32.1K
Age
2y
Commits · 90 Days