UNCHAIR · macOS · OPEN SOURCE

Your Mac knows you have been sitting too long.Now it wants proof that you actually stood up.

Unchair is a mildly annoying, local-first macOS app that turns break reminders into movement you can actually verify.

  • macOS 14+
  • 100% free · MIT
  • Swift + SwiftUI
  • Apple Vision
  • no cloud account
human-runtime.local
Unchair macOS product tour showing break reminders and local movement verification
movement_debt > 0 → human_action_required

Why I built it

Because “remind me later” does not make you move.

I spend my days in front of a Mac, somewhere between architecture, incidents, CI and agents doing their thing. Classic break reminders have one fatal flaw: I can dismiss them without moving. Unchair keeps the movement debt and, if you allow it, verifies sit → stand locally with Apple Vision.

01

Not a timer with a nicer button.

A reminder can be ignored. A notification can be swiped away. Unchair waits for real movement before it considers the break complete.

02

The camera is an ephemeral sensor.

Frames, masks and landmarks stay in memory on the Mac, then disappear. No account, no recorded video, no upload.

03

Annoying, not career-limiting.

The engine defers interruptions while the Mac is locked, asleep, idle, or strong presentation/call signals are present. The movement debt returns afterwards.

Unchair menu bar controls on macOS

04

Home Assistant, because obviously.

MQTT Discovery exposes derived Unchair state plus a narrow command allowlist. Your desk light can go orange, then red, before you reconsider your life choices.

Unchair device controls in Home Assistant

Under the hood

Small product. Real engineering constraints.

01

Deterministic state machine

Due, postponed, presentation-deferred and movement-verified transitions stay explicit and testable.

02

Local-first by default

The core loop works without a backend, Home Assistant or a network connection.

03

Optional observability

OpenMetrics/Prometheus and tracing let you inspect the human runtime without requiring a cloud service.

04

Proper release path

Developer ID signed, notarized and stapled builds, DMG + ZIP, with Sparkle updates.

The product, not the pitch

sit → stand → move → verify

desk time→break due→stand→move→verified ✓

Still comparing?

Unchair vs Stretchly vs Time Out

I put all three side by side without a fake winner: platforms, movement verification, meetings, open source, pricing and integrations.

Read the factual comparison

Public roadmap

Useful today. Weirder tomorrow.

No invented marketing dates: GitHub issues are the source of truth. Shipped work is closed; upcoming work stays open and inspectable.

See the full roadmap on GitHub

Available now

v0.1 → v0.4.0
  • Configurable breaks + hard-to-ignore overlay#2 · #3
  • Local Apple Vision: sit → stand + movement proof#4 · #5 · #6
  • Meeting / presentation protection + movement debt#13 · #20
  • Local history, Today stats, launch at login#8 · #9 · #11
  • Optional Home Assistant / MQTT#15 · #16 · #17 · #18 · #19
  • OpenMetrics, OpenTelemetry, Grafana + CLI doctor#22 · #23 · #24 · #33
  • Homebrew Cask + Human Runtime card + release checklist#84 · #85 · #86
  • Stretchly / Time Out compare + first off-site mentions#97 · #98

Next

open issues · no promised date
  • v1.0 Mac Standalone — reliability / a11y / onboarding#44

Apple Enhanced

v1.5
  • iOS companion + recent movement from HealthKit#36 · #37
  • watchOS app + live movement evidence#38 · #39
  • Authenticated local transport + wearable reconciliation#40 · #41
  • Watch/iPhone proximity research + extended threat model#42 · #43

Human Reliability Engineering

v2.x · lab
  • Sitting SLO + Human Error Budget#21
  • Optional standing desk and chair sensor#26 · #27
  • Boss Fight + achievements#28 · #29
  • Automatic post-mortems + calendar + multi-Mac#30 · #31 · #32

FAQ

The normal questions before letting an app tell you to stand up.

Unchair keeps the core deliberately boring: local-first, no mandatory account, and as little hidden magic as possible.

01Does Unchair record or upload my camera feed?

No. Camera frames and Apple Vision data used for movement verification are processed in memory on your Mac. They are not recorded or uploaded.

02Is the camera required?

No. Break reminders work without visual verification. Camera access is only needed if you want Unchair to verify locally that you actually stood up and moved.

03What happens during a meeting or presentation?

Unchair detects strong presentation or call signals and defers interruptions. The movement debt is not discarded; it returns when the context is normal again.

04What if I lock my Mac or go to lunch?

Work and sitting clocks pause while the Mac is locked, asleep, or idle for long enough. Coming back to your desk therefore does not automatically turn lunch into two hours of sitting.

05Do I need Home Assistant or MQTT?

No. Home Assistant and MQTT are entirely optional. Break scheduling, camera verification, presentation mode and local stats keep working without a broker.

06Does Unchair need the Internet or an account?

Not for the core loop. The standalone path needs no cloud account or backend. Networking is only used by optional features such as MQTT, OpenMetrics and direct-channel updates.

07How much does Unchair cost?

Unchair is 100% free and open source under the MIT license. There is no subscription, paid license or mandatory account. The source, releases and privacy model are public on GitHub.

08Which Macs are supported and how do updates work?

Unchair targets macOS 14 and later. Direct builds are Developer ID signed, notarized and stapled, with in-app updates powered by Sparkle.

UNCHAIR · macOS · OPEN SOURCE

Your back does not read your backlog.

Unchair is free, open source and runs on macOS 14+. Install it before another two-hour session of “I just need to finish this one thing”.

The engineering write-up at Omnivya ↗Workplace wellbeing in practice — a French field note from My Dare ↗

Built by Étienne Deneuve. The annoyance is a feature.