Supplementary TUI for ai-health — an interactive terminal workout companion with voice coaching (macOS say).
ai-health generates your workout plans; this tool walks you through each set with a Rich TUI — rest timers, timed holds, progress tracking, and voice cues.
The coach reads structured JSON "cassette" files that describe a workout session. Use the exercise-coach.skill to generate a cassette from your workout plan:
- Download the skill and install it in Claude Code
- Ask Claude to create a cassette for your workout — it will output JSON
- Run
python coach.pyand paste the cassette JSON into interactive mode
You can use the ai-health project to guide your exercises — it generates personalised workout plans that the skill can convert into cassettes.
pip install rich
python coach.py workout.json
Or paste interactively:
python coach.py
Exercise Name 3x12 | 55 lbs
Plank 3x40s | BW
<sets>x<reps> for rep-based, <sets>x<seconds>s for timed holds. Optional | weight after.
--rest N Rest seconds between sets (default: 75)
--reset Discard saved progress and exit
--log Print current saved progress and exit
Progress auto-saves on every completed set and on Ctrl-C. Re-run the same workout to pick up where you left off.
Coaching cues use, in order: macOS say, piper (if piper and aplay are on PATH and a voice model is found), then espeak-ng/espeak. Silently skipped if none are available.
pip install piper-tts
# Grab the recommended voice (ryan/high — punchier than lessac for coaching cues)
mkdir -p ~/piper-voices && cd ~/piper-voices
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/ryan/high/en_US-ryan-high.onnx
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/ryan/high/en_US-ryan-high.onnx.json
# Smoke-test
echo "the velcro cat approaches" | piper -m ~/piper-voices/en_US-ryan-high.onnx -f out.wav && aplay out.wavThe coach prefers en_US-ryan-high.onnx if present; otherwise it picks the first .onnx it finds in ~/piper-voices/ or ~/.local/share/piper-voices/. To pin a specific voice, set PIPER_MODEL=/path/to/voice.onnx. Browse other voices at rhasspy/piper-voices.