-
-
Notifications
You must be signed in to change notification settings - Fork 4.6k
running aihawk with claude desktop
Claude Desktop does not take the one-line command that Claude Code does; it reads its MCP servers from a JSON settings file. The exact block to paste and the file it goes in are documented once, in the server's README, and this page deliberately does not duplicate them - configs copied into wikis rot. What this page covers is everything around that block: what actually changes in Desktop once the server is in, what to try first, what the tool calls look like while Claude works, and the first-run issues that generate most of the questions.
One boundary before anything else, because it decides whether to read on: Claude Desktop runs on macOS and Windows, and AIHawk's engine ships for Windows and Linux, with macOS unsupported. The overlap is Windows. On a Mac, Desktop will start the server and the server will have no engine build to run; this combination is a Windows setup today.
Mechanically: you edit the config (Desktop's Settings, under Developer, has an Edit Config button that opens the right file), paste the server block from the README, then quit Desktop completely and restart it. The full restart is not superstition; Desktop loads MCP servers at startup, and the official MCP quickstart lists "restart Claude Desktop completely" as the first troubleshooting step for a server that does not appear.
After the restart, the same Claude you already talk to has a real browser. The
server exposes a flat set of tools in two families: session tools that manage
tabs (session_new_page, session_list_pages and friends) and page tools that
act on one (browser_navigate, browser_read_text, browser_snapshot,
browser_click, browser_type, browser_take_screenshot, and a few more).
Claude sees the list and decides when to use them; you do not invoke tools
yourself, you ask for outcomes.
Two things notably do not change. There is no new account and no new key: your existing Claude subscription is the model, the server brings only the browser, and the config block carries no secret. And nothing happens eagerly: no browser launches at startup, and nothing downloads until the first instruction that actually needs a page.
Start small and visible, because the first prompt doubles as the installation test:
Open https://books.toscrape.com/ and tell me the title and price of the first book on the page.
That one prompt exercises the whole path: server starts, engine found (or fetched, see below), page loaded, text read, answer grounded in the page. The example site is a sandbox built for practice, which is exactly what a first run is.
Then something with a decision in it:
On that same site, go to page two and tell me whether any book there is priced under ten pounds. Quote the cheapest one.
And when it is earning its keep, point it at your own work: a staging page or a local dev server is the best second session, because you know the ground truth. For anything form-shaped, the forms page is the honest account of what to expect.
Keep early instructions to one clear step. The agent behind these tools works observe-act-observe, and short instructions produce transcripts you can read when something goes wrong, which at the start is the point.
Desktop makes the agent loop unusually visible, and it is worth watching once.
When Claude decides to act, the tool call appears in the conversation by name
with its arguments - browser_navigate with a URL, browser_click with a
selector - and by default Desktop asks for your approval before each action
runs. You can allow individually, and you can deny; nothing touches the page
without a click from you. The tool's result then returns into the
conversation: page text for the reading tools, an image for
browser_take_screenshot.
Two consequences of that design are worth naming. First, the approvals are a
feature, not friction: a browser that acts on the real web under your account
deserves a human gate, and the gate is also where you catch a wrong step before
it happens. Second, the browser itself is headless by default, so there is no
window to watch; the screenshot tool is your eyes. If you want an actual
window, the server reads STEALTHFOX_HEADLESS=0 from its environment - set in
the same config block, and documented, like the rest of the server's
environment variables, in its README.
The server list itself lives behind the connectors control at the bottom of Desktop's input box; the MCP quickstart walks the exact clicks. If the server is missing from that list after a restart, the config did not load, and that is a syntax or path problem, not an AIHawk one.
In the order people hit them:
-
The first real prompt hangs. The engine is about a quarter of a gigabyte and is not fetched at install or at server start; it arrives on the first tool call that needs a page. On a slow connection that looks like Claude sitting silently on your instruction, and it can end in a timeout message that never mentions a download. Get it over with first, in a terminal where you can watch progress:
uvx invisible-playwright fetch
The engine is cached afterwards and shared with every other way into AIHawk.
-
The server never appears. Almost always the restart (must be a full quit, not closing the window) or JSON syntax in the config. Desktop writes MCP logs - a general
mcp.logplus a per-server log carrying the server's own errors - and the MCP quickstart documents where they live on each platform. Read the per-server log before guessing. -
uvxis not found. The config launches the server withuvx, which means uv must be installed, and installed where a GUI application can see it. A shell that findsuvxdoes not guarantee Desktop does, since GUI apps do not always inherit your shell's PATH; if the per-server log shows a not-found error, the server README's troubleshooting is the place to start. -
It is a Mac. No engine build, per the boundary at the top. Nothing to debug.
-
A page loads but the site pushes back. That is not a Desktop problem and usually not a browser problem; work through why agents get blocked before changing anything.
How do I add AIHawk's browser to Claude Desktop? Paste the server block from the server README into Desktop's MCP config (Settings, Developer, Edit Config), then fully quit and restart Desktop. The block and file path live in that README on purpose.
Do I need an API key for this? No. Your Claude subscription is the model; the server only adds the browser, and its config block contains no secret. The OpenRouter key belongs to a different way in, AIHawk's own interface, covered in using AIHawk without an API key.
Why does the first instruction take so long? The engine downloads on the
first call that needs a page, about a quarter of a gigabyte, and nothing warns
you. Prefetch it with uvx invisible-playwright fetch and the first
instruction behaves like every later one.
Why can I not see the browser? It runs headless by default; screenshots
through the browser_take_screenshot tool are the intended window. The
server's STEALTHFOX_HEADLESS=0 environment variable shows a real window if
you want one.
Does Claude act without asking me? By default, no: Desktop asks approval per tool call, and you can deny any of them. Treat that gate as part of the workflow, especially for actions with consequences; the position on submissions in the forms page applies here unchanged.
Does this work on a Mac? Not today. Desktop runs there, but the engine has no macOS build, so the working combination is Windows (or Linux through other clients).
All retrieved 2026-09-03.
- feder-cr/invisible-playwright-mcp, the server's README, for the config block, the tool list, the environment variables and the engine-download behavior.
- Connect to local MCP servers (modelcontextprotocol.io), for Desktop's Edit Config flow, the restart requirement, per-action approvals, the connectors UI and the MCP log locations.
- feder-cr/AIHawk, plus its README in this repository, for the platform support boundary and the shared engine cache.
See also: running AIHawk with Claude Code, running AIHawk's browser from Cursor, browser problem or model problem?, and the rest of Using the Agent.
From the AIHawk wiki. The config block lives in one README and is linked from here rather than copied, because a config duplicated into a wiki is a config that will one day be wrong in one of the two places.
Alternatives and Comparisons
- OpenAI Operator alternatives
- Open-source Operator-style agents
- Is OpenAI Operator still available?
- OpenAI Operator vs Claude computer use
- browser-use alternatives
- Choosing an AI browser agent
- Open-source AI browser agents
- Open-source computer-use agents
- What is an AI web agent?
- AI browser agents vs traditional scraping
- Cloud browser infrastructure for AI agents, explained
- Browserbase alternatives
- Firecrawl vs an AI browser agent
- Skyvern alternatives
- Stagehand vs browser-use
- Project Mariner is gone: what replaced it
- Manus alternatives
- Gemini computer use vs Claude computer use
- AIHawk, reviewed honestly by its own wiki
- AI browser vs AI browser agent: which one do you want?
When the Agent Gets Blocked
- Why does my AI agent get blocked?
- The timing signal AI agents give off
- Agent retry loops trip rate limits, not fingerprints
- Claude computer use detected as a bot
- browser-use getting blocked: what you can and cannot change
Using the Agent
- Getting an AI agent to fill out forms
- Which model to use with AIHawk
- Browser problem or model problem?
- Running AIHawk's browser from Claude Code
- Using AIHawk without an API key
- Extracting data to a CSV with an AI agent
- Monitoring a page for changes with an AI agent
- Running AIHawk's browser from Claude Desktop
- Running AIHawk's browser from Cursor
- Using an AI agent to hunt for apartments
- Getting website data into Google Sheets with an AI agent
- Using an AI agent to download invoices from portals
- AI agents for web research
- Using an AI agent to test your own website
- Running AIHawk's browser from Cline
- Posting to social media with an AI agent
- Posting to Facebook with an AI agent
- Posting to Instagram with an AI agent
- Posting to X with an AI agent
- Automating LinkedIn posts: read this first
- Appointment bots: what they are and what an agent can legitimately do