intervals

Your training, coached.

intervals is a running coach that lives on top of your intervals.icu data. It reads your calendar, activities, and recovery, plans your training around 80/20, and brings you every change as a proposal you approve or dismiss.

web + Android · open source · your keys, your data
intervals.imnick.dev/calendar
The intervals week view: distance, time, load, and form for the week

A coach that reads your training, not a template.

Ask what to adjust this week and the coach answers from your actual calendar, activities, and recovery signals, with training science behind every plan. Chat streams in real time, sessions are searchable and pinned, and every reply can become concrete calendar changes.

Week view with planned and done runs
Coach chat on mobile
Proposal approval on mobile

Nothing moves without you.

Every calendar write shows exactly what would change (date, name, distance, workout text, load profile) with the coach's rationale beside it. Approve and it's on your calendar. Dismiss and nothing happened. Ask for a bigger change, like trimming a whole week, and you get one sheet with per-row checkboxes and diff bars, so you can approve two rows and throw the rest back.

The proposal review modal with field-level diffs
A multi-change proposal bundle with per-row selection

Your training, right now.

Tap the Load or Form metrics on your week view and intervals opens the drill-down: THE GAP between your current load and your hold-flat target, your weekly zone mix with an 80/20 verdict, CTL/ATL fitness, and seven days of HRV, resting heart rate, and sleep.

Training status drill-down with the gap, zones, and recovery
The upcoming runs Android widget in a launcher

Your keys, your models.

Bring your own OpenRouter key and pick your coach's brain: GLM, Claude Haiku, and DeepSeek on the roster by default. The app ships zero LLM credentials, chat can run fully on-device against any OpenAI-compatible endpoint like LM Studio or Ollama, and the header badge always tells you which mode you're in.

Settings with masked keys, units, and model picker
01

Connect intervals.icu.

Your athlete ID and API key mirror your calendar, activities, and wellness data.

02

Chat with your coach.

Ask what to adjust, register a race, or trim a week. Everything arrives as proposals.

03

Approve the changes.

Your calendar moves only when you say so. Partial approvals are fine.

Built in the open.

intervals is built by Nick with a standing team of AI agents (a builder, a coach tuner, and a vision reviewer) under a written working agreement: the same propose-and-approve discipline the app itself enforces. Web is live today, Android beta is in nightly use, and iOS widgets ship next.

NickLewanowicz/intervals-ui →
Expo + React Native · Cloudflare Worker · PocketBase · OpenRouter