iatlas-browser turns the Chrome session you already use into a CLI, an MCP server, and a local HTTP runtime.
Instead of launching a fresh headless browser and rebuilding authentication, it works with your real tabs, real cookies, real page state, and real login context through a local daemon and a Chrome extension.
What that means in practice:
- use your current browser login state instead of replaying auth
- drive authenticated pages from the terminal, MCP clients, or local HTTP calls
- inspect network traffic and browser behavior from the same session you actually use
- package repeatable site workflows into reusable
siteadapters - keep the hard browser-sensitive work local, while using
miaoda.viponly for the narrower hosted API subset
Typical use cases:
- automate websites that do not have usable APIs
- query authenticated pages from an AI agent
- inspect network calls from real browser traffic
- build site-specific adapters on top of your live session
- expose browser control through MCP for agent runtimes
Install the local runtime:
curl -fsSL https://miaoda.vip/install.sh | bashStart the daemon and verify the browser path:
iatlas-browser daemon
iatlas-browser doctorRun the first commands:
iatlas-browser open https://example.com
iatlas-browser snapshot -i
iatlas-browser get titleIf the task depends on your own login state, tabs, or dynamic browser context, start with the local runtime. If the task is a public, server-safe fetch, use the hosted API on https://miaoda.vip.
Verified on March 15, 2026:
- hosted API on
https://miaoda.vipis live and usable - MCP server starts and responds correctly over stdio
- local daemon and extension handshake works
- direct browser commands such as
openandsnapshotwork against a real connected browser - local
site_runworks for adapters that are compatible with page-context execution
This was verified with real end-to-end calls, not just static code review.
Most browser automation stacks start from a clean browser.
iatlas-browser starts from the browser you already trust.
That difference matters most when the hard part is not HTML parsing but session continuity:
- company dashboards behind login
- admin panels and back offices
- social platforms with dynamic clients
- websites where the current page state matters as much as the raw DOM
- agent workflows that need to act inside the same browser context as the user
You can drive tabs and page interactions from the CLI:
iatlas-browser open https://example.com
iatlas-browser snapshot -i
iatlas-browser click @3
iatlas-browser fill @7 "hello world"
iatlas-browser press Enter
iatlas-browser screenshotNeed to call the same endpoint your browser session can already reach?
iatlas-browser fetch https://example.com/api/me --json
iatlas-browser eval "document.title"site adapters let you package repeatable website actions as reusable commands:
iatlas-browser site update
iatlas-browser site list
iatlas-browser site twitter/search "browser agent"
iatlas-browser site zhihu/hot
iatlas-browser site youtube/transcript VIDEO_IDYou can inspect what the browser is doing in real time:
iatlas-browser network requests --with-body --json
iatlas-browser console
iatlas-browser errors
iatlas-browser trace startThe project can run as an MCP server so coding agents and tool-using models can call it directly.
Most web automation tools assume one of these models:
- a fresh headless browser
- extracted cookies
- unofficial APIs
- HTML scraping
iatlas-browser takes a different path:
- use the browser session you already trust
- keep actions local on your machine
- use Chrome DevTools Protocol for stronger control
- expose results in a form that is usable by both humans and agents
This is especially useful for:
- websites with hard-to-recreate authentication
- tools behind company login
- social platforms with dynamic clients
- workflows where page state matters as much as raw HTML
curl -fsSL https://miaoda.vip/install.sh | bashThis script will:
- clone or update the repository into
~/.iatlas-browser/src - install dependencies
- build the project
- create local
iatlas-browserandiatlas-browser-mcplaunchers in~/.local/bin - run
iatlas-browser setup
npm install -g iatlas-browser
iatlas-browser setupOption A: use a release build
- Download the latest package from Releases
- Unzip it locally
Option B: build from source
pnpm install
pnpm buildThe unpacked extension output will be in extension/.
- Open
chrome://extensions/ - Enable
Developer mode - Click
Load unpacked - Select either:
~/.iatlas-browser/extensionafteriatlas-browser setup- or the local repo
extension/directory if building from source
Important:
- automated
--load-extensionstartup is blocked by branded Google Chrome on some machines - manual loading via
chrome://extensions/always works - for isolated automated testing, prefer Chromium or Chrome for Testing instead of the normal Google Chrome app
If Chrome is launched with remote debugging enabled, iatlas-browser can now run a stronger local subset even when the extension is not connected.
Start Chrome with:
--remote-debugging-port=9222Supported direct-CDP commands today:
opensnapshotclickhoverfilltypeevalget urlget titleget textscreenshottabtab newtab selecttab close
Important:
- this is a fallback path for lower-friction local use
snapshotworks in direct mode for page inspection, including--interactive,--compact,--depth, and--selector- direct-CDP snapshot refs are now persisted by the daemon, so later CLI or MCP calls can reuse them for
click,hover,fill,type, andget text - adapter commands and richer browser instrumentation still need the extension path
iatlas-browser doctornow detects common Chrome-family browsers such as Chrome, Canary, Chromium, Brave, and Arc, and prints remote-debugging launch hintsiatlas-browser doctorwill show whether direct CDP fallback is available
iatlas-browser daemonIn another terminal, verify the local setup:
iatlas-browser doctorExpected healthy output:
daemon reachable: OKextension connected: OK
If extension connected is NO, MCP browser tools and local /command execution will fail until the extension is attached.
iatlas-browser open https://example.com
iatlas-browser snapshot -i
iatlas-browser get titleFastest path:
iatlas-browser mcp-config cursorThat prints a ready-to-paste MCP block.
Default generated snippet files after iatlas-browser setup:
~/.iatlas-browser/mcp/generic.json~/.iatlas-browser/mcp/cursor.json~/.iatlas-browser/mcp/claude-desktop.json
Example configuration:
{
"mcpServers": {
"iatlas-browser": {
"command": "npx",
"args": ["-y", "iatlas-browser", "--mcp"]
}
}
}To verify MCP end to end after setup:
- start the daemon with
iatlas-browser daemon - confirm
iatlas-browser doctorshowsextension connected: OK - connect your MCP client using the generated config
- run
site_listorbrowser_snapshot
The project has been verified with the official MCP SDK client against the built stdio server.
The daemon is also a local HTTP API.
Fastest path:
iatlas-browser api-guideThat prints ready-made curl examples for:
GET /statusPOST /command
Generated example file after iatlas-browser setup:
~/.iatlas-browser/api/examples.sh
Hosted public API:
- docs page:
https://miaoda.vip/openapi/ - docs endpoint:
https://miaoda.vip/v1/docs - registration:
POST https://miaoda.vip/v1/register - usage:
GET https://miaoda.vip/v1/usage - browser open:
POST https://miaoda.vip/v1/open - hosted sites:
GET https://miaoda.vip/v1/sites/hosted - hosted site execution:
POST https://miaoda.vip/v1/sites/run
Main command families:
- navigation:
open,back,forward,refresh,close - interaction:
click,hover,fill,type,press,check,select - inspection:
snapshot,get,screenshot,eval - browser state:
tab,frame,dialog,wait - debugging:
network,console,errors,trace - platform:
daemon,status,stop,reload,doctor,setup,mcp-config,api-guide - adapters:
site,guide
Run help at any time:
iatlas-browser --help
iatlas-browser site --help
iatlas-browser mcp-config cursor
iatlas-browser api-guidesite is the project’s higher-level workflow layer.
An adapter is a small JavaScript unit that runs against a real website context and turns one web task into one command. Adapters can be:
- private and stored locally
- pulled from the shared community adapter collection
Default directories:
- private adapters:
~/.iatlas-browser/sites - shared adapters:
~/.iatlas-browser/bb-sitesfrommiounet11/lao-s
Useful commands:
iatlas-browser site update
iatlas-browser site search github
iatlas-browser site run github/issues owner/repoAdapter behavior note:
site_runbeing available does not mean every adapter will succeed on every site- some adapters work cleanly in page context, such as
wikipedia/summaryandduckduckgo/search - some adapters may fail because the target site blocks or alters browser-context fetch behavior
- hosted adapters on
miaoda.vipare separately curated for server-safe execution
To create a new adapter:
iatlas-browser guideThe system has four runtime layers:
CLI / MCP client
↓
Local daemon (HTTP)
↓
Chrome extension (SSE + command execution)
↓
Chrome / current user session
More specifically:
- the CLI or MCP server creates a structured request
- the daemon receives it on a local HTTP endpoint
- the extension stays connected to the daemon via SSE
- the extension executes the action through Chrome APIs and CDP
- the result is sent back to the daemon and returned to the caller
The current implementation also uses accessibility-tree snapshots so the page structure is easier for agents to reason about than raw HTML.
The project defaults to 127.0.0.1:19824 for local communication. This avoids common localhost IPv4/IPv6 issues in some environments.
Many commands support --tab <id> so concurrent workflows can target a specific tab safely.
Chrome Manifest V3 service workers can sleep. The extension includes reconnect and keepalive behavior, but if something looks wrong, run:
iatlas-browser doctorFor manual day-to-day usage, normal Chrome is fine once the unpacked extension is loaded.
For automated local verification from a clean profile:
- prefer Chromium
- or use Chrome for Testing
- avoid relying on branded Google Chrome startup flags for unpacked extension injection
This matters because some Chrome builds ignore --load-extension, which can make automation look broken even when the daemon, MCP server, and extension code are correct.
Minimal local acceptance test:
iatlas-browser doctor
iatlas-browser open https://example.com
iatlas-browser tab
iatlas-browser snapshot -i --tab <tabId>
iatlas-browser site run wikipedia/summary "Node.js" --json
iatlas-browser site run duckduckgo/search "mcp browser" --jsonMinimal hosted acceptance test:
curl -s https://miaoda.vip/v1/register \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com"}'
curl -s https://miaoda.vip/v1/open \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","mode":"metadata"}'
curl -s https://miaoda.vip/v1/sites/run \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"name":"github/repo","args":{"repo":"miounet11/lao"}}'From the repository root:
pnpm install
pnpm buildKey packages:
packages/sharedpackages/clipackages/daemonpackages/extensionpackages/mcp
Internal engineering notes:
docs/iatlas-browser-architecture-and-iteration-guide.mddocs/runtime-verification-and-release-checklist.md