mobiumBLOCK
Mobile app automation for AI agents and humans: Android emulators and phones, iOS simulators and iPhones, driven from one Go binary through a CLI, an MCP server and five clients.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Mutatis mutandis.
Mobile app automation for AI agents and humans. Android emulators, Android phones, iOS simulators and iPhones, driven through one tool layer from a single Go binary with no runtime dependencies.
mobium launch com.example.shop && mobium map && mobium tap @e5 && mobium map
Mobium drives mobile apps the way Vibium drives browsers: a map → @ref → act loop that an agent can follow without learning a new model. It is Vibium's architecture with the browser swapped for a device.
What it is for: letting a coding agent check its own work on mobile. An agent that changed a login screen should be able to open the app, read what is actually on screen, tap through the flow and look at the result — without a person driving an emulator for it. People get the same commands.
- Quick start
- How it works
- Platforms
- App types
- Hybrid apps and WebViews
- Front doors
- Drivers for other platforms
- Documentation
- License
Quick start
Requirements:
- Go 1.24+, to install it — prebuilt binaries arrive with the first
release (SETUP.md)
- Android: platform-tools on
PATH(orANDROID_HOME, or
MOBIUM_ADB_PATH), and an emulator or a phone with USB debugging on
- iOS: full Xcode and a booted simulator — or an iPhone on a cable, with
an Apple ID (a free one works) added to Xcode
go install github.com/mobiumdev/mobium/cmd/mobium@latest mobium doctor # checks the environment; needs no device and no daemon
$ mobium devices emulator-5554 device (emulator, model: sdk_gphone64_arm64) $ mobium map @e1 Navigate up (button) @e2 Email address (input) @e3 password (p
0ec4c6737641OBSERVED · 2026-10-07Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add mobium -- npx -y [email protected]
{
"mcpServers": {
"mobium": {
"command": "npx",
"args": [
"-y",
"[email protected]"
]
}
}
}Trust audit
BLOCKgrade D · trust 65/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (3 observation(s))
- Network
- declared (4 observation(s))
- Shell
- declared (2 observation(s))
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (24)
func (d *Device) Eval(ctx context.Context, expression string) (string, error) {eval(expression: string): Promise<string>
syslog-relay-ios26.bin
reader.dex
ios26-pocketcasts-radiolab.xml.gz
.golangci.yml
if k := grid.Key("../../etc/x"); strings.ContainsAny(k, "/\\") {out=$($M download --device-path "../../etc" -o "$W/esc" $APPARG 2>&1) && fail "a path climbing out with .. was taken"
if !strings.Contains(string(mustRead(t, "../../docs/FLAGS.md")), "--bundle") {"symlink": {Name: "link", Typeflag: tar.TypeSymlink, Linkname: "../../etc"},{"files/x.txt", false, true}, {"files/../../x", false, false}, {"", false, false},curl -s "http://127.0.0.1:$port/json/list" | python3 -c '
curl -s -X PUT "http://127.0.0.1:$port/json/close/$id" >/dev/null
curl -s "http://127.0.0.1:$port/json/list" | python3 -c '
curl -s -X PUT "http://127.0.0.1:$port/json/close/$id" >/dev/null
mobium inspect on http://127.0.0.1:47311/819d02101356fef7563223333156107f/ — Ctrl-C to stop
return base64.b64decode(block["data"])
return base64.b64decode(data.get("data", ""))return base64.b64decode(data.get("data", ""))| UiAutomator2, on the device (port 6790, and its MJPEG stream on 7810) | **Every interface** (`*:6790`, `*:7810`) | **The LAN, on a real phone**: on the Pixel 8 Pro, from the Mac over Wi-Fi, the serv
screen and drive the phone — tap, type, open apps — with no credential; its
tap, type, open apps — with no credential, since the protocol has none.
Add to `PATH` (adjust for your user):
Gates applied: no_behavioural_pass.
0ec4c6737641full audit observations/trust-audit/mcp-server/mobiumdev__mobium.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-07 | 0ec4c6737641 | BLOCK | D | 65 | first audit |
Questions
What is the mobium MCP server?
Mobile app automation for AI agents and humans: Android emulators and phones, iOS simulators and iPhones, driven from one Go binary through a CLI, an MCP server and five clients.
Is mobium safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (65/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does mobium need?
No credential environment variables were found in its source, so it appears to need none.
How does mobium run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as mobium at 0.1.0.
How current is this page?
The grade is for one exact copy of the source (0ec4c6737641), read on 2026-10-07. The repository is watched and re-audited when it changes.