
Fonino
io.github.FoninoPublished by GitHub account Foninov0.1.0Updated Nov 7, 2026
Let your AI agent use your real iPhone or Android phone, with your OK before anything is sent.
Overview
Lets an AI agent control your real iPhone or Android phone — see the screen, open apps, tap, swipe and type — with your approval before anything is sent.
- What you can do
- List and lease connected phones, one agent per device
- Capture the screen as a screenshot plus UI elements
- Tap, swipe and type on the phone, and open apps
- Read messages, send texts, wait for replies and hand the phone to you for logins
- Pause risky actions and wait for your one-tap approval
- When to use it
- Useful when you want a coding agent to operate your actual phone for tasks like texting someone, navigating an app or checking what is on screen, while keeping a human approval gate on anything that sends, posts, buys or deletes.
- Requirements
- Runs locally on an Apple-silicon Mac with macOS 15 or later and Node 22.18 or later. iPhone needs either a USB helper (Xcode, an Apple ID for signing, Developer Mode, a cable) or iPhone Mirroring (macOS 15+, iOS 18+, same Apple Account, not in the EU); Android needs USB debugging and adb. The HTTP transport uses a bearer token from the CLI; the phone must stay unlocked.
Installation
In SourceWeft
- Open Fonino in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
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.
Get started
Paste this into your coding agent (Claude Code, Codex…) on a Mac:
Or install it from npm:
Or from source:
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
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.
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.
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 approvalslists pending requests;fonino approve <id>(--for-taskcovers the rest of the task,--alwaysallows 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
How it works
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.
Source: README.md at commit 92a4a25
Tools
0Version history
1- v0.1.0LatestNov 7, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
