Free Shipping on all orders ยท Priority Mail Shipping with fee of $8.00
๐Ÿ“ฑ
Divine Tribe Software ยท Open Source

claude-screen-to-phone

Control Claude Code from your iPhone, via iMessage.

Pythonโญ 14 stars๐Ÿด 2 forksMIT licensedOpen source
โญ 14
GitHub Stars
๐Ÿด 2
Forks
๐Ÿ’ป Python
Primary Language
๐Ÿ“… Nov 2, 2026
Last Updated
See it in action

Watch the demo

What it is

Your computer, on your phone, using the texting app you already have.

Send a text from your phone. Claude Code on your Mac runs the command. Screenshots, screen recordings, finished videos come back as iMessages. No apps to install, no accounts to make. It's just texting.

Originally built so Matt could keep shipping code while away from the keyboard. Ask Claude to fix a bug, check a deploy, or send back a demo video, all from wherever you are.

Why it's different

What makes claude-screen-to-phone special

๐Ÿ’ฌ

iMessage-native

No apps, no accounts. Text your Mac and it texts back.

๐Ÿ“ธ

Visual replies

Screenshots, videos, pictures: they come back automatically.

๐Ÿ”

Private by design

Messages stay in iMessage. Nothing public.

๐Ÿค–

AI-first

Claude Code does the actual work. You just say what you want.

Who it's for

Is this for you?

  • Developers who want remote control of their Mac from the phone
  • People who leave their desk but still need to babysit a build
  • Anyone who wishes ChatGPT could just text them back
How to get it

Getting started in minutes

1

Install the helper scripts

Three shell scripts land on your Mac.

2

Point them at your iMessage

One-time setup: tell it your phone number.

3

Start texting your computer

Yes, really. It works.

Ready to try claude-screen-to-phone?

It's free, open source, and runs on the hardware you already own. Head to GitHub to get started, or drop a star to help us keep building in public.

For firms ยท Confidential workflows

Need this for a law firm, healthcare org, or anywhere documents can't leave the machine?

claude-screen-to-phone runs the same on your firm's MacBook as it does on mine. AirGap AI is the commercial pilot: a 14-day engagement that ships claude-screen-to-phone (and the rest of the local-AI stack) into a real legal/medical workflow with verified network audits. Privileged docs in, answers out, never a byte to a cloud.

Explore the AirGap pilot โ†’ Get in touch
Stay in the tribe

More from Divine Tribe

Full technical docs

The complete README

Open the GitHub README: every detail, every benchmark, every code block

๐Ÿ“ฑโšก Claude Screen to Phone

Your iPhone is now a keyboard for your Mac.
Text a command. The AI builds it. iMessage delivers the receipts.

GitHub stars iMessage Native 100% Local Text ยท Images ยท Video Mobile Mode 60-second setup MIT

Built by Matt Macosko in Humboldt, CA. Off the screen, still getting work done.

๐Ÿ’ฅ The Claim ยท ๐Ÿคฏ What It Does ยท ๐Ÿ—๏ธ How ยท ๐Ÿ“ฑ Mobile Mode ยท โšก Setup ยท ๐Ÿงฉ The Stack


๐Ÿ’ฅ The Big Claim

You are not chained to your desk anymore.

Text "pull the latest, run tests, send me a screenshot of the dashboard" from a Jacuzzi. The Mac does it โ€” locally, privately, with a real AI driving. A minute later your phone buzzes with the results in Messages. No Telegram bot. No $20/mo SaaS. No cloud API reading your commands. Just iMessage, AppleScript, and a bash daemon that turns your iPhone into a full remote for Claude Code.

Free yourself from the chair. Your phone is now the keyboard. ๐Ÿ›‹๏ธ๐Ÿ“ฑโ†’๐Ÿ’ป


๐Ÿงฉ Part of a 4-repo local-first ambient-computing stack. Runs great standalone; wired up with the BRAIN (claude-code-local) you get Claude Code with local AI driven from your phone โ€” fully on-device, zero cloud.


๐Ÿ’ฌ iMessage โ€” No Extra Apps Required

If you have a Mac and an iPhone, you already have iMessage. It's built in, encrypted, and the app you use every day. This project is a documented, working method for sending text, images, and video from your Mac to your iPhone using nothing but iMessage โ€” no Telegram, no Discord, no third-party services required.

๐Ÿ“Ž How file sending actually works

Sending file attachments via AppleScript on macOS Sequoia is unreliable with the standard approach. The send file to buddy command fails silently โ€” it returns success but the attachment never arrives on the phone.

The method that works:

1. Finder selects the file and copies it  (Cmd+C)
   โ†’ creates the correct clipboard type Messages accepts
