Sommaire11 parties
openGym est un suivi de salle de sport et de poids du corps que tu installes sur ton propre serveur. Il planifie tes routines, guide tes séances et garde l’historique dans un dossier que tu contrôles, sans abonnement, sans publicité et sans télémétrie. Une démo dans le navigateur permet de l’essayer avant d’installer quoi que ce soit.
En bref
- Suivi de musculation et de poids du corps à héberger chez soi, sous licence AGPL-3.0
- 1 324 exercices avec démos animées et une carte du corps des muscles travaillés
- Import depuis FitNotes, Strong et Hevy, export complet en un fichier JSON
- Installation avec Docker Compose, connexion par passkey, synchro entre appareils
- Application Android sans serveur, ou PWA sur iPhone

openGym, un carnet de musculation que tu héberges toi-même
La plupart des applications de musculation gardent tes données sur leurs serveurs, te poussent vers un abonnement ou disparaissent avec l’entreprise qui les édite. openGym prend le parti inverse : il tourne sur ta machine et conserve tes données dans un dossier que tu maîtrises. Son code est ouvert et tu peux le copier pour le modifier.
Il se comporte pourtant comme une application moderne : installable sur l’écran d’accueil, connexion par passkey, fonctionnement hors ligne, synchronisation entre téléphone et ordinateur. Le projet affirme n’avoir ni compte chez un tiers, ni abonnement, ni publicité, ni télémétrie. Son auteur, DuarteSantos8, en a créé le dépôt GitHub en juillet 2026.
Ce que sait faire openGym
Côté préparation, tu assignes une routine à chaque jour de la semaine, à partir d’une bibliothèque de 1 324 exercices avec démos animées. Tu peux les chercher par nom, par muscle sur une carte du corps, ou filtrer selon le matériel que tu possèdes. Des plans de départ (Push/Pull/Legs, Upper/Lower, Full Body, 5×5) se chargent comme des routines ordinaires, que tu modifies ensuite.
Pendant la séance, l’entraînement du jour démarre tout seul, les charges sont préremplies d’après la fois précédente, un minuteur de repos tourne entre les séries et les records sont détectés au fil de l’eau. Le projet gère aussi les supersets, les séries d’échauffement, les drop sets, le rest-pause, les exercices chronométrés et le cardio.
- Progression par règles : linéaire, Greyskull LP, double progression ou ajout de temps, avec une explication pour chaque objectif
- 1RM estimé par exercice, courbe à l’appui, et un calendrier d’activité sur un an
- Carte musculaire en trois modes : où est passé ton volume, ce qui récupère encore, ce qui n’est plus travaillé
- Courbe du poids du corps face à une ligne d’objectif
- Calcul des disques pour la barre, la barre EZ, la barre hexagonale et la machine Smith, d’après les disques que tu possèdes
- Séances modifiables après coup, y compris celles faites sur papier
Comment fonctionne openGym
Le projet se compose de trois parties. Le dossier frontend/ contient l’interface en React et Vite, compilée en fichiers statiques dans Docker. Le dossier api/ est un serveur Node.js minimaliste qui s’appuie sur deux bibliothèques, l’une pour les passkeys, l’autre pour les notifications. Le dossier web/ sert l’interface avec nginx et lui transmet les appels /api, de sorte que tout vive sur une seule adresse, condition posée par les passkeys.
Les données sont enregistrées sous forme de fichiers JSON dans le dossier ./data : db.json pour les profils, un fichier state-‹user›.json par utilisateur, audit.log pour le journal d’administration et secret pour la clé de signature des sessions. Sauvegarder ce dossier suffit donc à tout sauvegarder.
Pour la synchronisation, les données de chaque profil forment un document qui porte un numéro de révision. Si un autre appareil a écrit entre-temps, le serveur refuse l’envoi et renvoie le document courant ; l’appareil fusionne puis réessaie. Deux appareils qui modifient en même temps se fusionnent donc au lieu de s’écraser.
Installer openGym avec Docker Compose
Il te faut Docker avec Compose, mais pas Node sur la machine. Le README donne ces commandes ; les images prêtes à l’emploi existent pour les architectures amd64 et arm64, et tu peux sauter l’étape docker compose pull pour compiler depuis les sources.
Ouvre ensuite touche Create profile et tu es dans l’application. Au premier démarrage, environ 140 Mo de médias d’exercices sont téléchargés, une seule fois.
Pour te connecter par passkey depuis un téléphone, il faut du HTTPS sur un nom de domaine, ce qui se règle dans deux lignes du fichier .env. Le guide d’auto-hébergement détaille Cloudflare Tunnel, Caddy, Traefik et nginx, et des guides séparés couvrent le HTTPS sur un réseau local et Kubernetes. La documentation précise que la plupart des échecs de connexion viennent d’un RP_ID ou d’un ORIGIN qui ne correspondent pas exactement à l’adresse saisie dans le navigateur.
git clone https://github.com/DuarteSantos8/openGym
cd openGym
cp .env.example .env
docker compose pull # prebuilt images, amd64 + arm64 (skip this to build from source)
docker compose up -d
Importer son historique et utiliser l’application sur mobile
Si tu viens d’une autre application, openGym importe FitNotes, Strong et Hevy (en CSV ou avec une clé d’API pour Hevy), ainsi que les exports de poids d’Apple Health. La documentation ajoute que n’importe quel CSV comportant une date, un exercice et une mesure peut aussi servir. L’export complet en un fichier JSON reste disponible à tout moment dans Settings → Data.
Un serveur n’est pas obligatoire. La version Android autonome fonctionne sans compte ni serveur, tout reste sur le téléphone, avec des rappels natifs et un compte à rebours de repos dans les notifications. L’APK signé se télécharge depuis la dernière version publiée ; il n’est volontairement pas sur le Play Store. Sur iPhone, Apple n’autorisant pas les installations hors de l’App Store, il reste deux voies : héberger l’application et l’ajouter à l’écran d’accueil depuis Safari, ou compiler l’app native avec Xcode. Une version pour l’App Store figure sur la feuille de route.
Où en est le projet
Selon les chiffres relevés sur GitHub le 5 octobre 2026, le dépôt compte 3614 étoiles, 599 copies (forks) et 57 contributeurs, avec 131 tickets et demandes de fusion ouverts. Le code a été modifié pour la dernière fois le 4 octobre 2026. La dernière version publiée, la v1.3.9, date du 28 septembre 2026.
Cette version permet de corriger une séance enregistrée, de la déplacer à un autre jour, d’en changer la durée et d’y joindre photos et vidéos. Elle corrige aussi un téléphone appairé qui cessait de se synchroniser sans prévenir, ainsi qu’une routine prévue à 2 × 10 qui s’ouvrait à 2 × 15. Elle apporte la connexion par mot de passe, plusieurs passkeys par profil, le calcul des disques par série et l’ukrainien et l’arabe parmi les langues. La v1.3.8 réglait notamment le clavier qui se refermait sur iPhone et iPad, et ajoutait le réordonnancement des routines et la suppression réelle d’un compte.
La feuille de route prévoit une version à peu près toutes les deux semaines. La v1.3.10 est annoncée pour octobre 2026 autour de la file de séances et de la rotation. La v1.4.0, prévue en janvier 2027, passerait à un stockage en base de données, présenté comme la seule rupture de compatibilité.
Ce qu’il faut savoir avant d’installer openGym
Le code d’openGym est sous licence AGPL-3.0 : tu peux l’héberger, l’utiliser, le modifier et le partager, mais si tu fais tourner une version modifiée comme service en réseau, tu dois en proposer les sources sous la même licence. Les images et animations des exercices, elles, ne sont couvertes ni par l’AGPL ni par une licence MIT, et leur propriété est contestée. Le projet ne les redistribue pas : ton instance les télécharge au premier démarrage. Pour les réutiliser, il faut l’accord de leur détenteur.
Deux éléments optionnels sont désactivés par défaut : un coach IA qui propose une semaine de routines puis des ajustements, que tu valides chacun, avec ta propre clé de fournisseur, et un serveur MCP en lecture seule qui permet à un assistant comme Claude Desktop de répondre à des questions sur ton historique. Une installation par défaut n’appelle aucun service d’IA. Le projet précise enfin être développé avec Claude Code, l’agent de programmation d’Anthropic : le mainteneur décide de ce qui entre, relit et teste chaque version, et des tests automatisés couvrent la logique d’entraînement.
Quelques repères
- Passkey : Méthode de connexion sans mot de passe : une clé cryptographique reste dans l’appareil et se déverrouille avec l’empreinte, le visage ou le code de l’appareil. Le site ne reçoit jamais cette clé privée.
- PWA : Application web progressive : un site que l’on peut ajouter à l’écran d’accueil du téléphone et qui se comporte comme une application, y compris sans connexion internet.
Questions fréquentes
openGym est-il gratuit ?
Oui. openGym est open source sous licence AGPL-3.0, sans abonnement, sans offre payante et sans publicité. Le projet propose seulement un bouton Buy Me a Coffee pour qui souhaite le soutenir.
Faut-il un serveur pour utiliser openGym ?
Non. Tu peux essayer la démo dans le navigateur, installer l’application Android qui fonctionne sans serveur ni compte, ou héberger ta propre instance avec docker compose up pour synchroniser plusieurs appareils et créer des profils pour des proches.
Peut-on importer ses séances Strong dans openGym ?
Oui. openGym importe FitNotes, Strong et Hevy, ainsi que le poids d’Apple Health, et accepte aussi tout CSV avec une date, un exercice et une mesure.
Existe-t-il une application openGym pour iPhone ?
Pas sur l’App Store pour l’instant. Sur iPhone, tu peux héberger openGym et l’ajouter à l’écran d’accueil depuis Safari, ou compiler l’application native avec Xcode ; une version App Store figure sur la feuille de route.
À retenir
openGym est un carnet de musculation open source qui garde tes séances et ton poids sur ton propre serveur, avec import depuis FitNotes, Strong et Hevy. Les médias d’exercices ne relèvent pas de la licence AGPL, et la v1.4.0 prévue en janvier 2027 annonce un changement de stockage incompatible avec l’actuel.
Sources
- DuarteSantos8README
- docs/README.mddocumentation officielle
- docs/FAQ.mddocumentation officielle
- GitHubnotes de version





