All documentation
Hardware requirements & compatibility
Check the board, phone, network, and setup requirements before you buy.
The important part is ESP32-S3, not just “ESP32.” The project needs native USB for mouse and keyboard input, plus PSRAM for its video path.
The tested setup
| Component | Requirement |
|---|---|
| Board | Plain Seeed Studio XIAO ESP32S3, with 8 MB PSRAM; not the Sense or Plus variant |
| Phone | iPhone running iOS 18 or later |
| USB-C iPhone | A data connection to the board’s native USB port |
| Lightning iPhone | Lightning to USB Camera Adapter, plus a suitable data connection |
| Network | Board hotspot for mirroring; cellular data for model requests |
| Initial setup | A Mac with Xcode, arduino-cli, and an Apple ID |
| Model | An image-capable, OpenAI-compatible chat endpoint |
The iPhone powers the board. The board’s approximate $7 price is not a total project budget: adapters, model requests, and data can add costs. See the upstream board reference for the tested hardware.
Using another ESP32-S3
The upstream README says other ESP32-S3 boards with native USB and PSRAM should work. That is an expectation, not a verified compatibility list.
Before choosing another board, check that its USB connector reaches the S3’s native USB peripheral rather than only a USB-to-serial chip. Also check flash size and PSRAM mode: the supplied flash script targets 8 MB flash and OPI PSRAM. Another board can require build-setting changes.
Do not assume an ESP32, ESP32-C3, or a board with no PSRAM is a drop-in replacement. Follow the known board first if your goal is a straightforward setup.
Wi-Fi and model access
The phone joins the ESP32’s own hotspot to mirror its screen. That hotspot has no internet uplink. Model requests use cellular data, including when you select a self-hosted endpoint.
A server available only on your usual home Wi-Fi will not automatically be reachable in this arrangement. Check network reachability from the phone before expecting a local model to work.
Signing and the Mac requirement
The current documented workflow uses a Mac to flash the board and build the iOS app. A free Apple ID can sign the app, with a seven-day re-signing interval. One-tap hotspot joining requires the optional Hotspot Configuration entitlement and a paid developer account; manual joining is available without it.
Current operating limits
- Portrait only. Landscape coordinate handling is still on the roadmap.
- ASCII keyboard input. Direct Chinese and Japanese text input is not implemented.
- Keep the phone unlocked. Locking stops screen mirroring.
- Some content is invisible. Passcode screens, Apple Pay, and DRM-protected video are not available through the mirror.
- Steps take time. The README describes a small, low-frame-rate mirror, with model latency adding to each step. This is not a high-frame-rate remote desktop.
- Self-built app. The current app uses a private iOS
suspendAPI; do not assume App Store availability or approval.
Ready to proceed? Start with the full setup guide.