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, которую антибот-системы воспринимают как обычного человека, поэтому никаких капч и блокировок. Вы говорите, что вам нужно, обычным языком, а он сам ходит по сайтам, кликает, печатает и читает реальные страницы, чтобы всё сделать.
Это облачный сервис, куда надо регистрироваться, или я запускаю его сам?Запускаете сами: это self-hosted решение без собственного сервера. Есть два способа пользоваться — подключить его к своему ассистенту через 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, никакой аутентификации не будет; ключ, переданный через флаг, остаётся в истории команд оболочки, поэтому лучше использовать переменные окружения или файл .env; а кастомный --binary должен в точности совпадать с закреплённой сборкой, иначе запуск откажется стартовать. Также читайте правила сайтов, которые автоматизируете, и уважайте их лимиты запросов.
Работает ли это на macOS?В README описаны команды установки только для Windows (PowerShell) и Linux — macOS не упоминается. Вполне может заработать, но официального подтверждения нет.
Что уходит с моего компьютера при использовании?Три канала: сайты видят браузер как обычный Firefox; провайдер модели получает переписку и содержимое страниц под вашим ключом OpenRouter; GitHub видит обычные HTTPS-запросы при скачивании движка, базе данных GeoIP, если настроен прокси, и анонимный счётчик запусков. Сессии, профили и скриншоты остаются локально, и вы можете удалить их в любой момент.
С лицензией всё просто?Для текущих релизов — да: MIT. Но есть нюанс: всё, что распространялось до 2 сентября 2026 года, вышло под AGPL-3.0 и остаётся под ней, так что у старых версий есть copyleft-обязательства.
Как ему удаётся не попадаться антибот-системам?Он управляет стелс-Firefox так, как это делал бы человек — двигается указатель, нажимаются клавиши, — поэтому антибот-системы видят обычного пользователя, а не скрипт. Флаг --seed закрепляет стабильную личность браузера между запусками, а если задан --proxy, часовой пояс, язык и точка выхода подстраиваются под прокси.
Для каких задач он подходит?Для всего, где нужна настоящая автоматизация браузера: сам браузер, а не API, плюс человеческая оценка того, что на странице. Пример из README — отслеживание цен на билеты день за днём на сайте авиакомпании: кликать по календарю вместо ввода дат, считывать самую дешёвую цену за каждый день и сообщать, когда на дату нет мест, а не выдумывать число.
Могу ли я писать код для движка вместо того, чтобы болтать с ним?Да. Тот же пакет включает invisibleplaywright — Python-библиотеку с API как у Playwright, для тех, кто предпочитает код промптам, — и invisiblecore, который превращает seed в отпечаток, настройки браузера, прокси и геолокацию. Там же живёт MCP-сервер: 'aihawk' без подкоманды — это сервер, 'aihawk ui' открывает интерфейс.
Мои логины и куки переживут перезапуск?Только если вы их сохраните: передайте --profile-dir с папкой для хранения профиля — тогда логины и куки сохранятся между запусками. Профили и скриншоты хранятся локально, и вы можете удалить их в любой момент.
Creator
feder-cr
Size
118.3 MB
Stars
32.1K
Age
2y
Commits · 90 Days