Let AI actually use your iPhone

Quileg HID gives your AI assistant eyes on the screen and hands on the interface — using your phone the way a person does, not through an API.

Free macOS 13.0+ Apple Silicon / Intel Apple chip: -arm64 · Intel: -intel Notarized
Quileg HID app icon

Before you start: Quileg HID needs an ESP32-S3 development board (around US$4–9, 16MB flash required). Verified working: Seeed XIAO ESP32S3 Plus, and third-party boards built on the ESP32-S3-WROOM-1-N16R8 module. The board impersonates a Bluetooth keyboard and mouse and does the actual tapping. Without it, the app cannot control a phone.

What you can do

Anything you could do by hand on the screen, the assistant can do too.

Apps without APIs

If it can be tapped, it can be automated — no SDK, no partner access, no reverse engineering.

Repetitive work

Describe the routine once, then let it run: tapping, filling, paging, copying.

Verified at every step

Each action is followed by a fresh screenshot, so a missed tap is caught instead of compounding.

Full keyboard control

Letters, symbols, function keys and modifier combinations, with CJK input via pinyin and candidate taps.

Not just iPhone

iOS and iPadOS go over AirPlay. Android, Windows and macOS need a UVC capture card. Key policy follows the target platform.

Local by design

The control service binds to 127.0.0.1:8890. Screen data never leaves your Mac.

How the AI drives it

No scripting, no coordinate math. Hand the DMG (the downloaded installer) to your AI: it installs the app, reads the bundled documents, wires up the connection — then it can see the screen, tap buttons and type. You talk, it taps.

Three steps to start

  1. Hand the DMG to your AI — or download it and drag it to Applications yourself
  2. Let it read START-HERE.md from the image
  3. Connect the device using the list below, then say: "Is the phone connected?"

An AI with local file access (Claude Code, Cursor, DSH) can mount the DMG, install the app, verify the signature and version, read all 7 documents and wire up the connection — you only approve the key steps.

A chat-only AI (Claude Desktop) cannot read local files, so install once yourself; after that it drives the phone over MCP. The service binds to 127.0.0.1:8890 only — never expose it. Read the docs online →

Scenario: put one line into the phone's Notes

You
Is the phone connected?
AI
Connected — service, board, mirroring and calibration all look good.
You
Add a note: project review tomorrow at 10
AI
On it. Looking at the screen first — still on the home screen, opening Notes.
AI
In the editor now. For text I'll speak it to the phone and let dictation write it.
AI
Done — checking: project review tomorrow at ten, no typos.
AI
Saved.

Every step is checked against a fresh look at the screen, so a missed tap is caught instead of compounding.

Connect the phone: these steps are yours to do

  1. Turn on AssistiveTouchiPhone Settings → Accessibility → Touch → AssistiveTouch. Without it there is no pointer, and every tap looks like nothing happened.
  2. Turn off "Use Primary Keyboard"Same screen → Pointer Devices → Mouse Keys. When it is on, the keyboard acts as a mouse and some characters never land.
  3. Mirror to this MacControl Center → Screen Mirroring → your Mac.
  4. Power the board and join Wi-FiConnect it over USB, flash the firmware and configure Wi-Fi in the app. If the board has an external antenna, attach it.

When all four are done, say "Is the phone connected?" — the AI checks each item and tells you what is missing.

32 tools in four groups

See

Capture the screen, read its text, detect orientation, and get clickable coordinates.

screenshot · ocr · orientation · click_text

Act

Tap, hold, drag, page, type, and press key combinations.

click · long_press · drag · scroll · type_text · key

Speak

Mac speech plus phone dictation for CJK input, and UI sound effects.

speak · dictation · play_audio

Calibrate & diagnose

Request calibration, read state and logs, check whether a shortcut is allowed.

calibration_request · app_status · app_logs · keymap_check

How it works

Three parts doing three simple jobs.

The iPhone mirrors its screen to the Mac over AirPlay; the Mac commands the ESP32-S3 board over Wi-Fi; the board operates the iPhone as a Bluetooth keyboard and mouse
① AirPlay — the AI sees the screen ② Wi-Fi — the Mac commands the board ③ BLE HID — the board taps the phone
1

See

Mirror the iPhone to your Mac with the built-in Screen Mirroring. The app turns frames into images the model can reason about.

2

Act

The ESP32-S3 pairs as a standard Bluetooth keyboard and mouse, and performs the taps and keystrokes the Mac sends it.

3

Orchestrate

A local control service exposes the device to your AI over MCP: look, tap, look again. Every action is verified.

Console

Quileg HID console (light): the live iPhone screen on the left, mouse and keypad controls on the right

The live phone screen on the left, control and device panels on the right

Three generations

