The same tools for a web page and a native app
MCP-native, across eight engines and onto the host
browxai
The same tools for a web page and a native app. Eight engines in three families: five browsers, two native apps on an emulator or simulator, and a desktop Electron app. Everything past a browser starts off.
$ npm install -g browxai
Why it exists
browxai is not a wrapper over someone else’s MCP server. It owns its own transport to all eight engines it drives, so it owns the whole session lifecycle. Where a task leaves the browser, for a native app, a desktop app or your host machine, browxai follows it under a capability you switch on.
Token-efficient
snapshot() is a scoped, paginated, budgeted accessibility
tree. find() returns ranked candidates with evidence, not a
guess. Results stay small on purpose.
Native apps, same tools
Switch on native-device and find,
click and fill drive an app on an Android
emulator or the iOS Simulator. The tree comes off the app’s view
hierarchy, with the same refs a page gets. Android is verified against a
live emulator; the iOS lane is newer and needs a WebDriverAgent you run.
Emulators and simulators only, no real devices.
The Electron app you have open
An Electron app is Chromium, so one started with
—remote-debugging-port answers the same CDP browxai
already speaks. Attach to VS Code or Slack and snapshot and
find read its UI. Attach-only, navigate
refuses, and whether a port opens at all is up to the app and the
version.
Reaches past the tab
A web task leaves the browser. Switch a capability on and browxai writes
the real OS clipboard, or pulls a login and a TOTP code from 1Password,
Bitwarden, LastPass or oathtool. File IO is rooted at one
workspace directory. All three capabilities start off.
Safe by default
Capability-gated tools, an origin allow and block list, confirmation hooks, and a hard anti-wedge deadline on every call. Arbitrary JS, full response bodies, the OS clipboard, your password manager, the native engines, attaching to a desktop app and network mocking are all off until you opt in.
Model-agnostic
Any MCP client over stdio. Use it from Claude, Codex, or anything else that speaks the protocol. It is not tied to one model or one vendor.
Sessions and lifecycle
Isolated per-session contexts: persistent, incognito, or attach to a Chrome you already have open, on your desktop or on a plugged-in Android phone. Headed and headless. Pick the engine per session, so one server can hold a Chromium page and an emulator app at once. Config is driven over MCP, with no out-of-band setup.