{
  "id": 7144800,
  "title": "I built a self-hosted AI running coach that reads my Garmin and plans my runs and lifts",
  "url": "https://urgent.news/2026/09/13/i-built-a-self-hosted-ai-running-coach-that-reads-my-garmin-and-plans",
  "topic": "ai",
  "section": "AI",
  "published": "2026-09-13T17:46:45.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/doublethreshold/i-built-a-self-hosted-ai-running-coach-that-reads-my-garmin-and-plans-my-runs-and-lifts-3hg"
  },
  "original_language": "en",
  "account": "In a recent development, a coach has been built to replace the previous practice of uploading screenshots of Garmin Connect to Claude. The coach, set up on a Mac mini, now has read access to the user's Garmin data, Strava uploads, and a folder where it keeps notes. The coach writes daily training plans to Garmin Connect, messages the user at 8 am to check their sleep and HRV, and grades sessions against its prescriptions. It tracks times, distances, and lift numbers, adjusting the load based on progress. Additionally, the coach offers dietary advice around heavy sessions. If the coach adapts its plan, it is based on recent data, such as swapping a 10K time trial for a progressive build after analyzing a 14K run the day before and considering the week's load. The user managed to achieve a sub-20 5K goal in about a month, reducing the time spent on planning. However, the coach is not an app; it's an agent framework (Hermes) with custom configuration that requires a model API key and a Garmin login. The coach occasionally reads Garmin's readiness score too literally, so the user decided to ignore that metric. The configuration is open-source, with the general setup available on GitHub: https://github.com/upandawaybackdoorscrewball/runcoach. The coach's adaptability has proven beneficial in achieving goals like a sub-20 5K time.",
  "summary": "For a long time my \"coach\" was me uploading screenshots of Garmin Connect into Claude and asking what to do next. Earlier this year I set up a self-hosted agent on a Mac mini instead, and gave it read access to my Garmin (sleep, HRV, resting HR, VO2 trend, laps) through an MCP, my Strava uploads, and a folder where it keeps notes on me. Then I wrote it a long instruction file describing how I…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}