Self-hosted, open-source workout, nutrition and body weight tracker built on Django, with a REST API and companion mobile apps.
- Stars
- 13,728
- Forks
- 1,711
- Open issues
- 220
- Last commit
- 22 hours ago
What is it?
openGym is a self-hosted workout tracker. You plan a routine for each weekday or use a rotation, run guided sessions that pre-fill weights from your last workout and time rest between sets, and log body weight alongside training. Progress views include estimated 1RM, a muscle map showing recent volume, recovery and untrained areas, a year-long activity heatmap, and progress photos.
The app runs as a React and Vite frontend served by nginx, with a Node API that stores data as JSON files. A single Docker Compose setup brings it up, and sign-in uses passkeys. It is installable as a PWA, works offline, and syncs between devices using revision-based merging. Workout history can be imported from FitNotes, Strong, Hevy and Apple Health exports, and everything can be exported as one JSON file.
Optional features, off by default, include an AI coach that drafts routines using your own provider key and a read-only MCP server for assistants. An Android APK is provided, and the project is licensed under AGPL-3.0.
Key features
- 01Weekly routines or A/B/C rotation with guided sessions that pre-fill last workout's weights.
- 02Supports supersets, warm-up and drop sets, timed exercises, and cardio logging.
- 03Progression rules including linear, double and triple progression, with estimated 1RM and muscle volume maps.
- 04Passkey sign-in, per-profile sync across devices, and offline use as a PWA.
- 05Imports workout history from FitNotes, Strong, Hevy and Apple Health; exports all data as JSON.
- 06Deploys with Docker Compose, and the data stays in a local ./data folder.
Use cases
- Keeping a private training log without sending workout data to a subscription service.
- Moving existing workout history from FitNotes, Strong or Hevy into a self-hosted instance.
- Running a personal or family gym tracker on a home server or NAS.
- Using the Android app or PWA to log sets offline at the gym.
Quick start
- 1
Clone the repository
git clone https://github.com/DuarteSantos8/openGym - 2
Enter the project folder
cd openGym - 3
Copy the example environment file
cp .env.example .env - 4
Start the app with Docker Compose, then open http://localhost:8080
docker compose up -d
Things to know
- Passkeys need HTTPS on a domain to work from a phone, which requires extra setup.
- The Android APK is not on the Play Store, and iPhone users must self-host or build with Xcode.
Topics
FAQ
- What is openGym?
- A self-hosted gym and body-weight tracker for planning routines, logging sets, and keeping workout data on your own server. openGym is a self-hosted workout tracker. You plan a routine for each weekday or use a rotation, run guided sessions that pre-fill weights from your last workout and time rest between sets, and log body weight alongside training. Progress views include estimated 1RM, a muscle map showing recent volume, recovery and untrained areas, a year-long activity heatmap, and progress photos.
- Is openGym free to use? What license does it have?
- openGym is open source under the AGPL-3.0 license. Check the license terms before using it in commercial products.
- Is openGym still maintained?
- Actively maintained. The last commit to openGym was on Oct 19, 2026.
- What can I use openGym for?
- Keeping a private training log without sending workout data to a subscription service. Moving existing workout history from FitNotes, Strong or Hevy into a self-hosted instance. Running a personal or family gym tracker on a home server or NAS. Using the Android app or PWA to log sets offline at the gym.
- How do I install openGym?
- Clone the repository: git clone https://github.com/DuarteSantos8/openGym Enter the project folder: cd openGym Copy the example environment file: cp .env.example .env Start the app with Docker Compose, then open http://localhost:8080: docker compose up -d
- Where can I get openGym?
- The source code and installation instructions are on GitHub: https://github.com/DuarteSantos8/openGym
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A TypeScript music player focused on full-screen animated lyrics, supporting NetEase, QQ, Kugou, Navidrome and local libraries.
Open-source, self-hosted task and chore manager with shared groups, recurring schedules, and reminders via mobile, Telegram, Discord, or Pushover.
A self-hosted fitness tracking service for syncing and analyzing activities from Strava, Garmin Connect, and GPX/TCX/FIT files, with data kept on your own server.
Open-source, browser-based design editor for posters, social posts, slides and more, with a self-hostable Docker setup.
A self-hosted, Toggl-compatible time tracker that uses the same API and lets you move your data to and from Toggl.