Skip to content

PangMo5/Amado

Repository files navigation

Amado

Latest release Download Swift 6 macOS 15+ iOS 18+ watchOS 11+ License: MPL-2.0

Lock your Mac with one tap, or just walk away.

Amado (雨戸) are the sliding shutters that close a Japanese house. One tap closes your Mac the same way. Walk away with your iPhone and Amado can close it automatically.

Features

  • One tap, everywhere: Lock from the iPhone app, Apple Watch, a Home Screen widget, or Control Center.
  • Automatic when you leave: Bluetooth proximity lets the Mac lock itself when you walk away with your iPhone.
  • Fast on your LAN: Bonjour discovery and a direct authenticated command, with no account or hosted service.
  • Remote when you choose: Bring your own HTTPS tunnel. Amado never proxies commands through a service operated by this project.
  • Authenticated pairing: QR pairing provisions a 256-bit secret used for HMAC-SHA256 authentication, timestamp checks, and replay protection.

How it works

Apple Watch ── WatchConnectivity ──▶ iPhone ─┬─ Bonjour + TCP ───────▶ Mac
Widget / Control Center / iPhone app ────────┤
                                             └─ HTTPS tunnel ───────▶ Mac
Nearby iPhone ───────── Bluetooth proximity ────────────────────────▶ Mac

The iPhone client tries the local network first and uses the paired Mac's optional tunnel only when LAN delivery is unavailable. The tunnel forwards to a loopback-only HTTP listener on 127.0.0.1:51521. Use a control when you want an immediate lock. Enable proximity auto-lock when walking away should be enough.

See Security for the trust model and protocol boundaries.

Install

Install the macOS agent with Homebrew:

brew install --cask PangMo5/tap/amado

Or download it from GitHub Releases. Sparkle checks for updates in the background, and Check for Updates… is available from the menu-bar item. The companion iPhone app, widget, and Watch app are distributed together through TestFlight.

  1. Launch Amado on the Mac and enable Launch at Login if wanted.
  2. Open Settings › Pairing › Reveal pairing code.
  3. In the iPhone app, scan the QR code.
  4. Use the app, widget, Control Center control, or Watch app to lock the Mac.
  5. Optionally enable Auto-lock so leaving with the iPhone locks it for you.

Configuration

Most settings are available in the Mac app. Non-sensitive values also live at ~/.config/amado/config.toml (or $XDG_CONFIG_HOME/amado/config.toml) and are reloaded when the file changes. Pairing secrets stay in Keychain.

Setting Default Purpose
remote_host "" Public hostname of your HTTPS tunnel. Empty is LAN-only.
proximity_auto_lock false Lock when the selected iPhone leaves
proximity_far_rssi -56 Far threshold in dBm
proximity_grace_seconds 2 Time beyond the threshold before locking
proximity_smoothing 3 Number of RSSI samples to average

See the complete config.toml reference, pairing guide, remote access guide, and proximity auto-lock guide.

Build from source

export TUIST_DEVELOPMENT_TEAM=YOUR_TEAM_ID
mise install
make bootstrap
open Amado.xcworkspace

Tech stack

  • Tuist-generated Xcode workspace
  • The Composable Architecture and Sharing
  • Hummingbird for the loopback HTTP endpoint
  • Sparkle for macOS updates
  • WidgetKit, App Intents, and WatchConnectivity
  • Swift Testing and strict Swift 6 concurrency

License

Mozilla Public License 2.0. MPL-2.0 is file-level copyleft: changes to MPL-covered files remain under MPL-2.0, while new files may use another compatible license. Executable distribution is allowed as long as recipients can access the covered source.

Releases

Packages

Contributors

Languages