やめて stop it

Your MacBook already knows when you spank it, but it's shy.

yamete is a free menu bar app. Spank the lid and it can play a sound, call a webhook, or run a command. Knock the desk and it stays quiet.

Free · Apple Silicon MacBook · macOS 13 or later · M2 and newer, or M1 Pro / M1 Max

The yamete app icon: a cartoon MacBook with a blushing face
acceleration 0.8 g
rotation 60 °/s

0.52 g 47.7 °/s detected

Two real recordings, drawn the same way. The desk bump is 39% harder, and yamete still ignores it, because the laptop barely twists.

Spank or knock

Harder is not the same as a spank

Spank the lid and the hinge twists. Knock the desk and the whole machine just shoves sideways. yamete watches for that twist, which is why the bigger bump on this chart never counts.

rotation, °/s
Bump the desk Spank the lid Trackpad click Typing 60 0.8 g
g
Four real recordings. Sideways is how hard the hit was. Up is how much the laptop rotated. Only the spank sits high enough to count.

Sensitivity

You decide how picky it is

We replayed 40 recorded spanks against 150 seconds of typing, trackpad clicks, desk bumps, lid movement, and a laptop sitting still. Drag the slider to see what each setting would have done.

0.50
Spanks caught 35 / 40
False alarms 0

The default. Real spanks get through; the rest don't.

After the spank

What a spank can do

Turn on one action or stack a few. Each one can wait for a harder spank, so a tap can click and a real hit can mute the room.

Play a sound

Give it a file or a folder. It plays them in order or at random, and it will not play the same one twice in a row. You can also let a harder spank play louder.

# out of the box
/System/Library/
  Sounds/Sosumi.aiff

Call a webhook

Any URL, method, headers, and body. You can drop the spank's strength into the request, so Home Assistant, a Shortcut, or IFTTT can treat it like any other hook.

# POST body
{
  "tier": "{{tier}}",
  "g": {{peak_g}}
}

Run a command

Mute, lock, screenshot: anything a shell can do. The spank arrives as environment variables, or as JSON on stdin if you would rather parse it.

$ osascript -e "set volume 0"
# $YAMETE_TIER → major
# $YAMETE_PEAK_G → 0.52

Hidden behind an advanced switch

It waits a beat, on purpose

yamete notices the spank faster than you hear it. If the sound started immediately, it would get buried under the hit. Two hundred milliseconds later, you hear the reply instead. You can change the wait on each action.

A tap and a slam can do different jobs

Mark an action as micro, medium, or major. A light tap can play a click. A real spank can run the thing you actually care about. How hard you hit is what picks the action.

The app

It sits in the menu bar

Open Yamete and it starts listening. Quit and it stops. There is nothing else to install.

The window follows light and dark mode like any other Mac app.

The listener is built in. If you already have it running another way, the window just connects and does not take over.

You can also skip the window and run the listener on its own. The control protocol is ordinary JSON, so a terminal is enough if that is how you like to work.

On your Mac

Nothing leaves unless you send it

Motion, settings, and logs stay on your Mac. There is no account, no Chipcolate cloud, and no analytics in the app. The only thing that goes online is a webhook you set up yourself. This website only counts visitors, with no cookies.

  • On the machine

    Sensor readings are processed on your Mac and not stored for us. The live graph in the window is a local connection, and it is off when the window is closed.

  • No account

    No sign-up, no profile, no server of ours. Drag it out of Applications, and delete a couple of folders under ~/Library if you want every trace gone.

  • You choose what goes out

    Sounds stay on the Mac. Webhooks and commands only talk to the address or program you typed in.

Full privacy policy Questions via GitHub Issues

Get it

See if your Mac can run it

Works on
Apple Silicon MacBooks running macOS 13 or later. That means M2 and newer, plus the M1 Pro and M1 Max.
Won't work on
The 2020 M1 MacBook Pro, the M1 Air, desktop Macs, and Intel Macs. They do not have this sensor. Running yamete probe tells you that in one line, instead of hanging.
First launch
macOS will ask for Input Monitoring. That is the permission any app needs to read this sensor. yamete does not watch your keyboard or your screen.

Signed and notarised. Apple Silicon. Open the DMG and drag it to Applications.

Command line only

The same listener runs without the menu bar app. A user LaunchAgent keeps it going with nothing on screen.

# probe
yamete probe

# watch
yamete watch --scores

# install
yamete install --copy

The detector, the recordings, and the tuning tools live at github.com/chipcolate/yamete .