2. open imessage://+1XXXXXXXXXX
   โ†’ opens/focuses the conversation
3. Cmd+V paste โ†’ Enter to send
   โ†’ delivered โœ…

This works for images and video files. Video files over 95MB are automatically compressed first using Apple's hardware encoder so they fit within iMessage limits.

That's it. No extra apps. No accounts. No monthly fees. ๐ŸŽ


๐Ÿคฏ What This Does

You text Claude. Claude does things on your computer. Claude texts you back โ€” with receipts.

You say ๐Ÿ“ฒ Claude does ๐Ÿ’ป You get ๐Ÿ“ฅ
"grab me that article image" Screenshots the image ๐Ÿ“ธ Photo in iMessage
"screen record what you're doing" Records the screen ๐ŸŽฅ Video in iMessage
"summarize that YouTube video" Watches + summarizes ๐Ÿ“ Text reply
"make me a highlight reel" Edits + compresses ๐ŸŽฌ Produced video
"pull the repo and run tests" Shell + git + reports ๐Ÿ’ฌ Pass/fail summary
"go find X and send it to me" Browses + captures ๐Ÿ“ฆ Whatever you asked for

๐Ÿ“ฑ Mobile Mode โ€” Your Phone Is the Keyboard

This is the part that flips the whole thing around. Toggle mobile mode on and a background daemon (imessage-listener.sh) starts watching ~/Library/Messages/chat.db every two seconds. When a text arrives from your phone, it gets pasted directly into the Terminal tab where Claude Code (or the browser agent) is running โ€” as if you typed it yourself. Claude replies? A short summary comes back to your phone via imessage-send.sh.

        ๐Ÿ›‹๏ธ  COUCH / JACUZZI / ANYWHERE                ๐Ÿ–ฅ๏ธ  DESK (ASLEEP BEHIND YOU)
                      โ”‚                                         โ”‚
                      โ”‚  "commit the changes and push"          โ”‚
                      โ–ผ                                         โ”‚
              ๐Ÿ“ฑ iPhone iMessage   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ  ๐Ÿ’ป Mac (awake โ€” caffeinated)
                      โ–ฒ                                         โ”‚
                      โ”‚                                         โ”œโ”€โ”€ listener.sh reads chat.db
                      โ”‚                                         โ”œโ”€โ”€ pastes into Claude Code
                      โ”‚                                         โ”œโ”€โ”€ Claude runs git add/commit/push
                      โ”‚                                         โ”‚   + shell + edit + MCP tools
                      โ”‚  "โœ… pushed to main (7 files)"          โ”œโ”€โ”€ texts the summary back
                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Short-reply contract: phone replies are capped at 3 sentences so you can read them at a glance. The Terminal keeps the long transcript.

Turn it on, walk away:

bash ~/.claude/imessage-toggle.sh        # captures THIS Terminal tab as the target
# from here: your phone is the keyboard. text "stop" from the phone to turn it off.

Pre-built launchers (๐Ÿ“ฑ Claude Phone.command, ๐Ÿ“ฑ Gemma Phone.command) do the whole dance in one double-click: clear stale state โ†’ capture TTY โ†’ start listener โ†’ caffeinate -w $$ so the Mac won't sleep โ†’ exec Claude Code (or the browser agent) with --dangerously-skip-permissions so no trust prompts block remote use.


๐Ÿ—๏ธ How It Works

Your iPhone ๐Ÿ“ฒ
     โ”‚
     โ–ผ  iMessage
Your Mac ๐Ÿ’ป (Claude Code running)
     โ”‚
     โ”œโ”€โ”€ reads your message from Messages SQLite DB
     โ”œโ”€โ”€ executes the task (browse, record, screenshot, edit)
     โ””โ”€โ”€ sends result back โ†’ text / image / video

Claude reads incoming messages directly from ~/Library/Messages/chat.db โ€” no server, no API, no internet middleman. 100% local. ๐Ÿ”’


โšก Quick Start

Requirements

  • ๐ŸŽ Mac (macOS 12+)
  • ๐Ÿ“ฑ iPhone with iMessage
  • ๐Ÿค– Claude Code installed
  • ๐Ÿบ ffmpeg โ€” brew install ffmpeg
  • ๐Ÿ Python 3 + deps โ€” pip install -r studio-record/requirements.txt
  • โœ… Messages app signed into your Apple ID

Setup (60 seconds)

# 1. Clone the repo
git clone https://github.com/nicedreamzapp/claude-screen-to-phone
cd claude-screen-to-phone

# 2. Run setup โ€” creates config.sh template
bash setup.sh

