A desktop application that fetches your running data from Garmin Connect, visualizes performance metrics, and provides AI-powered coaching feedback.
- Run Dashboard: View recent running activities with key metrics
- Detailed Analysis: Heart rate zones, pace charts, and elevation data
- Weekly/Monthly Statistics: Track your training volume and progress over time
- AI Coaching: Get personalized feedback on individual runs
- Training Analysis: AI-powered analysis of your training patterns
- Race Predictions: Estimate race times based on your training data
- Ask the Coach: Get answers to running-related questions
- Multi-language Support: English and Korean
| Workout List | Statistics | AI Coach |
|---|---|---|
![]() |
![]() |
![]() |
Download the latest release from the Releases page:
| Platform | File | Status |
|---|---|---|
| macOS | GarminRunningCoach-macOS.zip |
✅ Available |
| Windows | GarminRunningCoach-windows.zip |
🚧 Coming Soon |
| Linux | GarminRunningCoach-linux.tar.gz |
🚧 Coming Soon |
Note: Windows and Linux builds are not yet tested. Contributions welcome!
- Extract the downloaded archive
- Run the application:
- macOS: See macOS installation below
- Windows: Double-click
GarminRunningCoach.exe - Linux: Run
./GarminRunningCoach
- Your browser will open automatically
- Enter your Garmin credentials and select an AI backend
Since the app is not signed with an Apple Developer certificate, macOS Gatekeeper will block it. To open:
Method 1 (Recommended):
- Move
GarminRunningCoach.appto Applications folder - Open System Settings > Privacy & Security
- Scroll down and click "Open Anyway" next to the blocked app message
Method 2:
- Right-click (or Control-click) on
GarminRunningCoach.app - Select "Open" from the context menu
- Click "Open" in the dialog that appears
Method 3 (Terminal):
xattr -cr /Applications/GarminRunningCoach.appYou can choose between two AI backends:
Ollama runs AI models locally on your computer. No API key required, no usage limits.
- Install Ollama from ollama.com or via Homebrew:
brew install ollama
- The app will guide you to start Ollama and download a model
- Go to Google AI Studio
- Sign in with your Google account
- Click "Create API Key"
- Copy the key and paste it in the app
Note: Free tier has rate limits (15 requests/min, 1,500 requests/day)
- Python 3.9 or higher
- Garmin Connect account
- Ollama or Google Gemini API key
-
Clone the repository:
git clone https://github.com/dc7303/garmin-running-coach.git cd garmin-running-coach -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
(Optional) Set up environment variables:
cp .env.example .env
Edit
.env:GARMIN_EMAIL=your_garmin_email@example.com GARMIN_PASSWORD=your_garmin_password GEMINI_API_KEY=your_gemini_api_key
streamlit run app.pyThe application will open at http://localhost:8501.
Install build dependencies:
pip install -r requirements-dev.txt./build.shOutput: dist/GarminRunningCoach.app (macOS) or dist/GarminRunningCoach/ (Linux)
build.batOutput: dist\GarminRunningCoach\GarminRunningCoach.exe
# macOS
cd dist && zip -r GarminRunningCoach-macOS.zip GarminRunningCoach.app
# Linux
tar -czvf GarminRunningCoach-linux.tar.gz -C dist GarminRunningCoach
# Windows (PowerShell)
Compress-Archive -Path dist\GarminRunningCoach -DestinationPath GarminRunningCoach-windows.zipgarmin-running-coach/
├── app.py # Streamlit main application
├── garmin_client.py # Garmin Connect data fetching
├── ai_coach.py # AI coaching module (Ollama & Gemini)
├── launcher.py # PyInstaller entry point
├── garmin_coach.spec # PyInstaller configuration
├── build.sh # Build script (macOS/Linux)
├── build.bat # Build script (Windows)
├── requirements.txt # Runtime dependencies
├── requirements-dev.txt # Development dependencies
└── README.md
- Frontend: Streamlit
- Data Source: Garmin Connect (via garminconnect library)
- AI Backends:
- Ollama (local LLM - llama3.2, etc.)
- Google Gemini API (gemini-2.0-flash)
- Charts: Plotly
- Data Processing: Pandas
- Packaging: PyInstaller
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Your Garmin credentials are only used locally to authenticate with Garmin Connect
- When using Ollama, all AI processing happens locally on your computer
- When using Gemini, only running data summaries are sent to Google's API
- No data is stored or transmitted to any other third-party servers



