TopGit
GitHub Repo Review

openGym workout tracker — self-hosted gym & fitness app

DuarteSantos8/openGym
OTopGit review image for DuarteSantos8/openGym
Review by Topgit.dev for DuarteSantos8/openGym, with GitHub repository stats and README context.
Quick verdict

openGym is a self-hosted workout tracker you run on your own server. It plans routines, logs sets, and tracks muscle fatigue — no subscription, no ads, no data leaving your machine. One Docker command gets it running. The catch: you maintain your own server, and passkeys require HTTPS.

Stars
★ 15.6k
Forks
⑂ 2.0k
Contributors
👥 57
Language
JavaScript
License
AGPL-3.0
Topic
—
Updated
Oct 2026
Homepage
GitHub

What openGym is

openGym is a self-hosted gym and bodyweight tracker. You build a routine per weekday, run guided sessions with weights pre-filled from last time, and the app logs sets while watching for PRs. A muscle map shows volume distribution and recovery status. Progression rules automate loading increases. Passkey login keeps data local, and a PWA works on your phone.

Planning, training, and tracking progress

  • ✓Weekly routine builder featuring four starter plans (Push/Pull/Legs, Upper/Lower, Full Body, 5×5) which are provided as editable templates
  • ✓1,324-exercise library with animated demos, searchable by muscle group or equipment, browsable on a body map
  • ✓Guided workout sessions with pre-filled weights, rest timer, PR detection, and plate math for trap bar, barbell, Smith machine, and EZ bar
  • ✓Muscle mapping in three modes: volume distribution, recovery status, and untrained muscles
  • ✓Progression rules per routine or exercise — linear, Greyskull LP, double progression through a rep range, or time-based
  • ✓Import from FitNotes, Strong, Hevy, and Apple Health weight exports; export everything as JSON
  • ✓Passkey (WebAuthn) login with private keys in device secure hardware; optional password fallback; per-profile sync across devices
  • ✓PWA install on mobile with offline support; Android APK also available from the releases page
How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history ↗

Running it with Docker in under five minutes

Clone the repo, copy `.env.example` to `.env`, run `docker compose pull` to fetch prebuilt images for amd64 and arm64, then `docker compose up -d`. openGym starts on port 8080. On first run it downloads exercise media (around 140 MB). For passkey login on your phone you need HTTPS — two lines in `.env` handle that, and the self-hosting guide covers Cloudflare Tunnel, Caddy, Traefik, and nginx. Kubernetes and LAN-only HTTPS guides are also in the docs.

Strengths

  • ✓Data ownership — everything lives in JSON files on your server, passkeys never leave your device, export as JSON anytime
  • ✓Feature depth — supersets, warm-up sets, drop sets, rest-pause, timed exercises, cardio, and deload planning in a single app
  • ✓Exercise library is large and searchable by muscle or equipment, with animated demos and custom user exercises
  • ✓Progression engine with multiple load schemes and automatic deloads on stalls — not just 'add 5 pounds a week'
  • ✓Sync works via revision-based merging so two devices editing simultaneously don't overwrite each other
  • ✓Modern UX for a self-hosted app — PWA install, passkeys, offline support, 17 languages, REST timer screen flash for loud gyms

Where openGym falls short

  • △HTTPS is mandatory for passkey login, which adds complexity for LAN-only setups — the docs cover it but it's not one click
  • △AI coach and MCP server are opt-in but require your own API key and some configuration; not plug-and-play
  • △The exercise media (images and animations) is third-party content with disputed ownership — not covered by the AGPL license
  • △v1.4.0 is planned as a breaking change to migrate from JSON files to a proper database — plan for that migration if you start now
  • △Sync is per-profile, and two devices editing the same profile merge by revision — this is revision-based merge but not instantaneous; some manual reconciliation may be needed
  • △The phone app for iOS requires building with Xcode since Apple blocks sideloading; Android gets a ready-made APK but openGym deliberately avoids the Play Store

Other self-hosted fitness trackers

Hevy — a smartphone gym tracker with strong import support and a cloud tier, though data lives on their serversFitNotes — a simple Android workout logger under GPL, no sync or passkeys, limited to that platformStrong — a commercial gym tracker with subscription features; data ownership varies by planExponential Workouts — a self-hosted fitness tracker focused on progressive overload; smaller feature set and community

Frequently asked questions

Is openGym free to use forever?

Yes. openGym is licensed under AGPL-3.0 with no paid tier, no features held back for sponsors, and nothing that stops working if you don't donate. Run it as long as you want on your own server.

Can openGym import data from Strong or FitNotes?

openGym imports from FitNotes, Strong, and Hevy via CSV or API key, plus Apple Health weight exports. Export everything as JSON for a full backup at any time.

Does openGym work offline without an internet connection?

Yes. The PWA caches the interface and recent data locally. You can log workouts offline; new sessions queue and sync when connectivity returns. A banner shows whenever the app is working offline.

How does openGym handle data privacy and passkey security?

Passkey private keys stay in your phone's secure hardware and never reach the server, which only stores public keys. openGym runs entirely on your own server with nothing sent to third parties. Optional password login is available if you prefer not to use passkeys.

Can I run openGym on a Raspberry Pi or low-power server?

Yes. The Docker images include both amd64 and arm64 builds, so a Raspberry Pi works. The self-hosting guide covers low-power setups, though performance depends on your hardware.

What happens to my data if the project stops being maintained?

Your data stays in JSON files you control. Export everything as JSON anytime, and the codebase remains available under AGPL-3.0 — anyone can fork it and continue development.

The problem it solves

Most fitness apps keep your training history behind a subscription or on servers you don't control. If the company shuts down, pivots, or raises prices, your data goes with it. openGym solves the ownership problem by putting everything under your own roof — but that means you're the one setting up Docker, handling HTTPS for passkeys, and maintaining the instance.

Best use cases

  • •Lifters who want to own their training data instead of trusting a third-party service
  • •Users migrating from FitNotes, Strong, or Hevy with existing workout history
  • •Self-hosters running a home gym or small training group with optional admin dashboard and invite-only signup
  • •Athletes tracking bodyweight exercises, progressive calisthenics, and timed holds alongside barbell work
  • •Trainers wanting an offline-capable PWA that works on any phone without an App Store install
  • •Anyone burned by a fitness app that raised prices, added telemetry, or shut down

Who should try it — and who should skip

Pick up openGym if you've abandoned a paid fitness app and want your training data back under your control. It works well for lifters who track barbell work alongside cardio and bodyweight, and for anyone who wants a PWA that runs offline without an App Store. Skip it if you want zero maintenance — running Docker, handling HTTPS for passkeys, and upgrading occasionally is on you. Also skip if a polished mobile app from the Play Store matters more than data ownership.

Related repositories

Source & attribution

Repository: https://github.com/DuarteSantos8/openGym. Facts sourced from the README, self-hosting guide, and documentation.

GitHub data · last synced Oct 7, 2026Reviewed by Henry
← Back to TopGit

Curious whether openGym is right for you?

Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about openGym.

GitHub