Voice, hands-free
Speak a turn, pause, and it sends. The reply plays back in the phone's synthetic voice, with no extra voice account.
~/messenger % node --test test/*.test.mjs ✔ pairing link is single-use (12ms) ✔ rejects cross-origin requests (4ms) ✔ delivers over WebSocket (31ms) ✔ private media needs a session (9ms) ℹ tests 42 pass 42 fail 0
Text, photos and voice go straight to the Claude or Codex conversation running at home. Pair once by QR, add it to your Home Screen, and your Mac is a message away.
See how pairing worksSend PNG, JPEG, GIF or WebP up to 10 MB. Tap any image to enlarge it. Ordinary images are kept for 30 days.
Use Dictate to edit a transcript before it sends, or Voice → Speak to talk. Pause and the turn sends itself; replies play in the phone's own voice.
Ask for a fresh snapshot of the main display. Nothing streams or records in the background, and each snapshot expires after ten minutes.
Your Mac can invite you to a 90-second voice conversation. With Web Push enabled, a notification opens Pocket Link to answer.
Incoming invitation: “An update is ready.” Tap to answer.
Speak a turn, pause, and it sends. The reply plays back in the phone's synthetic voice, with no extra voice account.
One tap captures the main display, only when you press it. Snapshots delete themselves after ten minutes.
~/messenger % node --test test/*.test.mjs ✔ pairing link is single-use (12ms) ✔ rejects cross-origin requests (4ms) ✔ delivers over WebSocket (31ms) ✔ private media needs a session (9ms) ℹ tests 42 pass 42 fail 0
GPT drafts an exact plan, you approve it, and a small local model carries it out step by step in your Mac's apps.
NotesNew NoteAdd the web app to your Home Screen from Safari, or build the native SwiftUI app in Xcode for personal installation. Both talk to the same conversation.
The server and your Claude/Codex agent both run on your Mac and start at login. Keep it awake and online, and every message you send from your phone lands right where your work already lives.
NewPassword-protected sessionsSigned in until you sign outEvery message signed by your phone
Each QR link works once and expires after half an hour.
Pairing needs your session password. Three wrong tries close the link.
Sessions last as long as you want. Sign out on the phone, or revoke it from your Mac.
The companion conversation runs with a read-only sandbox on your Mac.
Messages, images, voice and screen snapshots travel inside TLS the whole way. They never cross the internet as plain text.
Not end-to-end encrypted yet. Cloudflare decrypts traffic at its edge to route it to your Mac, so treat pairing QR codes as private.
Works right away. The address changes after a restart, so you'll pair again with a fresh QR.
View local commandsReplies use your existing Claude or ChatGPT/Codex account and its usage allowance.
Updating?Already paired an older version? After updating, phones from before signing was added are signed out once. Set a password with node scripts/control.mjs password, then pair again.