
OpenAthlete
org.openathletePublished by openathlete.orgOfficial publisherv1.3.0Updated Nov 3, 2026
Endurance training: activities, load, zones, and workouts sent to Garmin, COROS and Suunto watches
Overview
OpenAthlete's hosted MCP server (api.openathlete.org), published by openathlete.org; OAuth sign-in required; Streamable HTTP.
No AI overview yet: these facts come from the registry entry and the server itself.
- Publisher
- openathlete.org
- Endpoint
- api.openathlete.org
- Documentation
- docs.openathlete.org
- Last checked
Installation
In SourceWeft
- Open OpenAthlete in the dashboard and add it to a workspace.
- Connect the required credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/org.openathlete%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"openathlete": {
"type": "http",
"url": "https://api.openathlete.org/mcp"
}
}
}README
[OpenAthlete: serious endurance training, without the subscription]
Serious endurance training. Without the subscription.
The open-source training platform for runners, trail runners, triathletes, cyclists and their coaches.
Plan your season, send structured workouts to your watch, see what every session did to your fitness.
Create a free account »
Website
·
Documentation
·
Self-hosting
·
Discord
·
API
[GitHub stars] [License] [Latest release] [Commits per month] [iOS on TestFlight] [Discord] [Buy Me a Coffee]
Why OpenAthlete
Training platforms keep years of your data, charge coaches per athlete, and can be bought or shut down. Today's Plan closed in 2024; TrainingPeaks has belonged to Garmin since July 2026.
OpenAthlete is free on our servers in France and free on yours. The code is public under AGPL-3.0, the training-load formulas are in this repository, and you can export everything at any time. It is built by an independent developer and ultra runner in Grenoble, with no investors.
What it does
[Training calendar on desktop and phone]Plan. A calendar that thinks in seasons, weeks and sessions: training blocks, A/B/C races, illness and travel periods that move the sessions they cover, whole weeks copied or shifted with undo, and a calendar feed for Google, Apple or Outlook.
Build and sync. Structured workouts with targets from your own zones (pace, power, heart rate, % of VMA or FTP), a reusable library, and delivery to Garmin, COROS and Suunto watches at the next sync.
[Activity analysis with the AI read of the session]Analyse. Activities from Garmin, COROS, Suunto, Polar and Strava, or FIT, GPX and TCX files. Each interval graded against the plan, detected climbs, time in zones, aerobic decoupling, pace adjusted for gradient and weather, and non-destructive fixes for heart-rate spikes.
[Records and recovery metrics]Progress. Records by distance and duration, year against year; critical speed and power; fitness, fatigue and form (CTL, ATL, TSB) from heart rate or perceived effort, projected over your planned sessions; HRV, resting heart rate and sleep from your watch. Every metric says what it measures and where it stops being reliable.
[Coach dashboard and coach–athlete messages]Coach. Compliance, volume and form for every athlete on one screen, alerts for reported pain, inactivity and unread messages, planning for several athletes at once, comments and real-time chat. Five athletes free, unlimited with Supporter.
AI, on your terms. Generate or edit a session from a sentence, get a short read of each activity and three questions on how it felt. Bring your own key (OpenAI, Anthropic, Google, Mistral, OpenRouter, DeepSeek, xAI, Groq, or a local model when self-hosted), pick the model per feature, or use the allowance included with Supporter. Nothing reaches an AI provider until you allow it. An MCP server lets Claude, ChatGPT or Cursor read your training and plan sessions straight into your calendar.
Mobile. The web app is built for phones and installs on the home screen. iOS and Android apps are in testing (TestFlight).
How it compares
Prices from each vendor's pricing page, checked on 3 November 2026 (USD before tax). Detailed, sourced comparisons: openathlete.org/compare.
Built with
React 19 and Vite (web, with Capacitor for iOS and Android), NestJS 11 with BullMQ jobs and Mastra agents (API), Prisma and PostgreSQL with pgvector, Redis, Next.js (website), Paraglide (5 languages), Tailwind CSS.
Getting Started
To get a local copy up and running, please follow these simple steps.
Prerequisites
Here is what you need to be able to run OpenAthlete.
- Node.js (Version: >=22.14.0) - We recommend using nvm for version management
- pnpm (Version: >=9.x) - Fast, disk space efficient package manager
- PostgreSQL (Version: >=13.x) - Database
- Git - Version control
If you want to enable AI features, you may need to obtain API credentials. More details can be found in the documentation.
Development
Setup
Run the same checks as CI with scripts/verify.sh (add --integration, --build or --e2e for the slower suites).
Development Tips
-
Run type checking before committing:
-
Format and lint your code:
Upgrading from earlier versions
-
Pull the current version:
-
Check if dependencies got added/updated/removed
-
Apply database migrations by running one of the following commands:
In a development environment, run:
In a production environment, run:
-
Check for
.envvariables changesCompare your
.envfiles with the.env.examplefiles to see if new variables were added. -
Start the server. In a development environment, just do:
For a production build, run for example:
-
Enjoy the new version.
Deployment
Self-hosting with Docker
On any server with Docker and its Compose plugin:
OpenAthlete then runs on http://localhost from the published images, with new random secrets in openathlete/.env. Add -s -- --domain openathlete.example.org to serve your domain over HTTPS with automatic certificates. Run the script again to update.
The self-hosting guide covers HTTPS, device sync, AI, backups and upgrades from older setups.
Manual Deployment
For detailed deployment instructions, see our self-hosting documentation.
Backend (NestJS)
-
Build the application:
-
Set up environment variables in
.env -
Run database migrations:
-
Start the server:
Frontend (React + Vite)
-
Build the application:
-
Serve the built files using a web server (nginx, Apache, etc.)
Example nginx configuration:
Environment Variables
Backend Required Variables
Frontend Required Variables
For a complete list of environment variables, see the .env.example files in each app directory.
Support OpenAthlete
OpenAthlete is built by one developer in Grenoble, supported by the community. There are three ways to help the project thrive:
- Become a Supporter on openathlete.org: €5/month or €50/year. It pays for the servers and adds AI on our keys and unlimited coached athletes.
- Buy a coffee: one-off support, even if you self-host. buymeacoffee.com/openathlete.
- Contribute: star the repo, open issues, send pull requests, translate, or join the Discord.
Self-hosting is fully supported and always free, with no limits. Supporters fund the project's long-term sustainability.
Roadmap
OpenAthlete is actively developed. Here's what's coming next:
- 🧩 Modular Training Logic - Custom goals, coach import, and flexible training methodologies
- 📈 Enhanced Dashboards - Intuitive data visualizations and performance analytics
- 🔗 More Integrations - Wahoo, Zwift, Oura, and more
- 👥 Clubs - Club accounts with several coaches and groups
- 📱 Native apps - iOS and Android apps in the stores
See our GitHub Issues for a detailed list of proposed features and known issues.
License
Distributed under the AGPLv3 License. See LICENSE for more information.
Contributing
Please see our contributing guide.
Good First Issues
We have a list of good first issues that contain small features and bugs which have a relatively limited scope. This is a great place to get started, gain experience, and get familiar with our contribution process.
Help Wanted
We also have help wanted issues that are perfect for contributors looking to make a bigger impact.
Contributors
[Image]Translations
Don't code but still want to contribute? Join our Discord community and help translate OpenAthlete into your language.
Repo Activity
[Image]Acknowledgements
Special thanks to these amazing projects which help power OpenAthlete:
Made with ❤️ by athletes, for athletes
If you self-host OpenAthlete, a coffee helps keep it maintained.
Source: README.md at commit 60362db
Tools
0Version history
1- v1.3.0LatestNov 3, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
