AIHawk is a free, open source ai development platforms project written in Python and released under MIT. It has 31,619 GitHub stars, 4,664 forks and 1 open issues, and was last pushed 4 hours ago. On this registry it ranks #25 of 61 tracked projects in AI Development Platforms, with 5 head-to-head comparisons available. It gained 24 stars over the last 3 tracked days.

What is AIHawk?

AIHawk is an open-source, MIT-licensed Python MCP server that gives coding assistants and standalone users an anti-detect browser for undetected web browsing, AI web scraping, and computer-use agents, driven by plain-language instructions.

What it is

AIHawk is a browser agent that lives in the MCP (Model Context Protocol) ecosystem. It registers as an MCP server named stealth so hosts such as Claude Code, Codex, and Gemini CLI can drive a real browser on the user's behalf. Rather than calling a site's API, the agent operates the page the way a person would: the pointer moves, keys are pressed, and calendar widgets are clicked instead of typed into. It ships both as an MCP server for an existing assistant and as a standalone web interface, with the interface on the left and a live browser view on the right.

The concrete problem it solves is blocked, captcha-walled, and API-less automation. Sites that expose no API, that detect headless clients, or that gate data behind interactive widgets are the target case. The README frames the distinction directly: this is for work that needs "a browser rather than an API, and a person's judgement about what is on the page." The repository topics reinforce the use: job-hunting, job-search, and lead-generation sit alongside browser-agent and computer-use.

Key capabilities

  • Functions as an MCP server, registered with claude mcp add --scope user stealth -- uvx aihawk, codex mcp add stealth -- uvx aihawk, or gemini mcp add --scope user stealth uvx aihawk.
  • Provides a standalone web UI launched with uvx aihawk ui --openrouter-key sk-or-..., serving at http://127.0.0.1:8765 by default.
  • Reproduces browser identity across runs with --seed, an integer, so the same seed yields the same browser identity every time.
  • Persists sessions through --profile-dir, a directory that keeps logins and cookies alive across restarts.
  • Routes traffic through --proxy, accepting http://user:[email protected]:8080 or socks5://proxy.example.com:1080; host and port are both required, and timezone, locale, and egress follow the proxy.
  • Selects the driving model with --model or AIHAWK_MODEL, defaulting to z-ai/glm-5.3-flash on OpenRouter.
  • Accepts a pre-existing engine binary via --binary, but the build must match the one the seal pins or startup refuses, so this skips the download and not the version check.
  • Reads configuration by strict precedence, --flag over the environment over a .env over the default, using OPENROUTER_API_KEY and STEALTHFOX_BINARY; only the current directory is read, with no search upwards.

Who uses it and how

  • Job seekers automating application workflows, the use case the job-hunting and job-search topics name and the one press coverage documented at a scale of thousands of applications.
  • Lead generation and prospecting teams, reflected in the lead-generation topic, where target sites rarely offer a usable API.
  • Developers already working inside Claude Code, Codex, or Gemini CLI who want browser control exposed as an MCP tool rather than written as a bespoke script.
  • Researchers and analysts performing structured lookups across interactive pages, such as the README example of checking every fare date from the 12th to the 16th of a month, one date at a time, without guessing a number.
  • Automation where the browser window should be visible for inspection, using --headed.

Getting started

Install uv from the Astral script, run uvx invisible-playwright fetch to obtain the browser engine, then either add the server to an assistant with claude mcp add --scope user stealth -- uvx aihawk or start the standalone interface with uvx aihawk ui --openrouter-key sk-or-.... An OpenRouter API key is required, supplied by flag, OPENROUTER_API_KEY, or a .env file in the working directory.

How it compares

The facts for this entry name no comparable or paid products that AIHawk replaces. The assistants it integrates with, Claude Code, Codex, and Gemini CLI, are MCP hosts and consumers of the server rather than alternatives to it. On the evidence provided, it stands alone in this registry.

When to use it — and when not to

A self-hoster must supply and pay for an OpenRouter key, fetch and pin a matching browser engine binary, and manage a profile directory if logins and cookies need to survive restarts. It is a poor fit for anyone expecting a hosted service with bundled model access, or for tasks that a plain HTTP request already answers. One limitation deserves emphasis: changing --host away from 127.0.0.1 exposes an interface that has no authentication, so remote binding requires an external access-control layer.

project readme (upstream, from github) — read inline
AIHawk

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 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 ``. 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

  • --openrouter-key Your key, or the OPENROUTER_API_KEY variable.
  • --model An OpenRouter model id, or AIHAWK_MODEL. Defaults to z-ai/glm-5.3-flash.
  • --proxy Optional. http://user:[email protected]:8080 or socks5://proxy.example.com:1080. Host and port are both required. The timezone, locale and egress follow it.
  • --binary An engine binary you already have. It must be the build the seal pins, or startup refuses: this skips the download, not the version check.
  • --seed An integer. Same seed, same browser identity, every run.
  • --profile-dir A directory to keep the profile in, so logins and cookies survive restarts.
  • --headed Show the browser window. The interface shows you the page anyway.
  • --host, --port 127.0.0.1 and 8765. Changing the host exposes 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 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.

  • invisible_playwright The engine, as a Python library, for writing code instead of prompts. The API is Playwright's.
  • invisible_core Seed to fingerprint to preferences, proxy and geolocation.

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:

  • The sites you visit see the browser, as they would any Firefox.
  • Your model provider. The web UI sends the conversation and what the agent reads on the page to OpenRouter under your key. Over MCP, the client you plugged it into does the same with whichever model it uses.
  • GitHub. The engine is downloaded from a GitHub release by uvx invisible-playwright fetch, and a GeoIP database is when a proxy is set. Each browser launch also fetches a one-line counter file from a GitHub release, which is how launches are counted: the request carries no identifier and nothing of yours, and GitHub sees what any HTTPS request shows, 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 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.

Frequently asked questions

Is AIHawk free to use?

AIHawk is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does AIHawk do?

Anti detect browser and web browsing agent: an open-source MCP server for undetected browsing, AI web scraping and computer use agents. No captchas.

What is AIHawk written in?

AIHawk is primarily written in Python. Its source is publicly available at https://github.com/feder-cr/AIHawk, and it has 31,619 GitHub stars.