PocketCtrl
Open source · MPL-2.0

Your Mac, controlled from the device in your pocket.

Native remote control for your Mac from an iPhone, iPad, or another Mac. Encrypted end to end, connecting directly over your own network. Free, with no account required.

Free and open source, for Mac, iPhone, and iPad.

View on GitHub
PocketCtrl on the Mac, showing a saved Mac mini ready to connect and the Host control in the toolbar.
PocketCtrl on iPhone, listing two saved Macs and a button to connect a new Mac.

How it works

Three steps, no middleman.

PocketCtrl connects your Mac and your device directly over your own network. There is no PocketCtrl account to sign in to and nothing to set up in the cloud.

  1. 01

    Pair once

    The Mac shows a QR code or a 12-character code that expires in two minutes. Approving a device requires Touch ID or your password on the Mac itself.

  2. 02

    Connect directly

    On the same Wi-Fi, PocketCtrl finds your Mac over Bonjour. Anywhere else, it uses your own Tailscale tailnet. Traffic goes device to device.

  3. 03

    Take control

    A touch trackpad with real gestures, a keyboard with Mac shortcuts, voice typing, clipboard sync, and system audio. View-only until you say otherwise.

Features

A full remote desktop, not a screen mirror.

Everything is built natively for each platform. The Mac app is both host and viewer; the iPhone and iPad app is a real client with real input.

Native capture and encode

ScreenCaptureKit and hardware VideoToolbox encoding. HEVC by default, H.264 available, up to 60 fps.

Touch trackpad

One finger to point and click, two to scroll, pinch to zoom, two-finger double-tap to reset. Double and triple clicks work.

iPad pointer support

With a Magic Keyboard or trackpad, hover states, right-click, and native scrolling all behave like a real pointer.

Voice typing

Streaming speech recognition types into the Mac as you speak, not after you stop.

Keyboard and shortcuts

A full keyboard overlay and a palette of common Mac shortcuts, one tap away.

Clipboard and audio

Bidirectional text clipboard sync and system audio streaming, each gated behind its own permission.

Adaptive quality

Saver, Balanced, and Max profiles on the client. The host adjusts bitrate live from viewer feedback.

Multi-display, multi-Mac

Choose which display to share. Save several Macs, rename them, and wake them with Wake-on-LAN.

Menu bar host

Runs from the menu bar, launches at login, keeps the Mac awake while hosting, and resumes after sleep.

Security

Least privilege by default.

Every new device starts view-only with a session-only credential that is never written to disk. Input, clipboard, audio, and unattended access are separate capabilities you grant explicitly, and approving any device requires Touch ID or your password on the Mac.

CapabilityDefault
Screen viewingAlways
Mouse and keyboardOff
ClipboardOff
Mac audioOff
Unattended accessOff

Under the hood

  • Screen, audio, input, and clipboard traffic use ChaCha20-Poly1305 authenticated encryption.
  • Keys are derived per device and per channel with HKDF-SHA256, with device and channel identity bound into the ciphertext.
  • Pairing uses ephemeral Curve25519 key agreement tied to the short code, so credentials are never sent in the clear.
  • Pairing is closed by default, invalid proofs are rejected, and repeated failures are rate-limited.
  • Unattended credentials live in the Keychain, device-only, and are unavailable while the Mac is locked.

Pre-release software

The protocol has not received a professional independent audit. Do not expose PocketCtrl's ports to the public internet; use a local network or Tailscale. Read the security policy

The approval sheet shown on the Mac for every new device.

Connectivity

Two routes, both yours. No account required.

PocketCtrl connects your devices to each other directly. Which route it uses is pinned at pairing time, so a device paired over Tailscale only accepts Tailscale traffic.

Local network

On the same Wi-Fi, the Mac advertises itself over Bonjour and the client finds it automatically. Discovery shares routing metadata only, never a credential, and can be switched off entirely.

  • Bonjour discovery with macOS Local Network permission checks
  • Wake-on-LAN to bring a sleeping Mac back online

Tailscale

Away from home, your own Tailscale tailnet gives both devices a private address. The pairing code embeds the Mac's Tailscale address, so you never type an IP. Tailscale handles NAT traversal; PocketCtrl stays end-to-end encrypted on top.

  • Works across Wi-Fi and cellular without port forwarding
  • Free for personal use; not affiliated with PocketCtrl

Automation

A scriptable host, ready for agents.

The Mac host exposes a loopback-only, token-authenticated control API. Drive it from the command line, or hand it to an AI agent through the bundled MCP server.

  • Command line

    Start, stop, restart, read the pairing code, or change fps, bitrate, codec, and permissions from a shell.

  • MCP server

    Seven tools let Claude, Codex, or any MCP client manage the host. When an agent is driving your Mac, PocketCtrl is how you watch, step in, and take over from your phone.

  • Local only

    The API listens only on the Mac itself and rejects connections from anywhere else. Regenerating the pairing key invalidates the control token immediately.

pocketctrl-control
# Build the CLI from the repository root
$ swift build --product pocketctrl-control
# Inspect and tune the running host
$ pocketctrl-control status
$ pocketctrl-control set fps 60 bitrate 12 remote-input on
$ pocketctrl-control code
Q2WX-7RKM-4TJB expires in 1:52

MCP tools

  • pocketctrl_host_status
  • pocketctrl_host_pairing_info
  • pocketctrl_host_start
  • pocketctrl_host_stop
  • pocketctrl_host_restart
  • pocketctrl_host_regenerate_pairing
  • pocketctrl_host_set_settings

Get started

Set up in a few minutes.

Two short guides cover the Mac permissions and the private network. Everything else is handled by pairing, and the help center explains every message you might see.

Build from source
$ git clone https://github.com/PocketCtrl/pocketctrl.git
$ cd pocketctrl/PocketCtrlNative
$ open PocketCtrl.xcodeproj
# Run the PocketCtrl scheme on a Mac, PocketCtrlMobile on iPhone or iPad

Requirements

  • HostA Mac with Screen Recording permission, plus Accessibility if you enable remote input.
  • ClientiPhone or iPad on iOS 18 or later, or another Mac.
  • NetworkThe same Wi-Fi, or Tailscale on both devices.
  • BuildXcode 15 or newer to build from source.

Open source

Built in the open.

Read the code, build it yourself, and verify every claim on this page. PocketCtrl is free to use, and everything it does today stays free. Issues and pull requests are welcome.

MPL-2.0

The apps, protocol, CLI, and MCP bridge are Mozilla Public License 2.0. Every published version stays available under that license.

Licensing policy

Contributing

Development checks, the pull request template, and the contributor license agreement are documented in the repository.

Contributing guide

Stewardship

Created by Kylan O'Connor at Iterative, which owns and maintains the project with a documented governance and trademark policy.

Governance