~/blog/hermes-muninn-phone-bridge

AI Agent Life, from Zero · part 12

[Agent 101 #12] Reach your home AI agent from anywhere: Muninn, a private iOS app over iroh P2P

2026-06-19updated 2026-06-226 min read#ai-assistant#ai-agent#hermes#iroh中文版
cat --toc

TL;DR

Hermes is great while you're at your desk. Step outside and it's gone. Bridging through Telegram works, but it's a setup chore, it isn't your own interface, and every message hops through a third-party server. Muninn is an iOS app built for Hermes: give your agent one command, scan a QR, and your phone connects straight to your home machine — over an encrypted iroh P2P tunnel with no server in the middle. The TestFlight public beta is open: tap one link on an iPhone and install.

The problem: your assistant can't leave the house

You've got Hermes running. It searches, runs tasks, pings you with updates — as long as you're sitting at the machine.

Walk out the door and it's gone.

Not literally gone — you just can't reach it. Earlier in this series we bridged it through a Telegram bot so the phone could send it messages. That works, but a few things bug me about it:

  • Setup is a chore. Wiring a bot through a messenger means tokens, webhooks, and an allowlist — change one piece and you redo the rest.
  • It's not your app. You're chatting inside Telegram. It looks like you're texting a bot, not using your assistant's app.
  • Every message hops through someone else's server. Not unsafe, exactly — just a stranger in the middle of every exchange.

Muninn fixes all three.

A raven, Muninn, flying between a phone and a computer over an encrypted iroh P2P tunnel with no third party in between

The fix: one command, one QR scan

There's barely anything to do.

Step 1. Tell your Hermes (English or Chinese, it doesn't care):

Clone https://github.com/coolthor/hermes-bridge into ~/hermes-bridge, run its install.sh, then show me the pairing QR.

It clones, installs the bridge, and prints a QR.

Step 2. Open Muninn on your phone → Connect → Scan QR Code.

Paired. Next time you open the app it reconnects on its own — no rescan.

That's it. You already installed Hermes (Part 4 of this series); the bridge runs on the same machine, and all you do is scan one QR.

How it works: your phone and your home machine shake hands directly

A bit of plumbing — not to configure, just so you see why it's cleaner than a bot.

Muninn's architecture: the iOS app connects over an encrypted iroh P2P tunnel to the bridge, which forwards to the Hermes dashboard on 127.0.0.1

The transport is iroh — a P2P library where every node has its own ed25519 identity (a NodeId). Your phone and the bridge each have one, and the connection is end-to-end encrypted and authenticated between those two identities. Nothing routes through a cloud.

The bridge runs three separate channels so chat, uploads, and downloads don't step on each other:

ActionChannel
Chatting with the assistantWS proxy → local Hermes dashboard
Sending it a photo or voice clipupload channel (doesn't block chat)
Getting an image or file backdownload channel

Direct or relayed? iroh first reaches the peer through a public relay, then tries to hole-punch a direct path and upgrades to it when that succeeds — your messages then go straight from phone to home machine, no server in between. If hole-punching fails, it stays on the relay. Having IPv6 (5G usually does) makes that direct upgrade far more likely — in my own testing, 5G got a direct path even behind CGNAT. Worst case it stays on the relay: still works, just one extra hop.

What you can do now

Out of the house, you get the same thing you'd get at the desk:

  • Chat — type a message and get a reply, with full Markdown rendering instead of one cramped line.
  • Send photos and files — pick straight from your camera roll; it can read images and handle documents.
  • Voice notes — record a clip; Whisper transcribes it and sends the text to the agent.
  • Receive its output — images, video, and files it generates come straight back to the phone for preview.

The interface is a Claude-style message list: each message stands on its own with a timestamp. It reads like an assistant app, not a chat room.

Security: the QR is a time-limited invite, not a key

Worth clearing up a common misconception: does scanning the QR get you in? No.

The pairing flow: the QR is a time-limited invite; your device only joins the allowlist after you confirm it; a leaked QR is a different NodeId you never approved

The QR holds hb1|<iroh-ticket>|<pairing-code> — a time-limited invite, not a pass key.

The flow:

  1. You scan → your phone (NodeId A) shows up at the bridge and waits as "pending".
  2. You confirm it by entering the registration code shown on your phone → only then does the bridge add NodeId A to its allowlist.
  3. The pairing window stays open for a few minutes; after that you re-show the QR.

From then on, only the allowlisted NodeId A — your phone — can connect. A grabbed QR doesn't help: a stranger's phone is a different NodeId that isn't on the list, and pairing needs your confirmation — you'd see a device you never tried to pair and just ignore it.

⚠️ Pairing a device gives it access to your assistant, which can run commands on your computer. Pair only your own devices.

Get the TestFlight beta

Muninn is in open TestFlight beta. You need:

  • An iPhone (iOS 16 or later)
  • Hermes running on your home machine (Part 4 covers the install)

Install Muninn via TestFlight →

Tap the link → install TestFlight (if you don't have it) → install Muninn. That's the whole thing. No form, no handing me your Apple ID, no waiting for me to add you. Open the app, tell your Hermes to show the QR, scan it, and you're connected.


After this, your assistant stops being stuck at home and travels with you. There's no third-party server in the path — just your phone and your home machine, encrypted end to end.

FAQ

What is iroh, and do I have to set anything up?
No. iroh is the layer that lets two devices punch through NAT and talk directly, peer to peer — think of it as the thing that gets your phone and your home machine to shake hands without a middleman. install.sh handles it; you never see it, you just see the connection work.
Once I have Muninn, can I drop LINE and Telegram?
Yes. Muninn is a dedicated app for Hermes — its own chat UI, image and file transfer, voice. It does more than a Telegram bot, and you use the same app at home or out. No third-party messenger relaying your conversations anymore.
What happens if someone else scans my pairing QR?
Nothing. The QR is a time-limited invite, not a key. Your phone's NodeId only joins the allowlist after you confirm it, so a stranger's phone is a different NodeId you never approved — a grabbed QR is useless.