CodexClaude CodeModel Context ProtocoliPhone over USBiPhone over Wi-FiAndroid 11+SimulatorsWebDriverAgentVision OCRVideoToolbox H.264iOS Accessibility
01 / MIRROR
It is a mirror,
and a device operations console.
Mirroring, control, and automation no longer live in separate tools.
Discovery, live video, independent windows, and AI actions all happen in one native Mac app.
A mirror built to stay live
No lock screen. No context switching.
StupidMirror uses the iPhone screen source exposed directly by macOS.
Even while the iPhone camera is active, the dashboard and standalone mirror keep rendering.
Open the camera. The mirror stays live.
Plug in over USB
Connect, trust the Mac, and the device appears.
Standalone mirror
True device proportions for debugging, capture, and demos.
Multiple iPhones
Enter an SM- activation code to unlock multiple devices. No sign-in required.
Native speed
Swift, AVFoundation, and CoreMediaIO — without a heavyweight browser shell.
Local recognition
macOS Vision OCR and iOS Accessibility replace visual guesswork with real targets.
MCP control
Tap, swipe, long-press, type, and clear on iPhone or Android 11+ from an agent workflow.
ALSO ON ANDROID
Android 11+ is supported, too.
Connect with USB debugging and use the same StupidMirror workspace for live mirroring,
device audio, direct control, and MCP automation.
The built-in guide checks the device, your Apple development account, and the screen agent.
After one USB setup, disconnect the cable and keep a full-resolution H.264 mirror over your LAN.
GUIDED SETUPPrepare once over USBLOCAL SERVERMCP configuration included
LANSame-network mirror
SRTComplete access units
H.264VideoToolbox codec
Mirroring and control stay separate. Viewing a screen never installs or starts the control path behind your back.
CODEX
Your phone, inside Codex.
Connect once. View, operate, annotate.
Open MCP Automation settings and click Connect Codex. Select StupidMirror in a new chat to open the embedded phone panel.
01
Live video in your chat
Local WebRTC carries the phone video into Codex. Switch devices, pause, or resume without a separate mirror window.
02
You and your AI can operate
Enable manual control to tap and drag. AI observations keep images by default, with compact text and targeted controls.
03
Point it out with annotations
Freeze a frame, move and resize numbered regions, then send the marked image and your note with Command-Enter. The composer stays below the picture.
Video stays local. Screenshots requested by your AI and annotations you send follow your AI client’s data settings. Host support is required for image messages.
03 / AI HARNESS
AI is not a spectator. It can operate the iPhone.
StupidMirror includes an MCP server bound to localhost. It embeds no model and asks for no model API key —
it hands the real device to the Codex or Claude Code setup you already use.
The latest frame, local Vision OCR, and iOS Accessibility converge on the real target.
02
Every action is visible
Targets, taps, and swipe paths appear only on the Mac, ready for review or takeover.
03
Built for real interfaces
System Settings, the App Store, dense feeds, and custom canvases all yield semantic targets.
Real screens. Real control.
Not a demo page. Real-world apps.
Drag through the captures. Open any screen to inspect the recognized targets.
Local services / dense informationSystem Settings / native controlsApp Store / layered cardsBusiness apps / custom canvas
04 / PRIVACY
Recognition stays local. Control stays with you.
OCR runs on demand on your Mac. Action overlays never go back to the iPhone or into the video stream.
StupidMirror embeds no model, needs no model API key, and never uploads the screen to a model service on its own.
LOCALHOST MCP
ON-DEMAND OCR
VISIBLE ACTIONS
05 / USE CASES
One Mac. Three new ways to work.
01
Development & testing
Debug real hardware, reproduce issues, and rerun flows without bouncing between iPhone and Mac.
Live device video
Visible action trails
Fast WDA reconnects
02
AI automation
Hand a real device to Codex or Claude Code through MCP for observable, verifiable workflows.
Semantic targeting
Local OCR
Taps and text input
03
Demos & multiple devices
Standalone mirrors fit recording, streaming, and demos; an account-bound SM- license unlocks parallel iPhone workflows.
Device-ratio windows
Parallel devices
English and Chinese UI
06 / FAQ
Common questions.
Does StupidMirror work without a cable?
Yes. Run Set Up This iPhone once over USB, then keep the iPhone and the Mac on the same network and mirror it over Wi-Fi. Wireless audio is not available.
Why does it ask for Camera permission?
macOS exposes a USB-connected iPhone screen as a camera-style capture source. StupidMirror reads that source; it does not use the Mac webcam.
Does it support Android?
Yes. Android 11 or newer over ADB with USB debugging enabled. Video and device audio come from scrcpy, and control uses Appium with UiAutomator2.
Which AI agents can use it?
Codex through the bundled plugin, which shows the live phone screen inside the chat, and Claude Code or other MCP clients through the local MCP server. StupidMirror needs no model API key.
Does the screen or my data go through a cloud service?
No. The Codex panel streams over encrypted local WebRTC without a cloud relay, the MCP server listens on this Mac only, and text recognition runs locally with Apple Vision.
Is StupidMirror free?
One device can be mirrored and controlled without signing in. An SM- activation code unlocks several devices at once. The source is available under PolyForm Noncommercial, and commercial use needs separate authorization.
What do I need to run it?
A Mac with macOS 15 or newer. Wireless iPhone mirroring and iPhone control also need Developer Mode on the phone and an Apple Development signing identity on the Mac; simulators need Xcode.
Now put a real iPhone into your workflow.
macOS 15+ · Free for personal and noncommercial use · Commercial license required