nicholasg1997
Shorten Space short_description to <=60 chars
3dbabbf
---
title: STRIDE Local AI Running Coach
emoji: 🏃
colorFrom: red
colorTo: gray
sdk: gradio
sdk_version: 6.16.0
app_file: app.py
python_version: "3.11"
pinned: false
short_description: AI running coach for your Strava data, with attitude.
---
# 🏃 STRIDE — Local AI Running Coach
Turn your running history into a personality-driven coaching report and chat.
- **Deterministic engine** (Python) computes the metrics — weekly mileage, pace
trends, ACWR training load, and signals — so the numbers are always correct.
- **LLM coach** (served via Modal + vLLM) only *interprets* those numbers in a
chosen persona; it never does the arithmetic or invents data.
- **Gradio UI** with demo athletes, a stock-ticker mileage chart, and a chat to
ask the coach follow-up questions.
## Configuration (Space secrets)
Set these under **Settings → Variables and secrets**:
| Secret | Purpose |
|---|---|
| `LLM_BASE_URL` | Modal vLLM endpoint, including `/v1` |
| `LLM_MODEL` | model name the endpoint serves (must match exactly) |
| `LLM_API_KEY` | shared key for the secured endpoint |
| `STRAVA_CLIENT_ID` / `STRAVA_CLIENT_SECRET` / `STRAVA_REFRESH_TOKEN` | optional: default account for the "use my data" path |
Demo data needs no secrets — only the four `LLM_*` values are required for the
coach to respond.
## Run locally
```bash
uv run python app.py
```