Skip to content

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.
  • Verified feedback: Each one-tap control tells you whether the Mac was already locked, became locked, or accepted the request without confirming the state transition. Control Center uses native momentary status text, while the Home Screen widget updates its own icon and message and can refresh the Mac's current status on demand.
  • Automatic when you leave: Bluetooth proximity lets the Mac lock itself when you walk away with your iPhone. Smart detection is the default; Manual mode keeps direct RSSI, delay, and smoothing controls. Smart keeps a conservative rolling nearby reference so a momentarily stronger reading cannot make ordinary desk-range fading look like departure.
  • Pause when you need it: Suspend proximity auto-lock for 15 minutes to four hours, or choose an exact resume time. The pause survives a relaunch and ends automatically without turning auto-lock off.
  • 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.
  • Stable device identity: Macs use the name supplied by macOS, while each iPhone installation gets a short stable label derived from its UUID.

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. The same authenticated connection returns the Mac's observed lock state, and the iPhone app can refresh that state on demand. Enable proximity auto-lock when you want walking away to be enough; it runs on the Mac and does not require the iPhone app to stay open. The Mac also keeps a local list of paired iPhones. Removing a pairing from either side is synchronized the next time the devices connect. Stable UUIDs identify each installation independently of its displayed name.

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 and Settings › About. 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
mac_id generated once Stable Mac identity shared with paired clients
remote_host "" Public hostname of your HTTPS tunnel. Empty is LAN-only.
proximity_auto_lock false Lock when the selected iPhone leaves
proximity_pause_until omitted Unix timestamp when a temporary pause ends
proximity_mode "smart" Adaptive detection, or "manual" for direct RSSI controls
proximity_sensitivity "balanced" Smart-mode reaction preset
proximity_far_rssi -56 Manual-mode far threshold in dBm
proximity_grace_seconds 2 Manual-mode threshold confirmation time
proximity_smoothing 3 Manual-mode RSSI averaging window

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.

About

Lock your Mac with one tap from iPhone or Apple Watch, or automatically when you walk away.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages