Short answers, with a link to the long one.
Nothing. openGym is open source under the AGPL: no subscription, no paid tier, no ads. If you'd like to support it anyway, there's Buy Me a Coffee.
No, there are three ways to use it:
- Try it: the online demo runs entirely in your browser with example data.
- Phone only: the Android app needs no server and no account; everything stays on the phone. See MOBILE.md.
- Your own instance:
docker compose upon any machine with Docker gives you sync between devices and profiles for friends and family. See SELF_HOSTING.md.
Not in the App Store, and Apple doesn't allow installing apps from anywhere else. On an iPhone you can self-host and add openGym to your home screen from Safari (it's a full PWA that works offline), or build the native app onto your own phone with Xcode. Both are described in MOBILE.md. An App Store build is on the roadmap.
That's deliberate. The APK is signed, published with a .sha256 next to every release, and the app
checks for updates itself. Get it from the
latest release.
On a self-hosted instance, in the ./data folder next to docker-compose.yml: one JSON file per
profile plus the account list. Back up that folder and you've backed up everything. In the phone app
it's in the app's private storage. In guest mode it's only in that browser. You can export
everything as one file at any time under Settings → Data & backup.
Your instance has no telemetry and phones home to nobody. On first start it downloads the exercise images and animations from the upstream dataset, once. The AI coach, if an admin turns it on, sends the training data it needs to the provider you configured; AI_COACH.md lists exactly what. Push notifications go through your browser's push service, as all web push does.
It's developed with Claude Code, Anthropic's coding agent, and a large share of the code, tests and docs is drafted that way. The maintainer decides what goes in, reviews it, and tests every release on a staging instance and on real phones. The longer answer is in the README.
Only if you turn it on. The default install calls no AI service. Two optional pieces exist: the AI coach (off until an admin enables it, runs with your own provider key, every change needs your approval) and the MCP server, which lets an AI client on your computer read your history. Neither is needed for anything else in the app.
Almost always one of two things:
- You're opening it over plain
http://on a LAN address. Passkeys only work over HTTPS (or onlocalhost). Use guest mode, turn on password sign-in, or put it behind HTTPS. RP_IDandORIGINin.envdon't match the address in your browser exactly.
SELF_HOSTING.md explains both, and its troubleshooting section covers the rarer cases.
Yes, if the instance allows it: set PASSWORD_LOGIN=1. It's off by default. See
password sign-in.
Yes. Everyone creates their own profile and sees only their own data. You can make signup invite-only and give yourself an admin dashboard; see multiple users.
git pull && docker compose pull && docker compose up -d. Your data is untouched. See
updating.
Then update the app on every device that syncs. A phone still on v1.3.9 or older keeps syncing, and the server looks after what that phone doesn't know about, but it can't always tell what the phone has seen. One case it gets wrong on purpose: if the old phone sets something back to exactly what it was before, after another device changed it, the other device's change wins. Once every device is updated, nobody has to guess.
FitNotes, Strong and Hevy work out of the box, Apple Health for body weight, and any CSV with a date, an exercise and something measured. See DATA_IMPORTS.md.
Not on openGym's say-so. The images and animations aren't covered by openGym's license and their ownership is disputed; openGym only downloads them for your instance. Details in NOTICE.md.
The Discord for a quick answer, Discussions if the next person should be able to find it, Issues for a bug.