AIHawk is an anti detect browser and web browsing agent, open source, with an MCP server for coding agents: undetected, no captchas, no blocks. Tell it what you want in plain language.
FEATURED INBusiness 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"
Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
Then install it in your assistant.
Claude Code:
claude plugin marketplace add feder-cr/aihawk_mcp_server
claude plugin install aihawk@feder-cr
Codex:
codex plugin marketplace add feder-cr/aihawk_mcp_server
codex plugin add aihawk@feder-cr
Gemini CLI:
gemini extensions install https://github.com/feder-cr/aihawk_mcp_server
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 aihawk ui --openrouter-key sk-or-...
Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
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 aperson'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 atime, and read the cheapest fare for each day. The date field is a calendarwidget, so click the days rather than typing them. If a date has noavailability, 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
--openrouter-keyYour key, or theOPENROUTER_API_KEYvariable.--modelAn OpenRouter model id, orAIHAWK_MODEL. Defaults toz-ai/glm-5.3-flash.--proxyOptional.http://user:[email protected]:8080orsocks5://proxy.example.com:1080. Host and port are both required. Thetimezone, locale and egress follow it.--binaryAn engine binary you already have. It must be the build the sealpins, or startup refuses: this skips the download, not the version check.--seedAn integer. Same seed, same browser identity, every run.--profile-dirA directory to keep the profile in, so logins and cookiessurvive restarts.--headedShow the browser window. The interface shows you the page anyway.--host,--port127.0.0.1and8765. Changing the hostexposes an interface that has no authentication.
A .env beside the command
Rather than retyping the key and the binary path, put them in a .env in thedirectory 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 somethingalready 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 runningfrom a subfolder cannot silently pick up a different key. The startup line namesthe variables it applied and never prints their values.
Passing --openrouter-key puts the key in your shell history, and on Linux inthe process list. OPENROUTER_API_KEY in the environment or in a .env avoidsboth.
The wiki: AI browser-agent guides
The reading room around the agent lives in thewiki: theAI browser-agent landscape: browser-use, Operator-style andcomputer-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 inarticles/.
The rest of the family: engine, core
The MCP server from option 1 ships inside this package: aihawk with nosubcommand is the server, aihawk ui the interface. Its config blocks forclients that take a file, its settings and its tools are on the wiki pageThe MCP server.
- invisible_playwrightThe engine, as a Python library, for writing code instead of prompts. The APIis Playwright's.
- invisible_coreSeed to fingerprint to preferences, proxy and geolocation.
Using it responsibly
This automates a browser under your control. Read the terms of the sites youpoint it at, respect their rate limits, and do not submit anything a human hasnot read.
Privacy Policy
AIHawk runs on your machine and has no server of its own. What leaves yourcomputer, and to whom:
- The sites you visit see the browser, as they would any Firefox.
- Your model provider. The web UI sends the conversation and what the agentreads on the page to OpenRouter under your key. Over MCP, the client youplugged it into does the same with whichever model it uses.
- GitHub. The engine is downloaded from a GitHub release the first timethe server or the interface starts, and a GeoIP database is when a proxy isset. Each browser launch also fetches a one-line counter file from a GitHubrelease, which is how launches are counted: the request carries noidentifier and nothing of yours, and GitHub sees what any HTTPS requestshows, your IP address.
Nothing else is collected and nothing is sent to the author. Sessions,profiles and screenshots are stored locally, under AIHAWK_HOME if set andotherwise in the application-data directory of your system, and are yours todelete; nothing is retained anywhere else. Questions go to theissues.
License
MIT. Everythingdistributed before 2 September 2026 was released under AGPL-3.0 and stays underit.