DuarteSantos8

openGym: Track Gym and Body-Weight Workouts Across Devices

openGym is a self-hosted gym and body-weight tracker built with React and Node.js, with apps for iPhone, Apple Watch and Android. Plan routines, log training and sync your data across devices, or use the phone app on its own.

NewJavaScriptAGPL-3.0ReactSelf HostedWeb App
Stars
15.6k
Forks
2.1k
Last commit
1 day ago
Contributors
79
Releases, 12 months
32

Our take

Newless than six months old and changing fast

Health score

65/100

How it is scored
Activity
83
Community
59
Issues
76
Pull requests
42
  • Releases more often than 81% of the projects we track
  • Merges more pull requests than 78% of the projects we track
  • Slower to merge pull requests than 94% of the projects we track

A fast-moving, recently released tracker with broad workout features and active community contributions, but development is heavily concentrated in its maintainer.

Good fit if

  • You want a self-hosted tracker, or an iPhone, Apple Watch or Android app that can also run without a server.
  • You value keeping and exporting your training data, and can operate a Docker Compose deployment if you choose to self-host.
  • You want a project with frequent recent releases and pull requests that are being merged and issues that are being closed promptly.

Look elsewhere if

  • You need development responsibility distributed across multiple maintainers. Most contributions are concentrated in one person.
  • You need a permissively licensed project. openGym uses AGPL-3.0, which has source-sharing obligations for modified network services.
  • You need a project with a long-established track record. It is marked as new and has a short history so far.
All health signals
Last commit2026-10-23 (1 day ago)
Commits, last 90 days100+
Releases, last 12 months32 (latest v1.4.2, 2026-10-23)
Contributors79 (top contributor: 77% of commits)
Issues closed, last 90 days35+ (typically closed in 2 days)
Pull requests merged, last 90 days58 (typically merged in 8 days)
Project age3 months

Checked on 2026-10-25 with the GitHub API.

Overview

openGym is a self-hosted gym and body-weight tracker built with React and Node.js. It helps people plan routines, record workouts and track progress without relying on a third-party account or subscription. You can self-host it and sync data across devices, or use the standalone apps on iPhone, Apple Watch and Android without a server.

It suits people who want ownership of their training history as well as a modern workout interface. The project provides a browser-based app, an Android APK and an App Store app, with offline support and passkey sign-in for self-hosted profiles.

Key Features

  • Plan weekday routines or a rotating sequence, and choose exercises from a searchable catalogue with muscle and equipment filters.
  • Follow guided sessions with previous weights pre-filled, rest timers, set logging and personal-record detection.
  • Track progression, estimated one-rep maxes, activity, trained and recovering muscles, body weight and progress photos.
  • Import workout history from FitNotes, Strong or Hevy, and export your data as JSON.
  • Sync profile data across devices with field-level conflict merging, and keep an offline copy while disconnected.
  • Self-host with Docker Compose, or install the iPhone and Apple Watch app or Android APK for standalone use.
  • Optionally enable an AI coach or a local, read-only MCP server. Neither is required for the core app.

Use Cases

  • A self-hosting enthusiast who wants workout records on their own server and under their control.
  • A gym-goer who wants guided sessions, progression tracking and routine planning across phone and laptop.
  • Someone moving from Strong, Hevy or FitNotes who wants to bring existing workout history into a new tracker.
  • A phone-only user who wants to log training without creating or maintaining a server.

What you need

Detected in the repository

  • Node.js (from package.json)
  • A Compose file to run it with its related services
  • A Helm chart for Kubernetes
  • Automated checks on GitHub Actions

License in plain words

AGPL-3.0network copyleft

  • Commercial use: yes
  • Modify and redistribute: yes
  • You must keep: the license notice
  • Share your changes: yes, the full source, also when people only use it over a network (e.g. as a hosted service)
  • Includes an explicit patent grant from the contributors:

A summary, not legal advice: the LICENSE file is what applies.

Getting Started

With Docker and Compose installed:

git clone https://github.com/DuarteSantos8/openGym
cd openGym
cp .env.example .env
docker compose pull
docker compose up -d

Open http://localhost:8080 to create a profile. See the README and self-hosting guide for configuration and HTTPS setup.

Alternatives

  • ryot: Ryot tracks fitness alongside media consumption in a Rust platform, while openGym focuses on gym routines and workout logging with companion mobile apps.
ProjectLanguageLicenseStarsStatus
openGymJavaScriptAGPL-3.015.6kNew
ryotTypeScriptGPL-3.03.6kActive

Considerations

  • The project is new and changing quickly. Recent activity includes frequent commits and releases, so interfaces and behavior may continue to evolve.
  • Contributor activity is concentrated in the maintainer, despite contributions from a wider community. This is a continuity risk for teams that need multiple people sharing project stewardship.
  • Self-hosting requires Docker Compose and a Node.js-based application stack. Passkey sign-in from a phone requires serving the instance over HTTPS on a domain; the standalone apps avoid operating a server.
  • The project code is AGPL-3.0. If you modify it and provide it as a network service, you must offer the modified source under the same license.
  • Exercise images and animations are separately licensed, not covered by the AGPL. The README limits their use in forks and self-hosted installations, so review its media notice before redistributing them.
  • The AI coach and MCP server are optional extras, not core requirements. The MCP server is read-only and is not included in the Docker build.

Found this useful?

Share it with someone who would like openGym.

Comparisons