AIHawk is an open-source AI browser agent: a web browsing agent with a real browser. 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 invisible-playwright-mcp
Codex:
codex mcp add stealth -- uvx invisible-playwright-mcp
Gemini CLI:
gemini mcp add --scope user stealth uvx invisible-playwright-mcp
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
--openrouter-keyYour key, or theOPENROUTER_API_KEYvariable.--modelAn OpenRouter model id, orAIHAWK_MODEL. Defaults toz-ai/glm-4.6.--proxyOptional.http://user:pass@proxy.example.com:8080orsocks5://proxy.example.com:1080. Host and port are both required. The timezone, locale and egress follow it.--binaryAn engine binary you already have. It must be the build the seal pins, 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 cookies survive restarts.--headedShow the browser window. The interface shows you the page anyway.--host,--port127.0.0.1and8765. 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: browser MCP server, engine, core
- invisible-playwright-mcp The MCP server from option 1. Tools only, no interface.
- 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.
License
MIT. Everything distributed before 2 September 2026 was released under AGPL-3.0 and stays under it.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aihawk-0.9.2.tar.gz.
File metadata
- Download URL: aihawk-0.9.2.tar.gz
- Upload date:
- Size: 2.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc3b6f60998ad971d961af199dd2f061707470cd85b2f2fcdd0d2571610360af
|
|
| MD5 |
4547ff69891c15a75ec5c1be667e96a4
|
|
| BLAKE2b-256 |
bd379ff800d60e9ec9fc06c9037f857faf4f1b541bb73fe5f8fc4dacc060a1e8
|
Provenance
The following attestation bundles were made for aihawk-0.9.2.tar.gz:
Publisher:
publish.yml on feder-cr/AIHawk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aihawk-0.9.2.tar.gz -
Subject digest:
dc3b6f60998ad971d961af199dd2f061707470cd85b2f2fcdd0d2571610360af - Sigstore transparency entry: 2742420711
- Sigstore integration time:
-
Permalink:
feder-cr/AIHawk@6244951716cf3adfbc77db627b06360aa92607be -
Branch / Tag:
refs/tags/v0.9.2 - Owner: https://github.com/feder-cr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6244951716cf3adfbc77db627b06360aa92607be -
Trigger Event:
push
-
Statement type:
File details
Details for the file aihawk-0.9.2-py3-none-any.whl.
File metadata
- Download URL: aihawk-0.9.2-py3-none-any.whl
- Upload date:
- Size: 33.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15266c1de1b0429aabc99781bd7557bc5e360c4a81c67905b361ec1f2e536b57
|
|
| MD5 |
fdc1bc28cd1cbf069e710468a96b6290
|
|
| BLAKE2b-256 |
dd1e99cf658c13a6c1038b7945cfb675e1419ad2e9a9de1a03f8150f1145c690
|
Provenance
The following attestation bundles were made for aihawk-0.9.2-py3-none-any.whl:
Publisher:
publish.yml on feder-cr/AIHawk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aihawk-0.9.2-py3-none-any.whl -
Subject digest:
15266c1de1b0429aabc99781bd7557bc5e360c4a81c67905b361ec1f2e536b57 - Sigstore transparency entry: 2742420781
- Sigstore integration time:
-
Permalink:
feder-cr/AIHawk@6244951716cf3adfbc77db627b06360aa92607be -
Branch / Tag:
refs/tags/v0.9.2 - Owner: https://github.com/feder-cr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6244951716cf3adfbc77db627b06360aa92607be -
Trigger Event:
push
-
Statement type: