Mote
A macOS agent and relay that locks a Mac from an iPhone Shortcut. Deploy on Cloudflare Workers, or self-host the relay with Docker.
- Status
- Active
- Year
- Area
- Desktop apps
- Platforms
- macOS
Overview
Mote is a remote-action system for the operator’s own Macs. Siri or an Apple Shortcut sends an authenticated HTTPS command to a relay. The relay forwards it over a persistent WebSocket to a menu-bar agent, which locks the machine. The dashboard on the same relay can send that command too.
The product name is Mote. The relay is a backend, not a separate product.
What it does
The allowlist is one action: lock the Mac. There is no arbitrary shell execution and no remote AppleScript. A lock is not queued if the Mac is offline.
Pairing is explicit. The Mac asks to pair, the dashboard allows it, and device credentials go into the macOS Keychain. Shortcut tokens, device credentials, and the dashboard login are not interchangeable.
A native iOS app is not in the repository. The command API reserves a source for it. A direct connection on the local network, skipping the relay, is also not implemented.
Deployment
The repository documents two ways to run the relay:
- Cloudflare Worker + Durable Object. This is the recommended deploy. HTTPS terminates on the Worker. SQLite and the Mac’s WebSocket live in the same Durable Object.
- Self-hosted Docker. Compose runs the relay on a machine you control. You put your own public HTTPS in front of it, such as a tunnel or another reverse proxy. The Compose stack does not include Caddy, nginx, or cloudflared.
The Mac app is the supported client. The current project has no Windows agent.
How it’s built
- Mote for Mac — Swift 6 and SwiftUI. Menu bar, Keychain, outbound WebSocket, command checks, and lock via CoreGraphics.
- Mote Relay — Node.js, TypeScript, Fastify, and SQLite, plus a Cloudflare Worker and Durable Object deployment of the same role.
- Dashboard — React and Vite, served by the relay.
Public traffic is HTTPS and WSS. I do not publish hostnames, addresses, or admin surfaces here. Protocol and deployment details stay in the GitHub README.
Limits
One operator, their relay, and their Macs. Windows is outside the current client. iOS and on-LAN direct connect are written down as next steps, not as features you can use today.
