Repository navigation
v0.2.2 — first start in one command
The first-start release: one command to get going, a clear answer on where Claude connects, and the usual worries answered where they come up.
uv tool install git+https://github.com/edxleon/runcoach-ai@v0.2.2
runcoach serveOne command to start
runcoach servechecks Garmin and Claude before the app opens. In a terminal it asks for the Garmin login right there. If Claude Code is installed but not signed in, it offersclaude auth login.- Before, it took four steps in two windows (serve,
runcoach login,runcoach sync --days 30, and usually a restart).
- Before, it took four steps in two windows (serve,
- The first sync fetches the last 30 days by itself.
- A login in another terminal is picked up with ↻, no restart.
Where Claude connects
- The Today tab opens with a Setup checklist: Garmin, Claude and the first sync, each marked done, running or to do, with exactly one step for each.
- The Claude step says plainly: install Claude Code, run
claude auth login, sign in with your Claude plan. There is no API key, and nothing to enter in the app. - The status comes from
claude auth status, so the app,doctorand the terminal all say the same thing.
What the Garmin login keeps
- Before the e-mail prompt,
runcoach loginexplains:- the password goes to Garmin only and is never stored;
- only a session token is kept, on this computer, in a folder only your user account can read;
- the token is sent to Garmin and nowhere else;
- how to revoke it.
- The token folder is set to 0700 and its files to 0600, also when
RUNCOACH_GARMIN_TOKENSpoints outside the app's own folder.
Fewer reasons to hesitate
- The Today headline is today's decision. The recovery light is shown as one input to it ("Easy - today's call · recovery light: Go"), not as a green "Go" above "Easy today".
- Under the coach buttons:
- it runs on your Claude subscription, with no bill per card;
- Claude gets the numbers the app shows, never your Garmin password;
- an analysis never changes your watch.
- Under "Put on watch": only what is listed goes to Garmin, and "Take off watch" removes it again.
- The footer shows where your data lives and that deleting that folder removes everything.
- The README has a new section, "Before you start: the usual worries": password, cost, what Claude sees, your watch, a Garmin block (with measured request counts), medical advice, removing it all.
Demo video
- The video now plays inline in the README. It opens on a title card, the first frame a player shows, and has no burned-in captions (
scripts/video.py --captionsadds them back).
Evals: 25/25 in two full runs
- The judge is now told to grade only the conditions a case names. It had started failing correct answers for options the case never asked for.
- Two cases list their allowed outcomes outright instead of leaving the judge to do the arithmetic.
- Without the skill files, the safety cases still fail, so the judge still tells good answers from bad ones.
Verified
- 731 Python tests and 66 frontend tests, on Linux, Windows and macOS with Python 3.12 and 3.13, plus the install-as-a-user job.
- A real first start in a terminal on an empty data folder.
Not affiliated with Garmin. A training tool, not medical advice.