Skip to content
rahatsagorPublic

About

Turn your iPhone, iPad or Android phone into a trackpad, keyboard, Stream Deck-style button deck and voice typer for your Mac. No phone app, no account, local network only.

Topics

Resources

Contributing

Security policy

Stars

200 stars

Watchers

2 watching

Forks

Repository files navigation

CmdPalm app icon

CmdPalm

Your Mac, in your palm.

Turn your iPhone, iPad or Android phone into a trackpad, keyboard and button deck for your Mac.
No app to install on the phone. No account. Nothing leaves your network.


Download for Mac   Website   Docs


Latest release macOS 15+ Apple silicon AGPL-3.0 License

Using Windows? Meet WinPalm


A phone moves the Mac's pointer as a trackpad, types as a keyboard, runs buttons from a deck and types what you say


1. Install on your Mac
It lives in the menu bar.

2. Scan the QR code
Open your phone's camera and scan the QR code.

3. You're in control
Add it to your home screen and it opens like an app.

Using Windows? Meet WinPalm.

WinPalm app icon

ALSO FROM RS APPLICATION

Your PC, in your palm.

WinPalm brings the same phone-to-computer idea to Windows, with native Windows input and integrations. Turn your phone into a Windows trackpad, keyboard and shortcut deck.

WinPalm on GitHub → · Website · Windows documentation

Everything you need from the couch

Tapping, scrolling and pinching on the phone moves and zooms on the Mac

Trackpad

Tap to click, drag, two-finger scrolling with real momentum, a one-thumb scroll strip that keeps going while you hold it, smooth pinch zoom and two-finger rotation like a Mac trackpad, and three- and four-finger gestures you can assign. The pointer glides smoothly even on busy Wi-Fi.

Typing on a full Mac keyboard on the phone

Keyboard

Shows your Mac's own layout, with sticky modifiers, function and media keys, and follows the Mac when you switch input sources. Shortcuts arrive intact even on shaky Wi-Fi, and you can hold several keys at once for any combination. Sideways keyboard fills an upright phone with the full Mac keyboard.

A custom game keyboard with WASD keys

Custom keyboards

Only the keys you need, laid out how you like: arrows for slides, WASD for games, or your editing shortcuts. Each key stays pressed for as long as you touch it. Tap Edit and drag the keyboard tabs to put your groups in the order you want.

A grid of buttons on the phone controlling the Mac

Deck

A button grid like a Stream Deck: shortcuts, text snippets, apps, websites, system actions, Shortcuts automations, mouse clicks and multi-step sequences that run in order, shared by all your devices. Shell commands work too, once you allow them. Tap Edit and drag the page tabs to reorder them across your devices. Undo and redo in the Edit toolbar recover accepted edits, including deleted buttons and pages. Changes from another device clear this device’s Undo history. App buttons offer Show / hide, Open, Hide and Quit. Sequences wait for a Shortcuts automation to finish successfully before running the next step; a failed Shortcut stops the sequence.

Launching a Mac app from its icon on the phone

Apps and media

Launch, switch, hide and quit apps with their real icons, including apps on an external drive. Play, pause and skip, and set the volume, display brightness and keyboard backlight.

Speaking into the phone while the Mac types the words

Voice

Talk into your phone and your Mac types what you say. Speech is recognised on the Mac itself and never sent to a server.

Pair as many phones and tablets as you like. Each one's settings, custom keyboards and gestures are kept on your Mac too, so they survive a cleared browser. Use Copy settings from another device to choose individual settings sections and custom keyboards. Only your selection is added or updated; the rest of your setup stays as it is. Deck pages and buttons are already shared by all devices paired with the same Mac.

Use Settings → Back up or restore this device on the phone to export your settings and custom keyboards as a file, or review and restore a saved setup. Device backups leave your name and pairing as they are and never contain pairing tokens. Export the shared Deck separately from Settings → Deck on the Mac.

Made for real life

Presenting
A custom keyboard with giant ← and → keys, and B for a black screen. Walk the stage.

Movie night
Play, pause, skip, volume and brightness without leaving the couch.

Cooking
Prop the phone on the counter and scroll the recipe with messy hands.

Gaming
A WASD layout where every key stays pressed for as long as you hold it.

Streaming
Go live, mute the mic and switch scenes from a page on your Deck.

Quick replies
Tap the mic, say it, and your Mac types every word.

Private by design

Local only
CmdPalm talks to your phone over your own network. There are no accounts, no analytics and no cloud service. The only outside connection is the update check.

Only devices you pair
Pairing needs the QR code, the PIN shown on your Mac, or your approval on the Mac. You can remove a device at any time.

One switch to stop everything
Pause in the menu bar stops all input instantly, including text that is still being typed and shell commands left running in the background.

Encrypted when you want it
CmdPalm creates its own certificate for an encrypted connection, and nothing you type ever appears in its logs.

Read SECURITY.md for the full details.

Requirements

  • A Mac with Apple silicon, running macOS 15 Sequoia or later.
  • An iPhone or iPad with iOS 17 or later, or an Android phone, on the same network as the Mac. CmdPalm works in Safari, Chrome, Firefox and Samsung Internet.

Install

With Homebrew

brew install --cask rahatsagor/tap/cmdpalm

Or download it

  1. Download CmdPalm.dmg and drag CmdPalm into Applications.

  2. CmdPalm is free and open source, and it isn't notarized by Apple yet, so macOS asks you to confirm the first time it opens. Run this once in Terminal:

    xattr -dr com.apple.quarantine /Applications/CmdPalm.app

    Or open CmdPalm, then go to System Settings → Privacy & Security and click Open Anyway.

  3. Open CmdPalm from Applications. It appears in the menu bar.

