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)

Searching Database…

这是干什么的?AIHawk 是一个开源的 AI 浏览器代理,它能不被察觉地浏览网页:它控制一个隐身版 Firefox,反爬虫系统看到的就像一个普通人在上网,所以不会遇到验证码,也不会被封。你用大白话说出想要什么,它就会浏览网页、点击、输入、读取真实网页,把事情办成。
这是需要注册使用的在线服务,还是我自己在本地运行的工具?是自己在本地运行的:它是自托管的,没有自己的服务器。有两种使用方式——通过 MCP 接入你的助手,或者运行独立的网页界面,左边是聊天窗口,右边是实时浏览器画面。
怎么把它跑起来?两条路。走 MCP 的话,先运行对应你操作系统的一行安装命令,然后告诉你的助手——Claude Code、Codex 或 Gemini CLI——它存在。走独立界面的话,运行命令后打开本地页面 127.0.0.1:8765(默认的主机和端口),然后在聊天框里输入你想要的东西。
运行它需要 OpenRouter 的密钥吗?独立网页界面需要——你得自备 OpenRouter 密钥,可以通过 --openrouter-key 参数、OPENROUTERAPIKEY 环境变量或 .env 文件提供。走 MCP 的话不需要单独的密钥:你接入的那个助手用它自己运行的模型。模型默认是 z-ai/glm-5.3-flash,可以用 --model 修改。
运行的时候有什么要注意的?有几点:如果把界面暴露到 127.0.0.1 之外,是没有任何身份验证的;用命令行参数传密钥会留在你的 shell 历史记录里,所以建议用环境变量或 .env 文件;另外自定义的 --binary 必须和指定的构建版本完全一致,否则启动会直接拒绝。还有,请阅读你要自动化的那些网站的服务条款,并遵守它们的访问频率限制。
能在 macOS 上运行吗?README 里只写了 Windows(PowerShell)和 Linux 的安装命令——没有提到 macOS。大概率能跑,但官方没有说法。
用的时候,我的电脑会有哪些数据发出去?三个渠道:你访问的网站看到的浏览器和普通 Firefox 没区别;你的模型服务商会在你的 OpenRouter 密钥下收到对话内容和页面内容;GitHub 会收到下载引擎的普通 HTTPS 请求,设置了代理时还有 GeoIP 数据库的请求,以及一个匿名的每次启动计数器。会话、配置文件和截图都留在本地,你可以随时删除。
授权协议有什么要注意的吗?就目前的版本来说没问题:MIT。但要注意的是,2026 年 9 月 2 日之前分发的所有版本都是 AGPL-3.0,而且会一直保持该协议,所以旧版本带有 copyleft(传染性开源)义务。
它是怎么做到不被反爬虫系统发现的?它像真人一样控制一个隐身版 Firefox——鼠标会移动、按键会被按下——所以反爬虫系统看到的是一个正常用户,而不是一段脚本。用 --seed 可以在多次运行之间固定一个稳定的浏览器身份,设置了 --proxy 时,时区、语言环境和出口 IP 都会跟随代理。
它适合做什么样的任务?所有需要真实网页自动化的活儿:要用浏览器而不是接口,还要对页面内容有人一样的判断。README 里的例子是在航空公司网站上逐天查机票价格——点击日历控件而不是直接输入日期,读取每天最便宜的票价,某天没票就如实报告,而不是瞎编一个数字。
我可以不聊天,直接写代码调用引擎吗?可以。同一个包还附带 invisibleplaywright——一个 API 和 Playwright 一致的 Python 库,用来写代码而不是写提示词;还有 invisiblecore,它把一个种子转换成浏览器指纹、偏好设置、代理和地理位置。MCP 服务器也在里面:'aihawk' 不带子命令就是服务器,'aihawk ui' 打开界面。
重启之后,我的登录状态和 Cookie 还在吗?只有你主动保存才会:传入 --profile-dir 并指定一个存放配置文件的目录,登录状态和 Cookie 就能在多次运行之间保留。配置文件和截图都存在本地,你可以随时删除。
Creator
feder-cr
Size
118.4 MB
Stars
32.2K
Age
2y
Commits · 90 Days