BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
Kestrel: free, open-source AI running coaching for school teams. Team calendar, training plans that adapt, watch sync, race predictions from open models, and an AI coach you can power with any model.
Sports & fitnessJavaScript · HTMLGitHub @jakecapmeilOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Free, open-source AI running coaching for school teams, plus Kestrel Lab for open running models.
Taken from the repository README
Loading the full README.
Read the full README ↗Free, open-source AI running coaching for school teams. Live at https://kestrel.jakecapmeil.workers.dev.
Running apps charge for adaptive training plans and AI coaching. Kestrel makes those open: the coach, the plans, the race models and the code. It keeps a whole team on one calendar, and it lets anyone publish running models for everyone else to use.
For an athlete
For a team
Kestrel Lab (/lab): the model side.
/api/v1/predict) with personal API keys./legal.| Part | What |
|---|---|
src/index.js | Cloudflare Worker: the API and the rules above. |
src/train/ | The training engine from Kestrel Calendar: plans, coach, log, fitness, workouts, watch sync, plan push, calculators. |
docs/model-research.md | Which models are on Kestrel, which to add next, and how purposes and courses work. |
src/models.js | Kestrel Lab's model engine (purposes, courses, one evaluator per model kind, plus upload validation) and the adapters the fitness engine calls. |
public/index.html | The app (the Kestrel views). public/kestrel.js adds sign-in, teams, the AI choice and settings; public/kestrel.css is the design. |
src/train/courses.js | Courses and course PRs. 48 built-in courses (each checked against a published source, with GPS start bounds so a run is matched to its course); courses people add live in the courses table, are shared, and are chosen by hand on the run. |
public/records.js | You → Records (PRs that update themselves, the courses you follow), the course picker, and a run's route (flat, elevation, and 3D terrain through MapLibre with OpenStreetMap and AWS terrain tiles). |
public/lab/ | Kestrel Lab. |
migrations/ | Cloudflare D1 (SQLite) schema. |
models/ | The built-in open-weight models and their cards. |
scripts/ | check-models.mjs (the engine matches the original KestrelPredict code and rejects bad files) and auth-stub.mjs (a local stand-in for Supabase sign-in). |
wrangler.jsonc (SUPABASE_URL, SUPABASE_KEY).npm install
npx wrangler d1 create kestrel_db # put the id in wrangler.jsonc
npm run migrate:remote
openssl rand -hex 32 | npx wrangler secret put KESTREL_SECRET # encrypts watch keys
npx wrangler secret put GEMINI_API_KEY # optional: the free default AI (aistudio.google.com)
# optional free fallbacks, tried in this order when Gemini is busy, before Workers AI:
npx wrangler secret put GROQ_API_KEY # console.groq.com
npx wrangler secret put CEREBRAS_API_KEY # cloud.cerebras.ai
npx wrangler secret put OPENROUTER_API_KEY # openrouter.ai (its ":free" models)
npm run deploy
To develop locally without Supabase:
npm run auth-stub and npm run migrate:local.npx wrangler dev --port 8788 --var SUPABASE_URL:http://localhost:8799 --var SUPABASE_KEY:stub.password.Kestrel started as a calendar for the Hunter Kestrel running team, so everyone could say whether they were coming to practice, and grew feature by feature into a training platform for any team. It is an entry in the 2026 Congressional App Challenge. The libraries, services and datasets it builds on are in THIRD_PARTY.md.
public/vendor/body-muscles/).Kestrel grew out of Kestrel Calendar, a team calendar and coaching app built for one high school cross-country team. The KestrelPredict research (datasets, experiments, training scripts) is in that repository, under research/hawkspredict.