Turn your AI agent into your personal fitness coach.
fit-agent is a Go CLI that hands your training data to an AI agent in a
form it can actually reason about — and lets the agent push tomorrow's
workout straight to your watch or bike computer.
It bridges intervals.icu (where your devices already sync) and an OpenClaw workspace (where your agent does its thinking).
Status: pre-alpha. Design is set, code is being written. See
agent-plan.mdfor the v1 roadmap.
- Pulls everything you do — activities, per-lap and per-interval
metrics from the underlying
.fitfile, daily wellness (HRV, RHR, sleep, steps, stress) — from intervals.icu into a local workspace. - Renders it for an LLM — concise, commented YAML for activity and wellness data; markdown for narrative files. No 174-field JSON dumps, no token-eating prose tables.
- Keeps the originals — raw icu JSON and raw
.fitfiles live in.cache/, so the agent-facing files can always be regenerated. - Lets the agent plan and push — bundled coaching skills teach an agent to interview you about goals, pick a methodology (Jack Daniels, 80/20, Norwegian, etc.), build a multi-week plan, translate it into daily workouts, and push them to intervals.icu (and on to your device) with one command.
- Stays out of your way — agent-owned files (
ATHLETE-PROFILE.md,TRAINING-PLAN.md, planned-workout intent) are never overwritten. Machine-owned data files are regenerated on every fetch.
my-coaching/
├── ATHLETE-PROFILE.md # goals, history, constraints (you + agent)
├── TRAINING-PLAN.md # the plan the coach builds with you
├── skills/ # OpenClaw coaching skills (bundled)
│ ├── training-plan-coach/
│ ├── workout-builder/
│ └── training-session-coach/
└── fit-agent/
├── activities/2026-05-03.yaml # today's session(s), with laps
├── wellness/2026-05.yaml # the month's daily wellness
├── planned-workouts/2026-05-04.md # tomorrow's workout
└── .cache/ # raw icu JSON + .fit files
fit-agent init # one-time setup; scaffolds the workspace
fit-agent fetch --since 30d # pull activities + wellness + planned
fit-agent push-workouts # push planned workouts back to intervals.icuPlus atomic subcommands for debugging and agent use:
fit-agent cache activity <id> # download raw json + .fit only
fit-agent render activity <id> # cache → YAML, no network
fit-agent fit laps <file.fit> # inspect a parsed .fit file
fit-agent workout render <file> # convert the fit-workout DSLfit-agent initcreates the workspace and installs three coaching skills as OpenClaw workspace skills.- You open the workspace with your agent. The agent reads
ATHLETE-PROFILE.mdand recentactivities/+wellness/data. - The training-plan coach skill walks you through goals and
methodology, then writes
TRAINING-PLAN.md. - The workout-builder skill turns the plan into concrete daily
workouts under
planned-workouts/and runsfit-agent push-workouts. - The training-session coach skill checks today's wellness against today's planned workout and recommends adjustments before you train.
The CLI never calls an LLM. The agent calls the CLI.
- v1 — three commands, intervals.icu only, manual
fetch. - post-v1 —
fit-agent servefor intervals.icu webhooks, OpenClaw webhook integration so the agent is notified the moment new data lands, and full coaching prompts in the bundled skills.
muktihari/fit— Go FIT SDK.- intervals.icu API.
- OpenClaw skill format.
MIT — see LICENSE.