A break reminder for Mac you can't skip on autopilot: every hour it locks the screen for 60 seconds with two standing exercises, and never during a call.
翻譯準備中
正在載入完整 README。
檢視完整 README ↗Most break reminders have a Skip or Postpone button. After a week, your hand clicks it before you read the window. Sixty has no such button, no Quit item and no settings. Every 60 minutes you stand up for 60 seconds. If you are in a call, the break waits.
brew install --cask leplik/tap/sixtySixty-<version>.dmg from Releases, drag Sixty to Applications and open it once.Install it in /Applications before the first launch. Sixty registers itself as a login agent from that location.
WORKING ──60 min of work──▶ in a call? ──no──▶ WARNING ──60 s──▶ BREAK ──60 s──▶ WORKING
│ yes ▲
▼ │
POSTPONED ───────────┘ call ended + 2 min
Want to move now? Choose Take a Break Now in the menu. It adds a break; there is no button that removes one.
Sixty checks every 2 seconds which apps use the microphone, the speaker and the camera. It reads only the "in use" flags that macOS publishes; it never reads audio.
A call is active if:
Dictation tools (Handy, Superwhisper, macOS Dictation) and recorders (OBS) are not call apps. They do not postpone a break.
When a break waits, the menu bar shows why: Break waits: call in Microsoft Teams. When the call ends, Sixty waits 2 more minutes, then starts the normal countdown.
Your call app is not detected? Run /Applications/Sixty.app/Contents/MacOS/Sixty --probe during a call and open an issue with the output.
No break for a long time and you don't know why? /Applications/Sixty.app/Contents/MacOS/Sixty --log prints the last 6 hours: warnings, breaks, calls that postponed them, and every reset of the counter with its reason.
A real emergency happens. The lock screen shows a phrase of four random words, for example river candle orbit maple. Type it and the break ends. The phrase is new every time, so you cannot learn it and type it without thinking. You get two per day.
There is no Quit item on purpose: Quit can also be clicked on autopilot. Sixty runs as a login agent and starts again if you kill it.
To turn it off on purpose, run this in Terminal:
/Applications/Sixty.app/Contents/MacOS/Sixty --disable
Or switch Sixty off in System Settings → General → Login Items & Extensions. To turn it on again, open Sixty.app.
To uninstall: run the command above, then delete Sixty.app. With Homebrew: brew uninstall --cask sixty.
Sixty updates itself. Twice a day it checks GitHub Releases. If there is a newer version, it downloads it, checks that the developer's Apple Developer ID signed it (team JVW2N74WL3), and installs it between two breaks. There is no window and no button. Homebrew knows this (auto_updates true), so brew upgrade leaves it alone.
Requires Xcode 16 or later (Swift 6).
make test # unit tests
make app # build/Sixty.app, ad-hoc signed
make demo # 20 s work, 5 s warning, 10 s break; runs in the terminal, Ctrl+C to stop
make probe # what Sixty sees right now
The design is in docs/SPEC.md. Contributions are welcome, see CONTRIBUTING.md.
Sixty has no telemetry and no accounts. It stores the work counter, the next update check and today's breaks in its preferences file. It reads which apps use audio and video devices, but never their content.
Its only network request is the update check: twice a day it asks api.github.com for the latest release of this repository. The request carries no data about you, only the User-Agent: Sixty/<version> header.
MIT © 2026 Aliaksei Smirnou