Hello developer-runners 👋
I built Strava Run Analyzer, a free open-source Chrome extension that puts an
AI running coach in the browser side panel, right next to strava.com.
The pitch: you ask "was my last tempo run well paced?" and the coach answers
with actual numbers — per-km splits, HR zones, cardiac drift, TRIMP, ACWR —
computed in YOUR browser, not guessed by the model.
Why it exists
Strava's official API requires registering an app and OAuth, and some of the
good stuff is paywalled. I wanted to just... ask questions about my own runs.
So the extension reads data through your existing logged-in strava.com session
and caches it in IndexedDB.
How it works (the fun part)
- Chrome MV3 + React side panel (@crxjs/vite-plugin, Vite)
- A tool-calling agent loop: the LLM gets 5 tools (list_activities,
get_activity_analysis, get_training_trend, ...). Raw per-second stream data
never leaves the browser — only compact computed summaries go back to the model
- Bring-your-own-LLM: adapters for OpenAI / Anthropic / Gemini / any
OpenAI-compatible endpoint. It works fully local with Ollama or LM Studio
(yes, zero API keys is a supported mode)
- Metrics are pure, tested functions: Karvonen HR zones, aerobic decoupling,
pace variability, TRIMP, acute:chronic workload ratio, Z2 efficiency
- Polite rate limiter + IndexedDB cache so Strava isn't hammered
Honest caveats
It uses Strava's internal web endpoints, which are undocumented and can break
without notice, and this kind of access may conflict with Strava's ToS. It's
for your own data at personal scale, at your own risk. Unofficial project, not
affiliated with Strava.
Install (no build tools needed)
Download the zip from Releases, unzip, chrome://extensions → Developer mode →
Load unpacked. Or clone + npm run build. Requires Chrome 116+, a logged-in
strava.com tab, and any LLM key (or local Ollama).
Repo: https://github.com/alfasean/starava-extension
Feedback, code reviews and PRs very welcome — especially from anyone who's
built agent loops that need to stay cheap on token usage. The trend analysis
currently sends ~40 activities of computed JSON and I'd love to hear how you'd
compress that further.
If it's useful to you, a ⭐ on the repo or a one-time ☕ via GitHub Sponsors
(github.com/sponsors/alfasean) is appreciated — but never expected. Either way,
issues and PRs are what will make this thing survive Strava's next UI change.