Mobster

dev.mobster由 mobster.dev 发布v0.4.3更新于 Nov 6, 2026

Control iPhones and iOS simulators: read screens, tap, type and verify. Requires macOS and uv.

已验证STDIO仅桌面浏览器自动化开发者工具

概览

AI 生成的概览

Mobster 让助手通过 WebDriverAgent 在真实 iPhone 或 iOS 模拟器上读取屏幕、点击、输入并验证结果,敏感操作前会请求批准。

可以做什么
  • 把手机屏幕读成无障碍树快照,包含元素角色、标签、值和位置
  • 在设备上点击、输入和滑动,然后重新读取屏幕确认操作已生效
  • 按任务契约规划并执行多步任务,直到屏幕上出现完成证据或触及限制
  • 对发送、购买、发布、删除等操作请求批准,并对密码、验证码、卡号和密钥做遮蔽
  • 记录运行日志并持有设备锁,同一时间只允许一个运行控制手机
适用场景
适合让助手操作 iOS 应用:查看设置、填写界面,或执行可重复的多步流程,并希望每一步都有验证和审批把关时使用。
运行要求
在 macOS 上本地运行,需要 uv(PyPI 包 mobster-cli,通过 uvx 启动)。需要一个为 iPhone 或模拟器提供服务的 WebDriverAgent runner,以及用于模型调用的 Claude 或 OpenAI API 密钥。清单未声明任何认证方式或环境变量。
安装前请注意
该代理能读取消息并点击发送,因此可以代表你在真实手机上操作;发送、购买、发布和删除会经过审批环节,参考示例对所有审批都回答否。模型调用会产生费用(公开数据约为每任务 0.18 美元或 0.0057 美元,视配置而定)。屏幕文本被当作数据而非指令,密钥在存储前会被遮蔽,但据报告动作校验器仍会放过部分错误操作。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Mobster,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Mobster engine

The agent loop behind Mobster for Mac, and the research we measured it with. MIT.

An agent that drives your iPhone can read your messages and tap Send. This repository is the code that decides when: the observe, decide, verify, act loop, the WebDriverAgent driver it reads and acts through, and the safety core in front of every action. Next to it are the benchmarks, the evals and the results we published, with the losses printed next to the wins.

Mobster for Mac is the product built on this loop. It sets up your iPhone, shows it live, asks for your OK on a card, runs workflows on a schedule, adds itself to Claude Code, Cursor and Codex, and runs the loop with the speed and quality work that lives in the app. Get Mobster for Mac at mobster.dev.

Read the loop

PathWhat it is
mobile_agent/frontier.pyThe loop: one model plans every step; the guards, the task contract and the DONE gate
mobile_agent/contract.pyWhat the task asked for, and the proof on screen that each part was done
mobile_agent/engines.pyThe configuration the app and the benchmarks share (model, reasoning, limits), and the result summary
mobile_agent/drivers.py, state.pyWebDriverAgent's HTTP API: the accessibility tree as a snapshot, then taps, typing and swipes
mobile_agent/transport.py, gemini.pyThe transport under the model calls. The Claude, OpenAI and Gemini clients and the price table are in model_clients.py
mobile_agent/journal.py, task_policy.py, effect_ledger.py, secret_filter.py, system_dialogs.py, permissions/The safety core: the device lock and run journal, what counts as a send, buy, post or delete, the duplicate-action guard, secret masking, iOS's own prompts, the approval gate
mobile_agent/harness_api.pyThe seam to Mobster for Mac: registries and hooks, empty in this repository
examples/reference_loop.pyThe loop's API in the order a run uses it
mobile_agent/bench/, mobile_agent/evals/MobsterBench-iOS, the iOSWorld harness, the baselines, the paired A/B tools, VisionJudge's labelled set
mobile_agent/docs/, research/Design notes and dated research write-ups

