Stack · Free menu bar app for Apple Silicon Mac
Sit like you meant to. Stack remembers what that looked like.
Physios have a phrase for it: stack your spine. Ears over shoulders over hips. It is easy to do for about four minutes, and then there is a deadline and the screen gets closer.
Stack lives in your menu bar. You record a baseline once, by sitting the way you actually want to sit. After that it takes a webcam frame every thirty seconds, measures where your head sits relative to your shoulders, and compares it against that baseline. When you have been out of position for a sustained stretch, a small popup appears. It never takes keyboard focus, so it cannot interrupt a sentence you are in the middle of typing.
I built this for myself and my own desk. Make it your own, and feel free to improve mine. Hopefully it gives you a useful starting point, or at least a few ideas. Cheers!
- It measures, it does not guess Actual geometry: where your ear sits relative to your shoulder, read off each frame while monitoring. A side view is needed for forward head position.
- It learns your posture, not an ideal one You calibrate once by sitting how you want to sit. That becomes the line.
- It only speaks when it matters Sustained drift, not one frame. Reaching for coffee is not a slouch.
Everything above happens on your Mac. Stack can optionally send a cropped frame to Google’s Gemini for a second opinion and better-worded coaching; that needs your own API key, and it is a setting you turn on.
What it does
Three things, on a loop.
-
It looks, every thirty seconds.
One webcam frame goes into Google’s MediaPipe pose model, which runs on your machine. Nothing is uploaded, and nothing waits on a server to come back with an answer.
-
It compares you against you.
You calibrate once, sitting the way you want to sit. That becomes the reference. The score is drift from your own baseline, not a verdict handed down from a table of ideal humans.
-
It waits before it says anything.
One bad frame is a stretch or a reach for the coffee. The popup only arrives after you have been out of position for a sustained stretch, and it is deliberately non-activating: it will not steal your cursor or your keystrokes.
Every check is written to a local SQLite file. When you want to look at it, Stack builds an HTML dashboard that opens straight from disk, with no connection involved.
Why a camera
You cannot see yourself work.
I stop noticing how I am sitting the moment the work gets interesting. A mirror works for five seconds. A reminder every hour is right by accident. Meanwhile the camera on your laptop has been pointed at you all day, doing nothing.
- It sees the thing you cannot.
- A pose model finds your ear, your shoulder and your hip in the frame, and estimates the geometry between them. A stable side view can measure forward head position; a front camera alone cannot.
- Your baseline, not a diagram.
- Sit the way you want to sit and Stack records it. Everything after that is drift from your own line. Backs differ, chairs differ, desks differ, and an ideal posture from a poster does not know anything about yours.
- It stays quiet until it should not be.
- Checking every thirty seconds means it can afford to wait. It only speaks after you have been out of position for a sustained stretch, and the popup never takes keyboard focus, so it cannot land in the middle of a sentence you are typing.
- It remembers, so you can stop guessing.
- Every check goes into a local file. When you want to know whether this week was better than last, there is a record to look at. Different camera setups and changed baselines are kept separate so the comparison stays meaningful.
The camera was already there. This is the first thing that put it to work while you are not on a call.
Requirements and setup
Getting it running.
- Apple Silicon Mac (M1 or newer)
- macOS 13 or newer
- A webcam, built-in is fine
- Internet for first setup
No Git or coding experience needed. This is guided source installation, not a signed Mac app. The setup window explains each step.
- Download the ZIP, unzip it, and keep the Stack folder somewhere permanent.
- Double-click Set Up Stack.command. It installs the needed tools, checks the model download, and asks before using your camera.
- Preview a camera, choose front or side, then sit comfortably for a ten-second baseline. Previews stay in memory; calibration saves numbers.
- Double-click Open Stack.command. Keep its Terminal window open. Click ▤ in the menu bar, choose Check Now, then Start Monitoring.
If your camera does not appear, allow Terminal/Python in System Settings → Privacy & Security → Camera, then choose Retry. To recalibrate later, quit Stack and double-click Recalibrate Stack.command.
Full setup, troubleshooting and privacy instructions. Or download the sample dashboard and double-click it for a camera-free preview with entirely invented measurements.
Limitations
What it cannot do.
- It sees what a desk webcam sees, which is roughly your head and shoulders. Your lower back is not in the frame, and Stack has no opinion about it.
- Move your chair, your desk or your camera and the baseline stops describing you. Recalibrate, and expect the trend to blank itself when you do.
- Lighting is part of the measurement. A dark room or a bright window behind you gives the pose model less to work with, and the history will show the gaps rather than paper over them.
- It is not a medical device and it diagnoses nothing. Its camera-derived measurements are heuristics relative to your baseline, not a validated measure of health.