You only do this once. Updates install from inside the app, and Homebrew skips this step for you.

Get started in a minute

The CmdPalm docs explain every screen, setting and button in detail, from getting started to the encrypted connection and troubleshooting.

  1. Allow Accessibility. macOS requires it for any app that moves the pointer or types. CmdPalm asks on first launch and opens the right page in System Settings.
  2. Scan the QR code in the menu bar with your phone's camera. You can also open the address shown under the code and enter the six-digit PIN while the CmdPalm menu is open. CmdPalm remembers the phone, so it reconnects on its own next time.
  3. Add it to your home screen for a full-screen app:
    • iPhone and iPad: Share → Add to Home Screen.
    • Android: Chrome installs web apps only over an encrypted connection. Set it up from Settings → Phone Setup → Encrypted Connection on the Mac, then install CmdPalm from Chrome's menu. Without it, Chrome can add a shortcut that opens in a browser tab.

Tip

If scanning the QR code on an Android phone doesn't open CmdPalm, set QR link uses to IP Address under the QR code. Some Android phones can't open .local names.

Voice typing

Browsers allow the microphone only over an encrypted connection. Open Settings → Phone Setup → Encrypted Connection on the Mac, install the certificate on your phone as shown, then pair with the Encrypted link. Without it, everything else works, and you can still dictate with the microphone button on your phone's keyboard.

Your Mac recognises the speech itself, so voice typing needs on-device recognition for your language. If CmdPalm says it isn't available, turn on Dictation in System Settings → Keyboard so macOS downloads it, or pick another language.

Gestures

On the trackpad Does
Tap Click
Two-finger tap Right-click
Touch and hold, then move Drag
Tap, then touch again and move Drag
Two-finger move Scroll
Drag the scroll strip on the edge Scroll; hold the short strip at the top or bottom to keep going
Pinch Zoom smoothly, as on a Mac trackpad (or ⌘+ and ⌘−)
Turn two fingers Rotate photos, maps and PDFs
Two-finger double-tap Smart zoom (turn it on in settings)
Three-finger swipe up / down Mission Control / App Exposé
Three-finger swipe left / right Switch spaces
Three-finger tap Middle click
Three-finger move Drag (turn it on in settings; three-finger swipes then turn off)
Four-finger swipe up / down Apps (Launchpad on macOS 15) / Show Desktop
Thumb and three fingers pinch / spread Apps / Show Desktop

The scroll strip can be short, long or hidden under Scrolling & zoom in the phone's settings. It can also be wider, and sit right at the screen edge so a finger sliding along the side of the phone scrolls. Every gesture can be changed in the phone's settings. Turn on Show advanced settings for pointer acceleration, gesture mapping and text options.

Modifiers work three ways: tap for the next key only, double-tap to lock, or hold while you press another key or click. The hand button in the top bar lets go of every held key and button at once.

Troubleshooting

The phone can't reach the Mac

Both need to be on the same network. Guest networks and some office or hotel Wi-Fi block devices from talking to each other. If scanning the QR code doesn't open CmdPalm, set QR link uses to IP Address under the QR code. Check that the macOS firewall allows incoming connections for CmdPalm.

The pointer stopped moving after an update

macOS ties the Accessibility permission to the app's signature. If CmdPalm is listed and switched on but nothing happens, select it in System Settings → Privacy & Security → Accessibility, remove it with the – button, then add it again.

Keys type the wrong characters

CmdPalm follows the Mac's current input source. For apps that ignore typed text, such as games, virtual machines and remote desktops, set Send text as to Key presses in the phone's advanced settings and turn Live off in the typing panel. Live typing always sends characters.

Using a VPN, your own DNS name or a reverse proxy

Most people never need this. If you connect your devices some other way, CmdPalm can go along with it:

  • A VPN or mesh network (WireGuard, Tailscale, ZeroTier and the like): in Settings → Phone Setup, set Address in the QR code to Custom and pick the Mac's VPN address from the menu next to the field.
  • A name from your own DNS, such as studio.home.arpa: type it in Custom. CmdPalm accepts connections that use that name.
  • A reverse proxy on the Mac (Caddy, nginx, or a VPN's HTTPS sharing): point it at http://localhost:8790, type its https:// address in Custom, and turn on Accept connections through a proxy on this Mac under Settings → Advanced. The phone then gets an encrypted connection from the proxy's certificate.

Each address is a separate site to the phone's browser, so pair once for each address you use.

Something else

The troubleshooting docs cover more problems. Logs are in ~/Library/Logs/CmdPalm, and they never contain what you type. Please include them when you open an issue.

Build from source

You need Xcode, Rust, Bun and XcodeGen.

brew install xcodegen
scripts/build-app.sh          # build/Release/CmdPalm.app

CONTRIBUTING.md covers the project layout and development workflow. Bug reports and ideas are welcome as issues; the project does not accept pull requests.

License

© 2026 CmdPalm. Free and open source under the GNU Affero General Public License v3.0. You may use, study, share and modify CmdPalm, but anything you distribute or offer to others that is based on it must be released under the same license, with its full source code.

About

Turn your iPhone, iPad or Android phone into a trackpad, keyboard, Stream Deck-style button deck and voice typer for your Mac. No phone app, no account, local network only.

Topics

Resources

Contributing

Security policy

Stars

200 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages