YOWL

MacBook theft alarm · free · open source · macOS 14+

Make taking it loud


Arm it when you leave your laptop on a café table. Unplug the charger, close the lid, or pick the machine up, and it screams at full volume — over mute, over headphones — locks the screen, and photographs whoever is standing there.

macOS 14 or later · Universal (Apple Silicon and Intel) · 1.2 MB · signed and notarised by Apple

The hard part

A café is full of people walking past a still laptop


So the detector does not ask whether the picture changed. It asks whether one single shift explains the whole frame — because if everything moved together, the camera moved. Press either button and watch the pen.

Motion score — live quiet
0.0009 fires above 0.0050

Real numbers, measured on a real camera. The scale is logarithmic — quiet and alarm are three decades apart.

The short version

What sets it off, and what it does


The charger is pulledon by default
The classic grab. Needs the charger connected before you can arm.
The laptop is movedopt in · uses the camera
Tells the machine moving apart from people moving in front of it. Tune it at your own table with the live readout.
The lid is closedopt in · needs the hinge sensor
Reads the hinge angle and fires once the lid has closed 30° — roughly 80° before it shuts, so everything happens before the Mac sleeps. Closing it fully does sleep the machine and silence the siren; it sounds again on wake.

Check it yourself

Don't take our word for it


It asks for your camera. You are being asked to trust a stranger's binary with that — so the source is open, and the two claims that matter take about a minute to check.

# Every piece of networking in the app.
$ grep -rn "URLSession\|NWConnection" Sources/
  Sources/AlarmCore/Alerts/AlertTransport.swift   ← the only HTTP client
  Sources/AlarmApp/AppModel.swift                 ← builds it, once

# What the signed app is actually allowed to do.
$ codesign -d --entitlements - /Applications/Yowl.app
  com.apple.security.device.camera
  com.apple.security.network.client

That client is used in one place: sending an alert to the topic you chose, and only if you switched phone alerts on. No accounts, no analytics, no telemetry to find.

One thing more, because it would be dishonest to leave it out. If you switch on "keep screaming with the lid closed", Yowl installs a helper that runs as root — the only part of it that does. You approve it in System Settings and you can remove it there. It has no entitlements and exactly two commands: hold sleep off, and let it go. It lets go by itself after 60 seconds, when the alarm stops, when it exits, and when it starts. That is about sixty lines, in Sources/YowlHelper/main.swift, and it is worth reading before you agree to it. Leave the switch off and nothing privileged is ever installed.

Read this before trusting it

What it does badly


Repetitive backgrounds beat the motion detection. Window blinds, tiled floors, brick — when the background repeats, it genuinely cannot tell a passer-by from the laptop being moved. Open the sensitivity test at your table and wave a hand: if the number jumps, don't rely on it there.

A closed lid is silent. There is no way around it. Measured directly rather than assumed: with the lid shut the app keeps running, the output device is still there, the volume still reads 1.0 and the mute flag is held off four times a second — and no sound comes out. The reason is that holding off a sleep is not the same as preventing one: the machine starts its sleep the moment the lid shuts and powers the audio down on the way, while the app is only postponing the final step. A Mac does play through its own speakers with the lid closed in clamshell mode, where the sleep is never requested — but that normally needs an external display and mains power. The documented way around that requirement, an AppliesOnLidClose assertion, was refused here both as a normal user and as root. What still works is everything in the moments before: the lid trigger fires around 80° before it shuts, so the siren, the screen lock, the photographs and the push to your phone all happen first, and the Mac is held awake afterwards so those finish sending.

⌘Q still stops the alarm. The Quit menu item is disabled while armed, but the keyboard shortcut is not. An app you cannot quit is its own kind of bad, so this is the trade.

It is a deterrent, not recovery. Turn on Find My and FileVault — those are what protect a stolen Mac. This makes taking it loud and public, which is a different job.

Tested on one Mac. The download is universal and should run on Intel MacBooks, but nobody has tried it on one — and the lid trigger needs a hinge sensor Intel Macs do not have, so it stays hidden there. If you run it on anything else, please say how it went.

MIT licensed · jernejkocica@gmail.com GitHub · Report something