Fonino

io.github.Fonino由 GitHub 账号 Fonino 发布v0.1.0更新于 Nov 7, 2026

Let your AI agent use your real iPhone or Android phone, with your OK before anything is sent.

已验证STDIO仅桌面浏览器自动化沟通与协作

概览

AI 生成的概览

让 AI 代理操控你真实的 iPhone 或 Android 手机:查看屏幕、打开应用、点击、滑动和输入,发送前需你批准。

可以做什么
  • 列出并占用已连接的手机,每台设备只允许一个代理
  • 截取屏幕截图并读取界面元素
  • 在手机上点击、滑动、输入并打开应用
  • 读取短信、发送短信、等待回复,并在登录时把手机交还给你
  • 对高风险操作暂停并等待你一键批准
适用场景
适合让编程代理直接操作你的真实手机,例如给某人发短信、在应用内导航或查看屏幕内容,同时对发送、发布、购买和删除等操作保留人工批准环节。
运行要求
在搭载 Apple 芯片、macOS 15 或更高版本的 Mac 上本地运行,需要 Node 22.18 或更高版本。iPhone 需要 USB 辅助程序(Xcode、用于签名的 Apple ID、开发者模式、数据线)或 iPhone Mirroring(macOS 15+、iOS 18+、同一 Apple 账户,欧盟地区不可用);Android 需要开启 USB 调试并安装 adb。HTTP 传输需使用命令行生成的 Bearer 令牌;手机须保持解锁。
安装前请注意
代理可操作你的真实手机和账户。发送、发布、购买和删除受批准机制约束,但使用 --for-task 或 --always 批准会扩大免提示执行的范围,请留意待处理请求。密码、Face ID 和验证码需由你本人输入,不要交给代理。令牌、批准记录和截图保存在本地 ~/.fonino 目录。部分应用有额外校验,且不支持多点触控、相机和 Face ID 流程。

安装

在 SourceWeft 中

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

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

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Fonino

Let your AI agent use your real iPhone or Android phone, with your OK before anything is sent.

Fonino lets Claude Code, Codex, Hermes or any MCP client see your phone's screen, open apps, tap, swipe and type. Anything that sends, posts, buys or deletes waits for your one-tap approval first. It runs on your Mac, with your own phone: no jailbreak, no cloud phone, nothing to install on an Android phone and only a small helper on an iPhone.

[An agent asks Fonino to text Sam; the approval card waits for the owner; after Approve the phone sends the text in Google Messages]

A real run, in real time, on an Android emulator with a demo number. The same tools and approvals work on iPhone.

text
  ● agent: text Sam that I'm running late  │  ● phone_open_app("Messages") → phone_get_screen → Sam's conversation  │  ● phone_send_message(to: Sam, "Running 10 minutes late, sorry!")  │   ⏸ waiting for your OK: "Send a text to Sam?"   [Approve] [Deny]  │  ✓ sent after you approved (Delivered via iMessage)

Get started

Paste this into your coding agent (Claude Code, Codex…) on a Mac:

text
Clone https://github.com/fonino/fonino, run npm install, then read docs/setup.md and walk methrough connecting my phone. Stop and ask me whenever a step needs my hands, and never typemy passcode or passwords for me.

Or install it from npm:

bash
npm install -g foninofonino doctor        # checks the Mac, the phone and permissionsfonino devices

Or from source:

bash
git clone https://github.com/fonino/fonino && cd foninonpm install && npm run build:nativeapps/cli/bin/fonino doctor

Don't want to set it up yourself? Fonino for Mac is the signed app built on this code. It does the iPhone setup for you (no Xcode) and connects your phone to Grok Bot, Muse, Claude and ChatGPT from anywhere, with approvals on your phone.

Two ways to connect the iPhone

USB helper (recommended)iPhone Mirroring
HowFonino's helper (WebDriverAgent, Apple's UI test runner) on the phone, over USBFonino reads and clicks macOS's iPhone Mirroring window
TapsExact: reads the screen's structure, not just pixelsFrom screenshots and text recognition
Your MacFree to use: nothing moves your mouseTakes over the cursor while it works
PhonesSeveral per Mac, at the same timeOne
NeedsXcode, an Apple ID for signing, Developer Mode, a cablemacOS 15+, iOS 18+, same Apple Account on Mac and iPhone (not in the EU)

Android

Turn on USB debugging (Settings → About phone → tap Build number 7 times, then Settings → System → Developer options → USB debugging), plug the phone in and tap Allow on the phone. Fonino finds it through adb (Android platform-tools); an Android emulator works too. Nothing is installed on the phone.

bash
fonino devices# android-001  Pixel 9  connected  android-adb  Pixel 9, Android 16, USB

Same tools and the same safety rules as on iPhone: screenshots in points, taps checked against the button under them, texts sent through Google Messages and verified before Send, Settings, Wallet, Play Store and calls off limits. Typing is plain ASCII (texts can hold any characters).

Step-by-step for both iPhone ways and Android: docs/setup.md.

Use it from your agent (MCP)

Full toolset, with approvals (recommended): run the local HTTP server and add it to your client.

bash
apps/cli/bin/fonino mcp-http --show-token     # http://localhost:3001/mcpclaude mcp add --transport http fonino http://localhost:3001/mcp \  --header "Authorization: Bearer <token>"

Tools include phone_list_devices, phone_acquire / phone_release (one agent per phone), phone_get_screen (screenshot + elements), phone_tap, phone_swipe, phone_type, phone_open_app, phone_read_messages, phone_send_message, phone_wait_for_reply, phone_await_approval, phone_request_help (hand the phone to you for logins) and more.

Basic control only: fonino mcp (stdio; tap, type, swipe, screen). This repo's .mcp.json registers it for Claude Code.

Safety

The rules are in the code, not in a prompt, so an agent can't talk its way past them:

  • Approvals. Sending, posting, buying and deleting pause until you approve the exact app, recipient and text. Fonino checks the button under every tap too: Send, Post, Reply, Buy Now and Place your order always need your OK, even if the agent didn't say what it was doing. fonino approvals lists pending requests; fonino approve <id> (--for-task covers the rest of the task, --always allows that kind of action in that app, with a daily cap).
  • Off limits. Settings, Wallet, Passwords, Mail, Phone, FaceTime, Find My and the App Store.
  • Your logins stay yours. The agent hands you the phone for passwords, Face ID and verification codes; one-time codes in messages are hidden from it.
  • Texting limits. Rate limits per phone and recipient; anyone who replies STOP is never texted again.
  • Local and private. Tokens, approvals and screenshots stay in ~/.fonino, readable only by your macOS user.

Other commands

bash
fonino screen <device> --open          # screenshotfonino tap <device> 200 500            # screenshot pixelsfonino agent <device> --goal "Open Settings and tell me the iOS version"   # built-in agent (Anthropic API key)fonino wda up                          # keep the USB helper running (health checks, restarts)fonino service install                 # run it all as login servicesfonino runs && fonino replay <run-id> --openfonino help                            # everything else

How it works

apps/cli                 fonino CLI: setup, doctor, watchdog, local services, replaypackages/iphone-adapter  iPhone USB helper (WebDriverAgent over usbmuxd), iPhone Mirroring, Android over adbpackages/mcp-server      MCP tools, approvals, policy (off-limits apps, risky buttons), rate limitspackages/agent-runtime   built-in agent loop and approval gatepackages/device-core     device protocol, leases, mock phone for testspackages/browser         optional agent browser on the Mac (pages as text, replayable recipes)packages/relay           client that connects this Mac to the Fonino cloud (optional)native/                  Swift helpers: screen capture and input for Mirroring, text recognitiondocs/                    setup, research notes on controlling a non-jailbroken iPhone

Background on why the USB helper and what we measured: docs/iphone-control-research.md.

Requirements: an Apple-silicon Mac on macOS 15 or later, Node 22.18 or later. Tests: npm test.

Limits

  • The phone has to stay unlocked (iPhone: Auto-Lock Never; Android: the longest screen timeout).
  • The first start of the helper may show a passcode prompt titled "XCTest": that's the helper asking to use the screen. Enter it on the phone; it asks again only after a restart.
  • No multi-touch, camera or Face ID flows. Some apps add their own checks.

License

MIT. See LICENSE.

来源:README.md,提交 92a4a25

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.0最新Nov 7, 2026

评分

已满足适用检查项的 50%

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

  • 近 30 天内可连通25 分

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

  • 已声明认证方式10 分

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

  • 已列出工具15 分

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

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