I'm staying in a trailer in Vegas with no monitor and no flat surface for a keyboard. Set up my Mac mini using a projector aimed at a wall. That's where Remote Claude got built, a $49 setup that turns iMessage into a complete interface for Claude Code. Text it. Dictate to it. Send it files, iCloud syncs both sides.
This post is the architecture, the constraints that forced it, and what "shipping in an afternoon" actually looked like.
The constraint that forced it
I hate typing. I always have. So sitting in a trailer with a projector aimed at a wall, no flat surface for a keyboard, was actually a clean test: could I work without one?
I dug through a box of old gear and found a single 3-year-old AirPod from a previous life. It still paired. I started dictating into it instead of typing.
That's when I realized: if I could dictate commands to Claude Code, and Claude Code could text the result back to me through iMessage, I'd never have to be at the desk again.
What the existing options were
Before building, I checked what was already out there:
- Anthropic's voice mode. Has been "rolling out" for months, only ~5% of accounts have it. Open GitHub issues (
#38918,#30293,#30904) show "no speech detected" errors even when the mic works fine. - Anthropic's iMessage plugin. Real, free, ships with Claude. But text-only, no voice in, no voice out, no Siri triggers. There's also an open bug where notifications don't surface unless you manually open Claude.
- Claude Bridge (community). Excellent, but requires Tailscale, tmux, and Go on both ends. If you're already a dev with that stack running, fine. If you're not, it's a wall.
- Tactic Remote. Solid for non-devs but text-only.
So the gap was a voice + text + file interface for Claude Code that doesn't require a custom server, daemon, or paid API.
The realization: glue, not invention
The actual insight didn't take long once the constraint was clear. Apple already ships:
- iMessage (the chat layer, with files + voice memos + photos)
- Siri Shortcuts (programmable triggers + dictation)
- iCloud Drive (file sync between phone and Mac)
- Personal Automations (run a Shortcut when X happens)
And Anthropic already ships Claude Code (the engine) and the iMessage plugin (text plumbing).
Every primitive I needed already existed. I just needed to glue them together correctly.
The architecture, in one paragraph
You text or voice-message a dedicated agent iCloud account from your iPhone. A small bash script on the Mac mini polls chat.db every 3 seconds, picks up new incoming messages addressed to that account, and forwards them as input to Claude Code. Claude does its thing on the Mac (your local working directory, your repos, your tools). When Claude has a reply, an AppleScript helper sends it back as an iMessage. On the iPhone side, an iOS Personal Automation triggers when a message from the agent arrives, it runs a Shortcut that calls "Speak Text" so you hear the reply through your AirPods (optional). For files, iCloud Drive does the syncing, drop something in a folder on your phone, Claude's working with it on the Mac a second later.
That's the entire system.
The build, hour by hour
Trying to be honest about what actually took time:
Hour 1, the Telegram detour
I tried Telegram first. Bots, polling, webhook tunnels. Couldn't get a clean connection from inside the trailer's spotty wifi without paying for a relay service. Pivoted to iMessage, iMessage is just there. Apple's infrastructure, no setup.
Hour 2, the bridge script
Wrote a bash + sqlite3 polling loop against ~/Library/Messages/chat.db. Filter on destination_caller_id = the agent iCloud account. Track a cursor based on Apple's Cocoa epoch (nanoseconds since 2001-01-01). Append new rows to a JSONL file that Claude Code can tail. Total: about 80 lines.
Hour 3, the send path
AppleScript can talk to Messages.app. Wrote a wrapper that takes a handle and a message text, generates the AppleScript on the fly, and shells out via osascript. Required granting Terminal Automation permission to Messages once. Worked first try.
Hour 4, the voice layer
Built three iOS Shortcuts: "Text My Agent" (Siri triggers dictation, sends via iMessage), "Read My Agent" (Personal Automation triggered by incoming message, runs Speak Text), "Text My Agent (silent)" (the text-only version). All configured through the iOS Shortcuts app.
The next several hours, the not-glamorous part
Mac sleep prevention (three pmset settings + an Amphetamine fallback for closed-lid MacBooks). Claude Code permission allowlist so common commands don't pause the loop on 1/2/3 prompts. Voice memo handling, turns out incoming voice messages arrive as .caf attachments with no native transcript. Built a wrapper around whisper.cpp + macOS's native afconvert for that, but it's queued as a paid Voice Pack add-on rather than core.
The whole thing in one diagram
Why it doesn't break
This is the part I keep coming back to in DMs with skeptics:
- No API keys to rotate. Nothing to expire, nothing to leak, nothing to re-enter.
- No third-party middleman. No Tailscale, no custom server, no cloud relay that can go dark when their VC funding runs out.
- No custom daemon. Nothing running on your Mac that isn't Apple's or Anthropic's. If they're up, you're up.
- Text always wins. The voice layer can act up (an iOS update, mic permission revoked), but the text path keeps working underneath. You're never locked out.
Built on primitives Apple and Anthropic both maintain at scale. Indie code. Infinite uptime by proxy.
Three lessons from shipping it
1. Constraints find products faster than ideation does.
I didn't sit down and think "the market needs hands-free Claude." I just couldn't type, and that forced the rest of the design. Most of the better indie products I've seen come from "this hurts in a specific way for me right now" rather than market mapping.
2. Glue beats native.
Anthropic's engineering teams have been working on hands-free Claude for months. They will eventually ship something good. But "eventually good" loses to "exists now." The primitives were all sitting on the floor. Siri, Shortcuts, iMessage, Claude Code. The product was the wiring.
3. Ship the wrong demo on the first day.
The first demo video I posted was raw, shot in an Uber, one take. It looked rough. I almost waited for a polished version. Posting the rough one drove more conversation than the polished one would have. Authenticity outperforms production value for indie launches.
If you want it
Remote Claude is $49, one-time, with a 14-day refund window. PDF setup guide + 3 pre-built Siri Shortcuts. Most people finish setup in under an hour. Details + waitlist (or live checkout, depending when you read this).
