Projects

Mote

A small macOS agent and relay that lets me lock my Mac from an iPhone Shortcut.

2026Active

  • macOS
  • Self-hosted
  • TypeScript

GitHub (opens in a new tab)

Overview

Mote is a personal remote-action system for one Mac and one iPhone. Siri or an Apple Shortcut sends an authenticated HTTPS command to a self-hosted relay. The relay forwards it over a persistent WebSocket to a menu-bar agent on the Mac, which then locks the machine.

The product name is Mote. The relay is a backend, not a separate brand.

What it does

Today the allowlist is a single action: lock the Mac. The dashboard on the relay can issue the same command. There is no arbitrary shell execution, no remote AppleScript, and no queued lock if the Mac is offline.

Pairing is local and explicit: the Mac asks to pair, the dashboard allows it, and device credentials go into the macOS Keychain. Shortcut tokens and device credentials are not interchangeable, and neither can log into the dashboard.

How it’s built

Three pieces in one repository:

  • Mote for Mac — Swift 6 and SwiftUI. Menu bar, Keychain, outbound WebSocket, command checks, lock via CoreGraphics.
  • Mote Relay — Node.js, TypeScript, Fastify, SQLite. HTTP API, pairing, device socket, static dashboard.
  • Dashboard — React and Vite, served by the relay.

Public traffic is HTTPS and WSS. I reach the relay through an existing Cloudflare Tunnel rather than opening the LAN. Native iOS is planned against the same command API and is not in the repository yet.

Limits

This is a one-person tool. The GitHub README is the source of truth for protocol and deployment. I do not publish hostnames, addresses, or admin surfaces here.