About openGym

openGym wasn't planned as a product. It started as a tiny app I built for one user: me.

I wanted three things at the gym: log my workouts, track my body weight, and see whether any of it was going anywhere. Every app I tried wanted a subscription, an account, or my training data on someone else's servers — usually all three. So I did the homelab thing: built a small mobile web page, put it on my own server, and started logging.

It turns out a tracker you build for yourself gets sharpened in a way products don't. Every awkward tap at the squat rack became that evening's fix. The guided workout flow, the weight pre-fills, the rest timer, the "ask my body weight before the first set" ritual — none of that came from a feature list. It came from actually standing in the gym with the thing in my hand.

Then friends wanted in. That brought passkey profiles — sign in with your fingerprint, no passwords, everyone's data separate — and sync, so the log survives any phone. Somewhere along the way the little page got rewritten into a proper React app, learned 12 languages, grew a muscle map that reads three ways — where the volume went, what is still recovering, and what each muscle is actually strong at — plus importers for FitNotes, Strong, Hevy and Apple Health, and finally became a native Android app you can install from this site.

In July 2026 I open-sourced the whole thing under the AGPL. The license is the point, not a footnote: your training data should be yours, the software that holds it should be inspectable, and nobody — including me — should be able to take a closed, paid version of it away from the community.

openGym still runs on the same homelab server it started on, and I still log every session with it. That's the quality bar: I'm the first user of every release.

Duarte Santos

Milestones

Principles

Get openGym Star it on GitLab