# 3. Fill in your details
nano config.sh
#   โ†’ Set BUDDY to your iPhone number (+15551234567)
#   โ†’ Set APPLE_ID_EMAIL to your Apple ID

# 4. Run setup again to install
bash setup.sh

# 5. Test it
~/.claude/imessage-send.sh "Hello from Claude! ๐Ÿ‘‹"

๐Ÿ“‚ What's Inside

๐Ÿ“ scripts/
   ๐Ÿ“œ imessage-send.sh          โ€” send a text message to your phone
   ๐Ÿ“œ imessage-send-image.sh    โ€” send an image (PNG/JPG/GIF)
   ๐Ÿ“œ imessage-send-video.sh    โ€” send a video (auto-compresses if >95MB)
   ๐Ÿ“œ imessage-toggle.sh        โ€” toggle mobile mode on/off
   ๐Ÿ“œ imessage-receive.sh       โ€” wait for your reply (polls Messages DB)
   ๐Ÿ build_production_video.py โ€” full video editor: silence cut + title card + subtitles

๐ŸŒ browser-agent.py              โ€” autonomous browser agent (CDP + MLX/Claude)

๐Ÿ“ studio-record/
   ๐ŸŽฌ studio_record.py          โ€” recording app (screen / webcam / PiP)
   ๐Ÿ“„ requirements.txt          โ€” Python deps
   ๐Ÿ“„ README.md                 โ€” setup + API docs
   ๐Ÿ–ผ๏ธ  backgrounds/              โ€” 32 virtual backgrounds included

๐Ÿ“ examples/
   ๐ŸŽฌ uv-jars-example-output.mp4 โ€” produced with this exact pipeline

๐Ÿ“„ config.example.sh            โ€” your personal settings template
๐Ÿ“„ setup.sh                     โ€” one-command installer

๐ŸŽฌ The Video Pipeline

Claude can build fully produced videos from raw screen recordings and send them to your phone:

Raw screen recording
       โ”‚
       โ–ผ
โœ‚๏ธ  Silence cut (keeps only the good parts)
       โ”‚
       โ–ผ
๐ŸŽจ  Title card rendered (Pillow โ€” Navy + Cyan style)
       โ”‚
       โ–ผ
๐Ÿ“  Subtitles overlaid (timed to speech)
       โ”‚
       โ–ผ
๐Ÿ  End card added
       โ”‚
       โ–ผ
๐Ÿ—œ๏ธ  Compressed to <95MB for iMessage
       โ”‚
       โ–ผ
๐Ÿ“ฒ  Sent to your iPhone

See scripts/build_production_video.py for the full script. Customize title/end cards, branding, subtitle timing โ€” it's all in there.


๐ŸŒ Browser Agent

Autonomous browser agent โ€” Claude controls Brave directly via Chrome DevTools Protocol to grab anything from the web before sending it to your phone.

# Prerequisites: Brave with remote debugging + MLX server running
open -a "Brave Browser" --args --remote-debugging-port=9222
python ~/.local/mlx-native-server/server.py &   # or use cloud Claude

# Run it
python browser-agent.py "Find a cool article about X and screenshot it"

Why it's different from normal browser automation:

Most tools (Playwright, Selenium, MCP) break on news sites because comment widgets and embedded content live inside cross-origin iframes + Shadow DOM. This agent uses raw CDP primitives that bypass all of that:

DOM.getDocument(pierce: true)   โ†’ sees through iframes + Shadow DOM
DOM.focus(nodeId)               โ†’ focuses any element regardless of origin
Input.insertText(text)          โ†’ types into anything

Works with both local AI (Qwen 3.5 122B via MLX) and Claude cloud โ€” just point it at the right server.


๐ŸŽฌ Studio Record

The repo includes Studio Record โ€” a full dark-glass recording app with a built-in HTTP API so Claude can control it autonomously.

# Install deps
cd studio-record && pip install -r requirements.txt

# Download the ML model for background removal
curl -L -o studio-record/selfie_segmenter.tflite \
  "https://storage.googleapis.com/mediapipe-models/image_segmenter/selfie_segmenter/float16/latest/selfie_segmenter.tflite"

# Launch it
python studio-record/studio_record.py

Once running, Claude can control it:

curl -X POST http://127.0.0.1:17494/start?mode=screen   # ๐Ÿ”ด start recording
curl -X POST http://127.0.0.1:17494/stop                 # โน๏ธ  stop + save
curl http://127.0.0.1:17494/status                       # ๐Ÿ“Š check status

Recording modes: screen | face | screen_face (PiP) 32 virtual backgrounds included โ€” swap live in the UI ๐ŸŒ…


๐Ÿ”ง Permissions You'll Need

Grant these in System Settings โ†’ Privacy & Security:

Permission Why
๐Ÿ“‚ Full Disk Access โ†’ Terminal/Claude Read ~/Library/Messages/chat.db
โ™ฟ Accessibility โ†’ Terminal/Claude Control Messages app to send
๐ŸŽฌ Screen Recording โ†’ Terminal/Claude Capture your screen

๐Ÿค– Wiring Into Claude Code

Add this to your ~/.claude/CLAUDE.md so Claude knows how to use the pipeline:

## ๐Ÿ“ฑ iMessage Agent

Send/receive iMessages to control Claude from your phone.

### Send a message:
bash ~/.claude/imessage-send.sh "Your message"

### Send an image:
bash ~/.claude/imessage-send-image.sh /path/to/image.png

### Send a video:
bash ~/.claude/imessage-send-video.sh /path/to/video.mp4

### Wait for reply:
bash ~/.claude/imessage-receive.sh

### Toggle mobile mode (starts the background listener):
bash ~/.claude/imessage-toggle.sh

๐ŸŽค Mobile Mode โ€” phone becomes the keyboard

imessage-toggle.sh starts a background daemon (imessage-listener.sh) that polls ~/Library/Messages/chat.db every 2 seconds and pastes incoming texts directly into the captured Terminal tab. Double-click a launcher, walk away, text commands from the couch.

  • imessage-startup-lock โ€” daemon buffers texts until the app finishes starting (no more half-pasted messages)
  • imessage-ask-active โ€” imessage-ask.sh consumes the next reply for its Y/N prompts instead of the daemon forwarding it
  • Text "stop" from the phone โ†’ daemon exits cleanly

๐Ÿงฐ Remote building from the phone

The browser agent now has general-purpose tools (shell, read_file, write_file) alongside browser + media tools, so you can text it build instructions โ€” "pull my repo and run tests," "restart the server," "show me what's in ~/Desktop/Screen Recordings" โ€” and it actually executes them and texts the result back.


๐Ÿ’ก Pro Tips

  • ๐Ÿ”„ Loop it โ€” Claude can run in a send โ†’ wait โ†’ reply loop indefinitely. Text "stop" to end it.
  • ๐Ÿ“น Screen recordings โ€” Claude uses the Studio Record API (http://127.0.0.1:17494) to start/stop recordings programmatically.
  • ๐Ÿ—œ๏ธ Video compression โ€” imessage-send-video.sh auto-compresses anything over 95MB using Apple's hardware encoder (h264_videotoolbox) โ€” fast and quality.
  • ๐Ÿ”’ config.sh is gitignored โ€” your phone number and email never leave your machine.

๐Ÿ› Troubleshooting

Messages won't send? โ†’ Check Accessibility permissions for Terminal in System Settings.

Video not arriving on phone? โ†’ The Finder clipboard trick is required โ€” direct AppleScript file sends fail silently on iMessage. The script handles this automatically.

chat.db permission denied? โ†’ Grant Full Disk Access to Terminal (or your Claude Code app).

Receive script times out immediately? โ†’ Double-check BUDDY and APPLE_ID_EMAIL in config.sh match what's in your Messages conversations.


๐Ÿงฉ The Complete Stack

claude-screen-to-phone is the phone piece. Pairs with three sibling repos for the full ambient-computing setup โ€” each stands alone, no mouse-scroll table needed:

๐Ÿ“ฑ claude-screen-to-phone โ€” Remote (you are here)

Your iPhone becomes a full Claude Code terminal. Text any command โ€” git ops, shell, file edits, deploys, web scraping, anything Claude can do โ€” and get results back in Messages. Text, screenshots, screen recordings, produced videos, all of it.

๐Ÿค– claude-code-local โ€” Brain

Claude Code running on local AI (Gemma 31B / Llama 70B / Qwen 122B). Zero cloud, 65 tok/s on Apple Silicon.

๐ŸŽค NarrateClaude โ€” Ears + Mouth

Talk to Claude, hear replies in your cloned voice. Fully on-device hands-free loop.

๐ŸŒ browser-agent โ€” Hands

Drives Brave via Chrome DevTools Protocol. Handles iframes, Shadow DOM, ProseMirror.

Pair this repo with the brain (claude-code-local) and you get local-AI Claude Code driven from your phone โ€” fully on-device, zero cloud latency, zero API fees.


๐Ÿ™Œ Credit

Built by @nicedreamzapps using Claude Code.

"I built this because I wanted Claude to be my assistant even when I'm away from my computer โ€” and I wanted receipts." ๐Ÿ“ฒ


โญ Star this if it helped you | ๐Ÿ› Open an issue if something's broken | ๐Ÿด Fork it and make it yours