One idea throughout: make a device act as a standard keyboard and mouse. The first two generations were built on STM32 as wired devices plugged into a computer; the third moved to the ESP32-S3 and Bluetooth, and to a phone. Neither of the first two was released publicly.

  1. First July 2024

    Quileg programmable HID simulator

    A standalone STM32 device that runs your scripted routines as a keyboard and mouse. Built in several enclosure colours (photo below). Never released; project page

  2. Second July 2025

    Multi-device chaining

    Still STM32, but now several units can be chained or run in parallel. Never released.

  3. Third · current 2026 – present

    Quileg HID

    Switched to the ESP32-S3 and Bluetooth, so no cable is needed. The target moved from a computer to a phone: mirror the screen, act with keyboard and mouse, let an AI drive the iPhone.

First-generation Quileg device: yellow, white and blue enclosures with an OLED display and buttons
First generation · STM32 device, three enclosure versions (photo)

Get started

About 30–40 minutes from unboxing to first tap — around 13 of those are the one-time calibration. After that it only needs redoing if the phone, resolution, pointer size, video source or orientation changes.

1

Get a board

Any ESP32-S3 with 16MB flash. If it has an external antenna connector, connect the antenna — Wi-Fi is unusable without it.

2

Install and flash

Download the DMG, drag the app into Applications, connect the board over USB and flash the firmware from inside the app.

3

Mirror, calibrate, go

Open Control Center → Screen Mirroring → choose your Mac. On the iPhone, turn on AssistiveTouch (Settings → Accessibility → Touch) and make sure Pointer Devices → Mouse Keys → Use Primary Keyboard is off. Then run the calibration once in the app.

Requirements

macOS13.0 (Ventura) or later
ProcessorApple Silicon (M1–M4) or Intel Mac (macOS 13–26). Two separate downloads: use -arm64 on Apple chips, -intel on Intel Macs
HardwareESP32-S3 dev board, 16MB flash. Verified: Seeed XIAO ESP32S3 Plus; third-party boards with the ESP32-S3-WROOM-1-N16R8 module (some batches ship XMC flash — test before relying on it)
NetworkMac and board on the same 2.4GHz LAN
Target devicesiPhone / iPad (Screen Mirroring); Android / Windows / macOS (requires a UVC capture card)
PriceFree

Technical notes

Local control API and MCP

The app serves HTTP on 8890; the GUI, the control layer and MCP share it.

curl -s http://127.0.0.1:8890/api/status

32 MCP tools cover status, screenshots, taps, typing, scrolling, dragging, key presses, calibration and speech.

Why calibration takes 13 minutes

A Bluetooth mouse sends relative motion, but an assistant needs to hit a specific button. Calibration records the four corner stops, a per-axis mapping table for each corner, the end-to-end latency and a verification pass, and saves a profile keyed by source:resolution (e.g. airplay:500x1080). It only needs repeating when the phone, mirroring resolution, pointer size, video source (AirPlay ↔ UVC) or orientation changes — not when the board changes. AirPlay and UVC each need their own calibration.

Third-party components

The app itself is closed source. Corresponding source for the GPL-3.0 components is published with every release.

Code signing and verification

Every build is signed with a Developer ID certificate, notarized by Apple, and the notarization ticket is stapled into the bundle, so the first launch works offline.

shasum -a 256 Quileg-HID-<version>.dmg

Compare against the SHA-256 published on the releases page.

FAQ

Why is the board required?

iOS gives no software the ability to synthesize touch input. The only way in is real Bluetooth HID events from an external device — which is exactly what the ESP32-S3 does. That is also why no jailbreak and no app install are needed.

Can this get my account banned?

From the device's point of view the input is indistinguishable from a human using a keyboard and mouse. Still, only use this on devices and accounts you are authorized to operate, and follow each platform's terms of service.

Intel Mac support?

Yes — download the Intel build (file name ends with -intel.dmg). It matches the Apple Silicon build feature-for-feature and is signed and notarized. Note that macOS 26 is the last release for Intel Macs.

On iPad the pointer hitting the top edge looks like a lock screen?

It is not a lock. On iPadOS 26, moving the pointer to the top edge pulls down Notification Center (left half) or Control Center (right half) — a full-screen clock that looks exactly like the lock screen. Press Esc or click empty space to dismiss it.

Since 0.9.33 the app parks the pointer from the bottom edge instead, so it never touches the top edge. After upgrading, run the calibration once more. Keep the device untouched during calibration and set Auto-Lock to Never.

Do I install anything on the phone?

No. No app, no developer mode, no jailbreak — just the built-in Screen Mirroring.

Is my screen uploaded anywhere?

No. Mirroring, frame processing and control all happen locally, and the service binds to 127.0.0.1. Whether screenshots reach an AI model depends on the AI tool you choose.

Let the assistant tap for you

Free to download. No account required. All you need is an ESP32-S3.