A bud doesn't seat, only one charges, and you find out in the car. Oddpod notices in two minutes and tells you.
Every two minutes, the same left and right percentages your battery widget shows. No pairing, no driver, no admin rights.
Twenty minutes of history. One bud climbs 3%, the other hasn't moved — that's not a slow charge, that's a bud that isn't seated.
A native notification, once an hour at most. At the desk, not in the car.
The failure is silent, and the moment you'd catch it is the moment you stopped paying attention.
The case clicks the same either way. Nothing distinguishes "both charging" from "one charging" unless you go looking — and you only look after it's cost you.
macOS with AirPods already paired. Python 3 ships with the system — there's nothing else to install.
One thing to check: notifications come from Script Editor, so enable it under System Settings → Notifications.
./scripts/install.sh --uninstall removes everything.
$ git clone https://github.com/chrisdeweese/oddpod $ cd oddpod $ ./scripts/install.sh Oddpod is watching. Checks every 2 minutes. # confirm it's running $ launchctl list | grep oddpod - 0 com.oddpod.watch
It runs forever, so the limits matter more than the features. Under 100 lines of Python in one file — reading it takes less time than this page.
~/.oddpod.json — twenty minutes of percentages.