PostureBar is a lightweight, native macOS menu-bar app that uses your webcam to detect slouching. It shows a green tick for good posture and a red spiral for bad posture.
PostureBar requires macOS 13 or later and supports Apple Silicon and Intel Macs.
PostureBar-…-universal.zip.PostureBar.app into Applications.PostureBar.app in Applications.The current release is not Apple-notarized, so macOS will block its first launch. After attempting step 4:
This exception is needed only once. See Apple's instructions for opening an app from an unknown developer.
When asked for camera access, click Allow. Sit upright and reasonably still for about four seconds while PostureBar calibrates. Calibration progress restarts if you move significantly or the camera feed pauses, so it cannot save a noisy baseline. Its icon will then appear in the menu bar.
On first launch, PostureBar prefers a plugged-in external webcam regardless of brand, then falls back to the first available camera. A camera chosen from the menu is remembered. Use the same menu to recalibrate.
PostureBar uses Apple's Vision framework to locate the largest face in a low-resolution frame five times per second. Calibration records the face's vertical position and apparent size while you sit upright. Later readings are smoothed and compared with that baseline: a face moving lower is the main slouch signal, while a face becoming larger (moving closer) is a secondary signal. Three consistent readings are required before the indicator changes.
Keep the camera position fixed and recalibrate after moving the camera, chair, or desk. PostureBar is a relative posture reminder, not an ergonomic or medical assessment. Frames are processed in memory and immediately discarded.
The menu contains a one-hour posture graph. Green bars mean good posture, red bars mean bad posture, and gray bars mean no recording.
By default, the buzzer begins after 10 seconds of continuous slouching. Use Buzz After to choose 1s, 2s, 5s, 10s, 20s, 30s, or 1 minute. Use Sound Alerts to mute it without pausing posture monitoring. Under Buzz Volume, choose Progressive to start quietly and rise gradually, or Constant (Maximum) to play every buzz at maximum volume.
PostureBar releases the camera when another app uses the microphone or camera, then resumes automatically when the call ends. You can also pause it manually.
Raycast is not required. These shortcuts only provide quick ways to start, stop, or open the project. They require a local copy of this repository. If you installed the downloadable app, run this first in Terminal:
mkdir -p ~/Projects
cd ~/Projects
git clone https://github.com/bogumat/posturebar.git
⌘,) → Extensions.⇧⌘G.~/Projects/posturebar/Raycast and click Open.Raycast will add:
To assign a keyboard shortcut, find a command in Raycast, press ⌘K, select
Configure Command, and record a hotkey.
Quit PostureBar, download the newest ZIP from the releases page, and replace the existing app in Applications. Your calibration and settings are preserved.
Install Apple's Command Line Tools:
xcode-select --install
Then clone, build, and install:
mkdir -p ~/Projects
cd ~/Projects
git clone https://github.com/bogumat/posturebar.git
cd posturebar
make install
open ~/Applications/PostureBar.app
make test # Run checks
make app # Build .build/PostureBar.app
make package # Build a universal release ZIP in dist/
PostureBar uses AppKit, AVFoundation, Vision, and CoreAudio. Camera frames are processed locally and never stored. Only sparse posture states and timestamps are retained for the one-hour graph.
11 commits
Hacker News (1)
Swift
93.2%
Shell
6.5%
PostureBar is a lightweight, native macOS menu-bar app that uses your webcam to detect slouching. It shows a green tick for good posture and a red spiral for bad posture.
PostureBar requires macOS 13 or later and supports Apple Silicon and Intel Macs.
PostureBar-…-universal.zip.PostureBar.app into Applications.PostureBar.app in Applications.The current release is not Apple-notarized, so macOS will block its first launch. After attempting step 4:
This exception is needed only once. See Apple's instructions for opening an app from an unknown developer.
When asked for camera access, click Allow. Sit upright and reasonably still for about four seconds while PostureBar calibrates. Calibration progress restarts if you move significantly or the camera feed pauses, so it cannot save a noisy baseline. Its icon will then appear in the menu bar.
On first launch, PostureBar prefers a plugged-in external webcam regardless of brand, then falls back to the first available camera. A camera chosen from the menu is remembered. Use the same menu to recalibrate.
PostureBar uses Apple's Vision framework to locate the largest face in a low-resolution frame five times per second. Calibration records the face's vertical position and apparent size while you sit upright. Later readings are smoothed and compared with that baseline: a face moving lower is the main slouch signal, while a face becoming larger (moving closer) is a secondary signal. Three consistent readings are required before the indicator changes.
Keep the camera position fixed and recalibrate after moving the camera, chair, or desk. PostureBar is a relative posture reminder, not an ergonomic or medical assessment. Frames are processed in memory and immediately discarded.
The menu contains a one-hour posture graph. Green bars mean good posture, red bars mean bad posture, and gray bars mean no recording.
By default, the buzzer begins after 10 seconds of continuous slouching. Use Buzz After to choose 1s, 2s, 5s, 10s, 20s, 30s, or 1 minute. Use Sound Alerts to mute it without pausing posture monitoring. Under Buzz Volume, choose Progressive to start quietly and rise gradually, or Constant (Maximum) to play every buzz at maximum volume.
PostureBar releases the camera when another app uses the microphone or camera, then resumes automatically when the call ends. You can also pause it manually.
Raycast is not required. These shortcuts only provide quick ways to start, stop, or open the project. They require a local copy of this repository. If you installed the downloadable app, run this first in Terminal:
mkdir -p ~/Projects
cd ~/Projects
git clone https://github.com/bogumat/posturebar.git
⌘,) → Extensions.⇧⌘G.~/Projects/posturebar/Raycast and click Open.Raycast will add:
To assign a keyboard shortcut, find a command in Raycast, press ⌘K, select
Configure Command, and record a hotkey.
Quit PostureBar, download the newest ZIP from the releases page, and replace the existing app in Applications. Your calibration and settings are preserved.
Install Apple's Command Line Tools:
xcode-select --install
Then clone, build, and install:
mkdir -p ~/Projects
cd ~/Projects
git clone https://github.com/bogumat/posturebar.git
cd posturebar
make install
open ~/Applications/PostureBar.app
make test # Run checks
make app # Build .build/PostureBar.app
make package # Build a universal release ZIP in dist/
PostureBar uses AppKit, AVFoundation, Vision, and CoreAudio. Camera frames are processed locally and never stored. Only sparse posture states and timestamps are retained for the one-hour graph.
Hacker News (1)
11 commits
Swift
93.2%
Shell
6.5%