MacPilot

skill
Security Audit
Fail
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Fail
  • rm -rf — Recursive force deletion command in deploy.sh
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Turn your Mac into a wireless trackpad, keyboard & Stream-Deck — controlled from any phone's browser. No app install. Open source, built with Claude Code.

README.md

JoonLab

MacPilot

Turn your Mac into a wireless trackpad, keyboard & Stream-Deck — controlled from any phone's browser.
No app to install. Open source. Built end-to-end with Claude Code.

아이폰·아이패드·안드로이드 어디서든 브라우저만 열면 맥을 마우스/키보드/단축키 패널로 조작. 앱 설치 0.

🎬 Demo

MacPilot demo

▶︎ Open as mp4 file


What is this?

MacPilot runs a tiny menu-bar helper on your Mac that serves a web app over your local Wi-Fi.
Open the URL on any phone or tablet and you get a full trackpad + keyboard + customizable shortcut/macro deck — all in the browser.

  • No App Store. No install on the phone. Just open a URL (or scan the QR in the menu bar).
  • Works on iOS, iPadOS, Android — anything with a browser.
  • Free & open source — a replacement for paid apps like Remote Mouse, Unified Remote, etc.

원래 비슷한 기능은 유료 앱을 결제해서 써야 했지만, 이건 무료 오픈소스이고 폰에 앱을 깔 필요조차 없습니다.

✨ Highlights

  • 🖱️ Real-trackpad feel — cursor with pointer acceleration, tap / double-tap / right-click, tap-and-drag, two-finger scroll with momentum, pinch-zoom, and three-finger swipes (Mission Control / spaces-style)
  • ⌨️ Full keyboard — types real text incl. Korean & emoji (Unicode), plus held-modifier combos (hold ⌘ and type)
  • 🎛️ Stream-Deck-style deck — folders, swipeable pages, and buttons for:
    • Shortcuts up to 4-key combos (⌘⌃⇧⌥ + any key)
    • Text snippets · App / link / deep-link launch (pick from your installed apps, with icons)
    • Multi-step macros (key → delay → text → launch, in sequence)
    • Per-button icons & colors, drag-to-reorder, move between folders
    • → covers much of what a hardware Stream Deck does — on a device you already own, for free
  • 🔊 System controlsvolume up / down / mute and screen brightness, right from the deck (with the native macOS HUD)
  • 🔁 Deck synced across devices — the Mac stores it, so iPhone & iPad share the same deck
  • 🎨 Polished UI — LG-inspired theme, light / dark / system toggle, adjustable sensitivity
  • 🛰️ Always-on local server — runs via launchd; auto-starts at login, auto-restarts. No Xcode needed after setup.
  • 🔒 Local only — everything stays on your Wi-Fi; nothing goes to the cloud.

How it works

 Phone / Tablet (any browser)                 Your Mac (menu-bar helper)
 ┌───────────────────────┐   Wi-Fi / LAN     ┌──────────────────────────┐
 │  Trackpad · Keyboard  │  HTTP + WebSocket │  NWListener web server    │
 │  Deck (shortcuts/macro)│ ───────────────▶ │  → CGEvent (mouse/keys)   │
 └───────────────────────┘                   │  → open (apps/links)      │
        (just a URL)                          └──────────────────────────┘

The web client is served by the Mac itself and is plain HTML/CSS/JS with zero external dependencies. The Mac side is a small Swift menu-bar app that hand-rolls the HTTP+WebSocket server (no frameworks) and injects input via Quartz Event Services (CGEvent).

Requirements

  • macOS 13+ (built & tested on macOS 26, Apple Silicon)
  • Xcode 16+ and XcodeGen (brew install xcodegen) — to build, once, on the Mac
  • A phone/tablet on the same Wi-Fi as the Mac

Install

git clone https://github.com/joonlab/MacPilot.git
cd MacPilot
brew install xcodegen          # if you don't have it
xcodegen generate
open MacPilot.xcodeproj
  1. In Xcode → target MacPilotHelperSigning & Capabilities → set Team to your Apple ID (a free account works).
  2. Run (▶). A 📡 icon appears in the menu bar.
  3. Click the menu-bar icon → grant Accessibility (System Settings → Privacy & Security → Accessibility → enable MacPilot Helper). Required for input injection — one time, persists.
  4. On your phone, open the http://<your-mac-name>.local:8765 shown in the menu (or scan the QR).

Run it as an always-on server (recommended)

./deploy.sh

Builds a Release app into ~/Applications and installs a launchd LaunchAgent so it starts at login and auto-restarts — you never need to open Xcode again. See SERVER.md for management commands.

Gesture reference

Gesture (on phone trackpad) Action on Mac
1-finger move / tap Move cursor / left click
Double-tap Double click
Tap then drag Drag (select / move)
Two-finger drag Scroll (with momentum)
Two-finger pinch Zoom (⌘+/−)
Three-finger ←→ ⌘← / ⌘→
Three-finger ↑ / ↓ Mission Control / App Exposé
Left / Right click buttons (below the pad) Click — or press-and-hold + drag on the pad for a real drag-select / move

Architecture

MacHelper/Sources/        Swift menu-bar helper
  HelperServer.swift        NWListener: HTTP + WebSocket, deck sync, app list
  HTTPWebSocketConnection   hand-rolled HTTP + WS framing (no dependencies)
  EventInjector.swift       CGEvent mouse/keyboard/scroll + text + macros
  AppList / DeckStore       installed-app scan, deck persistence
MacHelper/Web/            Web client (served to the phone)
  index.html / style.css / app.js   vanilla, no framework
project.yml               XcodeGen project definition
deploy.sh                 build → ~/Applications → launchd restart

Security

LAN-only and unauthenticated by default — anyone on the same Wi-Fi can connect.
Keep it on a trusted home network and do not expose port 8765 to the internet.

Credits & Attribution

Made by Park Joon (박준) — JoonLab, built end-to-end with Claude Code.

If you fork, modify, or redistribute this project, please keep the credit and link back to the original repo:
https://github.com/joonlab/MacPilot — the MIT license also requires retaining the copyright & license notice.

이 프로젝트를 변형·재배포해서 쓰실 땐 원저작자(JoonLab / 박준)와 위 repo 링크를 표기해 주세요.

License

MIT © 2026 Park Joon (JoonLab)

Reviews (0)

No results found