bama
BAMA: 모든 Mac 앱을 만들 수 있습니다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Running Coach made with AI agents and tools
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Votre coach IA de trail running, connecté à Garmin Connect — préparez votre objectif avec l'aide d'agents spécialisés. ai-running-coach est un projet open-source qui fournit des agents IA et des skills pour aider les coureurs à préparer un objectif (course, trail, ultra) avec l'aide d'un assistant IA dans leur IDE préféré.README 전문 보기 ↗
Votre coach IA de trail running, connecté à Garmin Connect, COROS, Intervals.icu ou Strava — préparez votre objectif avec l'aide d'agents spécialisés.
ai-running-coach est un projet open-source qui fournit des agents IA et des skills pour aider les coureurs à préparer un objectif (course, trail, ultra) avec l'aide d'un assistant IA dans leur IDE préféré.
Le projet est en français par défaut (la langue des documents générés est configurable via config/workspace.toml). Il est connecté par défaut à Garmin Connect, installé et configuré automatiquement par ./install.sh. Intervals.icu peut aussi être la source primaire — pour les athlètes sans montre Garmin (Suunto, Polar, Apple) — avec ./install.sh --source intervals (voir Configuration Intervals.icu) ; Strava (toutes marques de montres, flux par seconde pour les KPI, sans données de santé ni push de séances) avec ./install.sh --source strava (voir Configuration Strava) ; sans cette option, Intervals.icu reste disponible en destination secondaire, uniquement sur demande explicite (configuration manuelle, voir la FAQ). COROS est une source primaire complète, comme Garmin (activités et FIT, bilan matinal HRV + FC de repos + récupération COROS, séances envoyées à la montre, surveillance), par le MCP officiel de COROS, avec ./install.sh --source coros ; ./install.sh --coros branche la montre seule à côté d'une autre source : voir Montres COROS.
🎬 La bande-annonce et Le Sentier, une série de courtes vidéos narrées en français et en anglais, une par fonctionnalité — chaque image est dessinée en JavaScript (source, rendu MP4 : uv run --with playwright scripts/render_video.py --episode all).
| Composant | Description |
|---|---|
| 🧠 5 agents spécialisés | coach, course-strategist, medical, nutritionist, sports-director — installez seulement ceux que vous voulez |
| 🌙 Pénalité de nuit en ultra | le plan de course calcule, sans réseau, le crépuscule du lieu et pénalise la vitesse des sections courues de nuit (selon la pente), avec les heures de frontale par scénario |
| 🗺️ Roadbook imprimable | une feuille A4 par scénario depuis le tableau de bord (vue Roadbook, lien depuis Trail Shape) : profil, sections, heures de passage, barrières et marges, ravitos avec ce qu'on y prend, matériel obligatoire — impression ou PDF du navigateur, sans dépendance |
| ⛰️ Technicité du terrain en ultra | coefficient par section, déclaré ou dérivé d'OpenStreetMap (sac_scale, surface, visibilité ; option --technicity osm, réseau opt-in), pondéré par la pente, appliqué en plus du modèle pente → allure |
| 🎯 Recalibrage au débrief de course | arc_race_debrief.py --calibrate attribue l'écart plan/réalisé à chaque facteur (nuit, technicité, chaleur, altitude) par contraste stratifié, refuse quand les groupes sont trop petits ou confondus, et propose des coefficients personnels cumulés d'une course à l'autre — écrits seulement après votre accord |
| ⛰️ Altitude en ultra | pénalité de temps au-dessus de 1 500 m (approximation du projet, tirée d'une étude publiée), réduite par l'acclimatation déclarée et par l'exposition mesurée à l'entraînement (carte « Exposition à l'altitude » de la vue Santé) |
| 🌡️ Cibles ajustées à la chaleur | par grosse chaleur, l'allure cible des séances (endurance, sortie longue, qualité) est ralentie de façon déterministe — FC inchangée, créneau frais proposé, jamais d'intensité maintenue en 🔴 (mêmes coefficients que le plan de course) |
| 🛠️ 29 skills | commandes courtes /today /why /week /race /log /inspection /shoes /update-coach, analyse GPX (altitude corrigée par MNT en option), comparaison de parcours, planification Garmin et COROS, météo, analyse de séances, Intervals.icu, diagnostic d'installation, inspection photo des chaussures, parcours MyWhoosh à la durée d'une séance home trainer, export des séances vers Vanoor (Apple Watch), etc. |
Tout ce que le coach stocke — verdict du jour, bilan du matin, courbe de forme, semaine planifiée, séances et splits, matériel (kilométrage des paires, inspections), rapports — dans un tableau de bord local, en lecture seule :
scripts/dashboard.sh
Sur un serveur qui a déjà Traefik et une authentification unique, il se range aussi en conteneur Docker, workspace en lecture seule : Derrière un reverse proxy.
Il s'installe aussi comme une application sur l'ordinateur ou le téléphone, et son image Docker est publiée sur GHCR (ghcr.io/mmornati/ai-running-coach-dashboard ; le compose du projet la construit encore localement, voir Docker).
Voir la documentation du tableau de bord.
.claude/agents + .claude/skills).github/agents + .github/skills + .mcp.json) — CLI, VS Code et agent cloud.opencode/agents + .opencode/skills).gemini/commands).cursor/mcp.json).windsurf/mcp_config.json)💡 Homebrew est recommandé sur macOS. Requis uniquement pour le mode passerelle optionnel (
--use-leanproxy).
Téléchargez le fichier .dmg depuis la page des versions, glissez AI Running Coach dans Applications, puis laissez l'assistant vous guider jusqu'au profil, aux chaussures, à l'objectif et au choix du chat. Le chat intégré fonctionne avec OpenRouter, connecté en un clic (voir Choisir son IA) ; le mode « assistant habituel » installe automatiquement Claude Code, Copilot, OpenCode, Gemini CLI ou Cursor Agent et le lance ensuite au bon endroit. Dans les deux cas, le même assistant synchronise ensuite Garmin ou Intervals.icu automatiquement en arrière-plan, sans devoir rester ouvert. La même application sert ensuite à parler au coach, lancer le tableau de bord, compléter vos informations, retrouver vos données, vérifier l'installation et reconnecter le compte sportif.
Voir le guide Application macOS.
git clone https://github.com/mmornati/ai-running-coach.git
cd ai-running-coach
./install.sh
Le script installe et configure automatiquement :
garmin en mode direct avec liste blanche d'outilsactivities/, medical/, nutrition/, planning/, rapports/, gear/, resources/)./install.sh --preset laptop # préréglage : composent les options ci-dessous (voir docs/quickstart.md#prereglages)
./install.sh --preset coach-server # coach-server = --ide claude --daily-sync --remote-control
./install.sh --preset docker # docker = --ide claude --daily-sync (prépare l'hôte, pas le conteneur)
./install.sh --ide claude # installe pour un IDE précis (claude|copilot|opencode|gemini|cursor|windsurf)
./install.sh --source coros # source de données : garmin (défaut) | intervals | strava | coros
./install.sh --coros # branche la montre COROS (MCP officiel, relais local) à côté d'une autre source
./install.sh --llm openrouter --connect # IA du chat et de la synchro : openrouter | openrouter-free | anthropic | openai | chatgpt | copilot
./install.sh --llm chatgpt --sync-subscription # abonnement ChatGPT/Copilot : la synchro aussi (sinon elle garde son exécuteur)
./install.sh --health-source openwearables # santé du bilan matinal chez Open Wearables (opt-in)
./install.sh --cycle-tracking garmin # contexte du cycle menstruel (opt-in) : off|garmin|intervals|coros|manual
./install.sh --nutrition-sync ask # propose de pousser les apports vers Garmin (opt-in)
./install.sh --telegram # bot Telegram (retours en un geste, sans clé d'API)
./install.sh --agents LISTE # staff à installer, ex. coach,nutritionist
./install.sh --no-medical # tous les agents sauf le médecin
./install.sh --no-auth # saute l'authentification Garmin
./install.sh --use-leanproxy # mode passerelle leanproxy-mcp (power user, optionnel)
./install.sh --workspace DIR # vos données dans votre dépôt privé, moteur lié (voir docs/workspace.md)
./install.sh --daily-sync # machine « coach » : sync Garmin automatique (cron/launchd) + notification
./install.sh --daily-sync --workspace DIR --replace-schedule # remplace aussi la planification de la racine du moteur (migration, voir docs/update.md)
./install.sh --remote-control # machine « coach » : le coach accessible depuis le téléphone
./install.sh --dry-run # affiche les actions sans rien exécuter
./install.sh --help
Lors de la première installation, le script lance l'authentification Garmin Connect :
~/.garminconnect/ (valides ~6 mois)⚠️ Sécurité : vos identifiants ne sont jamais stockés dans le projet. Les tokens sont conservés dans votre répertoire personnel (
~/.garminconnect/), hors du dépôt.
/coach-setup — un entretien court qui règle votre staff d'agents, votre discipline, la façon dont le coach vous parle, et installe votre profil d'athlète. Relancer la commande est sans effet : elle ne pose que les questions sans réponse.coach de définir votre objectif, par exemple :
coach coordonne les agents que vous avez retenus et pousse vos séances directement dans le calendrier Garmin ConnectPour un usage rapide depuis le téléphone, sept commandes courtes (cinq réponses rapides, /inspection pour une
inspection guidée et /shoes pour choisir sa prochaine paire), format prévisible — natives sur Claude Code et Gemini CLI (commande dédiée),
chargées comme n'importe quel skill sur OpenCode et GitHub Copilot,
non disponibles sur Cursor/Windsurf (pas de skills/commandes sur ces
deux IDE, voir IDE supportés) :
| Commande | Répond |
|---|---|
/today | La séance du jour, le bilan matinal (au niveau configuré), le créneau météo si la séance est en extérieur |
/why | Pourquoi la dernière décision du coach (ou une décision nommée) a été prise — jamais une raison inventée ; peut citer le bilan personnel « ce qui s'est passé ensuite » (corrélation, pas causalité) |
/week | Le statut compact de la semaine en cours : réalisé/prévu, garde-fous |
/race | Le compte à rebours de votre objectif, le score Trail Shape, la forme prévue le jour J (estimation), votre plan de course s'il existe |
/log | Saisie libre en une phrase — ravitaillement, douleur, RPE — convertis en données du contrat sans jamais inventer une valeur |
/inspection | Lancer l'inspection photo d'une paire de chaussures : désigner la paire, protocole photo, où déposer les photos (gear/photos/) |
/shoes | Choisir la prochaine paire : continuité d'abord (version actuelle du modèle qui vous a convenu, specs comparées), sinon plages sourcées et modèles trouvés en ligne — aucun achat, aucun prix, jamais une prévention de blessure |
/today, /why, /week et /race n'écrivent ni ne modifient jamais un
plan, une semaine, une décision ou un plan de course, et ne poussent jamais
rien vers Garmin. /log, lui, écrit dans activities//medical/ (jamais
dans planning/) ; /inspection et /shoes n'écrivent, une fois la paire et les photos (ou votre accord) fournis,
que dans gear/.
| Réglage | Exemple |
|---|---|
| Staff | Retirez le médecin ou le nutritionniste : ./install.sh --no-medical |
| Façon de coacher | bienveillant, exigeant, factuel, pedagogue — plus une fermeté et une longueur |
| Discipline | trail ou road — change l'unité de charge, le vocabulaire et le matériel |
| Bilan santé matinal | full, minimal ou off si vous ne voulez pas que l'entraînement dépende de la HRV |
Tout est décrit dans la documentation de configuration.
ai-running-coach/
├── agents/ # Agents IA (coach, course-strategist, medical, nutritionist, sports-director)
├── skills/ # Skills (analyse GPX, planification, météo, etc.)
├── scripts/ # Machine « coach » : sync automatique, notifications, Remote Control
├── config/
│ ├── workspace.toml # Configuration (staff, sport, style, santé, langue)
│ ├── coaching-styles.md # Catalogue des styles de coaching
│ ├── setup-questions.toml # Questions du premier démarrage
│ ├── sports/ # Profils de sport (trail, route)
│ ├── plans/ # Gabarits de périodisation (JSON, vérifiés par arc_plan_templates.py)
│ └── gemini/commands/ # Commandes Gemini CLI (générées depuis agents/)
├── templates/ # Modèles installés dans votre workspace
├── tests/ # Suite de tests (voir tests/README.md)
├── .github/
│ ├── copilot-instructions.md # Instructions GitHub Copilot
│ └── workflows/copilot-setup-steps.yml # Environnement de l'agent cloud Copilot
├── install.sh # Script d'installation
├── AGENTS.md # Conventions de travail pour les agents
└── docs/ # Documentation (GitHub Pages)
La documentation complète est disponible sur GitHub Pages :
/shoes)Les contributions sont les bienvenues ! Consultez le fichier CONTRIBUTING.md pour les conventions.
Ce projet est sous licence MIT.
Garmin®, Garmin Connect™, Body Battery™ et Firstbeat Analytics™ sont des marques de Garmin Ltd. ou de ses filiales. TrainingPeaks® ainsi que TSS®, NP® et IF® sont des marques de Peaksware LLC ; les sigles CTL, ATL et TSB sont revendiqués par la même société. Intervals.icu et Strava sont des marques de leurs éditeurs respectifs. Ces noms sont cités uniquement pour désigner les services avec lesquels le projet interagit ou pour expliquer une équivalence.
Ce projet est indépendant : il n'est ni affilié à ces sociétés, ni approuvé, parrainé ou soutenu par elles. Ses métriques de charge (TRIMP de Banister, condition / fatigue / forme, ACWR) reposent sur des modèles scientifiques publiés et portent volontairement des noms génériques — voir Marques et métriques.
Ce projet fournit des outils d'aide à la préparation sportive. Il ne remplace pas un avis médical professionnel. Consultez un médecin avant de commencer un programme d'entraînement.
| 📡 Sources de données | Garmin (défaut, garmin-mcp en mode direct, liste blanche d'outils), COROS (MCP officiel, source complète), Intervals.icu, Strava, et Open Wearables comme source santé du bilan matinal — --source à l'installation ; ce que chaque source ne sait pas faire est dit, jamais simulé |
| 🤖 Choisir son IA | celle que vous payez déjà (Claude, ChatGPT Plus/Pro, GitHub Copilot), sinon OpenRouter connecté en un clic (sans clé à copier) avec un essai gratuit ; la synchronisation automatique peut changer d'IA seule, et un test de connexion vérifie clé, crédit et quota — voir Choisir son IA |
| 🚀 Installation automatisée | un script pour installer et configurer tout (uv, Garmin, IDE) |
| 👟 Suivi du matériel et choix des chaussures | kilométrage par paire, prévision de retraite (une paire retirée dans Garmin l'est aussitôt), équipement et kits, inspection photo (/inspection), contrôle du matériel de course ; fiche de caractéristiques de chaque paire (sourcée), retours de chaussant, profil d'usage, besoins pour la prochaine paire et choix guidé (/shoes) — voir Choisir ses chaussures |
| ⌚ Export Vanoor (Apple Watch) | opt-in ([vanoor]) : séances de course structurées et plan de course écrits au format de l'app Vanoor, un export sans push — voir Export Vanoor |
| 👥 Plusieurs athlètes sur une machine | un workspace par athlète, avec ses jetons, ses identifiants et sa planification de synchronisation ; migration d'une installation existante par scripts/migrate-sync-127.sh — voir Votre workspace privé et Mettre à jour |
| 📊 Tableau de bord local | courbe de forme (condition / fatigue / forme), bilan santé du matin, semaine (planifié ↔ réalisé appariés), séances et splits par km calculés depuis le FIT pour toutes les sources, prédictions — à côté du texte du coach (scripts/dashboard.sh, lecture seule, 127.0.0.1) ; installable comme application (PWA), design « roadbook » — voir Tableau de bord |
| 🗓️ Gabarits de périodisation | base / développement / spécifique / affûtage / récupération par format (trail court, marathon trail, ultra 80–100 km, 100 miles, semi et marathon route), en données vérifiées par un script contre les garde-fous — point de départ du bloc, jamais un plan imposé ; plan-skeleton en tire un squelette semaine par semaine vérifié par les garde-fous (proposition, écriture sur accord) — voir Gabarits de périodisation |
| 🏋️ Renforcement et mobilité | bibliothèque d'exercices (consignes, progressions, matériel) et programmes par phase du bloc ou par usage (descente, cheville, hanches, pied), correspondance Garmin vérifiée dans le catalogue officiel, placement par rapport aux séances de qualité — approximations du projet, jamais un diagnostic ; prévention ciblée d'une douleur déclarée (gêne légère → routine douce, sinon consultation, jamais un diagnostic ; medical décide s'il est activé) — voir Renforcement |
| 🎯 Vitesse critique | courbe allure-durée en GAP, vitesse critique et réserve anaérobie D′ estimées sur vos meilleurs efforts (refus explicite si les données manquent), cibles d'intervalles en % de la vitesse critique — voir Vitesse critique |
| 🔁 Effet des décisions | ce qui s'est passé après chaque décision du coach (HRV, douleur, charge, RPE… avant / après), même quand l'athlète ne l'a pas suivie — synthèse par déclencheur dans la vue « Décisions » ; corrélation, pas causalité, jamais utilisé pour assouplir un garde-fou |
| 📱 Le coach dans la poche | synchronisation Garmin automatique + notification push, et dialogue avec le coach depuis le téléphone (Claude Code Remote Control) — sans renoncer à votre abonnement |
| ✈️ Bot Telegram | retours en un geste sous le résumé du daily-sync (séance faite, RPE, douleur), écrits sans modèle ni clé d'API dans votre workspace ; conversation libre en option |
| 🌙 Cycle menstruel (opt-in) | contexte facultatif du bilan matinal (phase du cycle), désactivé par défaut : jamais une règle ni un diagnostic, veille RED-S — voir Cycle menstruel |
| 🍽️ Apports vers Garmin (opt-in) | le coach propose de pousser ce que vous déclarez (/log, rapports) vers le journal alimentaire et l'hydratation de Garmin Connect, désactivé par défaut, jamais sans votre « oui » — voir Apports vers Garmin |
| 👨👩👧 Mode famille | un seul tableau de bord et un seul chat pour plusieurs athlètes, chacun dans son workspace, aiguillés par l'identité du SSO (Authentik) ; données strictement séparées, tests d'isolation — voir Mode famille et Apple Watch |
| 🎛️ Coach configurable | style de coaching, discipline (trail ou route), bilan santé matinal, profil d'athlète |
| 📚 Documentation | guide de démarrage rapide, configuration, dépannage |