How one step works

  1. Observe. The driver reads the app's accessibility tree from WebDriverAgent and turns it into a snapshot: each element's role, label, value and frame.
  2. Decide. The model gets the task, the plan so far and the screen as numbered rows, and answers with the next 1 to 6 actions.
  3. Verify. Before an action goes out, the loop checks it against the screen it was chosen on. After it, the loop reads the screen again and checks the action took effect.
  4. Act. The driver taps, types or swipes, and the loop goes back to step 1 until the contract's proof is on screen or a limit stops it.

Around every step, the safety core holds:

  • The loop asks before a send, a buy, a post or a delete (task_policy.py, permissions/), and an action whose outcome is unknown is never sent again (effect_ledger.py).
  • Every event is emitted before the next action is sent. Mobster for Mac writes each one to its journal (journal.py), and one run holds a phone's lock at a time.
  • Passwords, one-time codes, card numbers and keys are masked before anything is stored (secret_filter.py).
  • Text read from the phone is data. It never reaches the model as an instruction.

examples/reference_loop.py shows the API end to end on a fixed, read-only task: reading the iOS version in Settings. You bring a WebDriverAgent runner that serves your iPhone and a Claude or OpenAI key. It answers no to every approval.

Results

Every number names what was measured, on what, and when. The method and confidence intervals are in mobile_agent/docs/benchmarks.md and research/.

MeasuredResultLosses and gaps
iOSWorld dev_core split, this loop on Claude Sonnet 5.5 at low reasoning, simulators, 10 to 11 Oct 202653.8% official pass; agent time p50 103 s; about $0.18 a taskMulti-app tasks pass 31%. The best published result, 51.9%, is on all 133 tasks, so the two aren't directly comparable
iOSWorld, 16 unseen tasks, paired A/B, 28 Sep 2026Sonnet 5.5 50% (95% CI 28 to 72), $0.197 a task; Opus 5.5 56% (31 to 81); gpt-5.6-sol 50%No difference between the models is significant at this size
MobsterBench-iOS, 68 tasks, iPhone 15 Pro over USB, 24 Sep 202654 of 66 passed (82%, CI 71 to 89); p50 7.7 s a task; $0.0057 a taskMulti-app 2 of 6. One risky tap blocked and 2 unintended actions recorded. Not held out: fixes went in between passes (63%, 71%, 82%). No baseline ran
Where time goes, 346 runs, 22 Sep 2026The device side is about 61% of wall time, the model about 36%At least 17% is waiting for the screen to settle
FrameClock (the MJPEG stream as a settle clock), iPhone 15 Pro, 23 Sep 2026Mean navigation settle 1,122 to 996 ms with 0 premature settles in 480 of 32 premature still allows up to about 9%; Safari's pixel settle isn't measured
VisionJudge on 135 labelled public-domain images, 23 Sep 20261 error in 117 answers (99.1% precision)One rater; thresholds fitted on the same set; not phone screenshots
The action verifier, 34 attempts, 19 Sep 2026Correct actions allowed 14 of 14; wrong actions blocked 12 of 12It let through 6 actions it should have refused; repeating an Add is still unsolved

The September results predate 13 Oct 2026, when this loop became Mobster's only engine. The October iOSWorld numbers are this loop. The research notes describe modules that ship in Mobster for Mac (the frame clock, hedged calls, skills); their code isn't in this repository.

Tests

The tests need no phone, simulator, network or key:

sh
make venvmake test-backend

mobile_agent/tests/test_engine_boundary.py checks that the engine imports nothing outside its own modules, and runs the reference example on a scripted phone and model.

Third-party software

The engine installs jsonschema and referencing (MIT) and Pillow (MIT-CMU) from PyPI. It talks to WebDriverAgent (BSD-3-Clause, Facebook, Inc.) over HTTP; this repository holds none of its code. VisionJudge's images are CC0 or public domain, credited in mobile_agent/evals/vision/manifest.json.

License

MIT, copyright Radish Retail, LLC. See LICENSE. Report a vulnerability as SECURITY.md says.

来源:README.md,提交 738cecd

工具

0
SourceWeft 曾在隔离沙箱中以无凭据方式启动该软件包一次,以列出其工具,但未能完成:软件包安装失败。

版本历史

2
  1. v0.4.3最新Nov 6, 2026
  2. v0.4.0Oct 18, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分