Other agents · Hermes Agent
Give Hermes a real iPhone.
Tested with Hermes Agent v0.21 · October 2026
In short: add Fonino to ~/.hermes/config.yaml, run hermes mcp login fonino and sign in with your Fonino email. Hermes then sees your phone's tools: it can open apps, tap, type, read the screen and send texts, and everything that spends, sends or deletes waits for your approval. There's no API key to copy, and Hermes keeps using your own model provider.
Before you start
- A Fonino phone: a BYOF phone set up on your Mac, or a hosted phone. See plans.
- Hermes Agent installed (
hermes --versionworks) with a model configured. - A vision-capable model, such as Claude, GPT or Gemini. Hermes needs to see the phone's screenshots.
1. Add Fonino to Hermes
Open ~/.hermes/config.yaml and add:
mcp_servers:
fonino:
url: "https://api.fonino.app/mcp"
auth: oauthIf you already have an mcp_servers: section, add only the fonino: block under it.
2. Sign in
hermes mcp login foninoYour browser opens Fonino's sign-in page. Enter your Fonino email and the 6-digit code we send you. Hermes stores its own access token and refreshes it by itself. You should see ✓ Authenticated — … tool(s) available.
Check the connection at any time:
hermes mcp test fonino3. Try it
Start Hermes with hermes and ask:
- “Look at my iPhone with Fonino and tell me what's on the screen.”
- “Open Safari on my phone and check the weather in San Francisco.”
- “Text +1 415 555 0142: running 10 minutes late.” (this one waits for your approval)
How it works with Hermes
Screenshots
Hermes saves the images that MCP tools return as files and passes the model a MEDIA: path instead of the picture. Fonino tells Hermes to open that file with its built-in vision_analyze tool, so the model sees the actual screen before it taps. Keep vision_analyze enabled. If your model can't see images at all, Fonino can also return the on-screen text with tap points (with_text: true).
Approvals
When Hermes tries to place an order, post, send a text or delete something, Fonino stops and returns an approval link. Hermes posts the link in the chat and waits. You see the app, the exact text or amount and a screenshot, then tap Approve or Decline. Fonino also checks the button under each tap, so “Place your order”, “Buy Now”, “Post” and “Send” need your OK even if the agent doesn't ask for it. Nobody answering within 10 minutes means nothing happens.
Your model, your key
Hermes runs on your computer with the model provider you chose. Fonino never sees your model key and doesn't bill for model usage. Fonino only gets the tool calls Hermes makes to the phone.
Tips
- Use interactive chat for tasks that need approval. With
hermes chat --oneshot, the run ends as soon as Hermes asks you something, so it can't keep waiting for your decision. If that happens, Fonino releases the phone a couple of minutes after you decline or the request expires. - Logins and 2-factor codes are yours. Hermes hands you the phone with a live link; take over, then tell Hermes you're done.
- One task at a time per phone. Hermes takes the phone for a task and releases it when it's done. The phone goes back to the Home Screen.
Troubleshooting
| You see | What to do |
|---|---|
hermes mcp test fonino asks to authorize | Run hermes mcp login fonino again; your sign-in expired or was removed. |
| Hermes says it only got a file path, not an image | Make sure vision_analyze is enabled and your model supports images. |
device_unreachable or “WebDriverAgent not running” | Unlock the iPhone and keep it plugged into the Mac. Fonino reconnects by itself within a few minutes. |
device_leased | Another assistant is using the phone. Try again when it's released. |
Disconnect Hermes
Remove it under Connected assistants at app.fonino.app; it loses access immediately. You can also delete the fonino: block from your Hermes config.
More detail: Fonino documentation · Security