Workout CLI
CLI for tracking workouts, managing exercises, and analyzing training progress.
Installation
bash
curl -fsSL https://raw.githubusercontent.com/gricha/workout-cli/main/install.sh | bash
Then add to PATH: export PATH="$HOME/.workout-cli/bin:$PATH"
Quick Reference
| Action | Command |
|---|---|
| Start workout | workout start --empty or workout start <template> |
| Log sets | workout log bench-press 135 8,8,7,6 |
| Add note | workout note "Felt strong" |
| Swap exercise | workout swap bench-press dumbbell-bench-press |
| Finish | workout done |
| View last | workout last |
| Check PRs | workout pr |
| Undo last set | workout undo |
| Edit a set | workout edit bench-press 2 155 8 |
| Delete a set | workout delete bench-press 3 |
Multi-User Profiles
Multiple people can track workouts independently using profiles.
bash
# List all profiles workout profile list # Create a new profile workout profile create sarah # Delete a profile workout profile delete old-profile
When multiple profiles exist, specify which one:
bash
workout --profile mike start push-day workout --profile mike log bench-press 185 8 workout --profile mike done
- •Single profile: Commands work without
--profile(backwards compatible) - •Shared exercises: Exercise library is shared across all profiles
- •Per-user data: Templates, workouts, config, and current session are per-profile
Workout Sessions
Start a Workout
bash
# Freestyle session (most common) workout start --empty # From template workout start push-day # Resume interrupted workout start --continue
Log Sets
bash
# Multiple sets at same weight workout log bench-press 135 8,8,7,6 # Progressive weights (call multiple times) workout log squat 135 10 workout log squat 185 8 workout log squat 225 5,5,5 # Relative to last session workout log deadlift +10 5 # With RIR tracking workout log bench-press 185 8 --rir 2
Notes
bash
# Session-level note workout note "Elbow felt tight on pulling movements" # Exercise-specific note workout note lat-pulldown "Dropped weight due to elbow"
Swap & Add
bash
# Swap an exercise (moves logged sets to new exercise) workout swap bench-press dumbbell-bench-press # Add exercise mid-workout workout add face-pulls
Finish or Cancel
bash
# Complete and save workout done # Shows: duration, total sets, volume, muscles worked # Discard without saving workout cancel
Check Status
bash
workout status # Shows current exercises, sets logged, and notes
Undo, Edit & Delete Sets
Fix mistakes during a workout without canceling:
bash
# Remove last logged set (any exercise) workout undo # Remove last set of specific exercise workout undo bench-press # Edit set 2: change weight and reps workout edit bench-press 2 155 8 # Edit set with options workout edit bench-press 2 --reps 10 --rir 2 # Delete set 3 entirely workout delete bench-press 3
Set numbers are 1-indexed.
Exercise Library
List Exercises
bash
workout exercises list workout exercises list --muscle chest workout exercises list --type compound
Add Custom Exercise
⚠️ All three options required:
bash
workout exercises add "Bayesian Cable Curl" \ --muscles biceps \ --type isolation \ --equipment cable workout exercises add "Single Arm Cable Row" \ --muscles back,lats \ --type compound \ --equipment cable
Show/Edit/Delete
bash
workout exercises show bench-press workout exercises edit bench-press --notes "Pause at bottom" workout exercises delete my-custom-exercise
Templates
bash
# List templates workout templates list # Create template workout templates create "Push Day" \ -e "bench-press:4x8-12, overhead-press:3x8-10, lateral-raise:3x12-15" # Show template workout templates show push-day # Delete template workout templates delete push-day
History & Analytics
Last Workout
bash
workout last workout last --full
Exercise History
bash
workout history bench-press workout history squat --last 20
Personal Records
bash
workout pr workout pr bench-press workout pr --muscle chest
Shows weight × reps with estimated 1RM.
Volume Analysis
bash
workout volume # Last 4 weeks workout volume --week workout volume --month workout volume --by muscle workout volume --by exercise
Progression
bash
workout progression bench-press # Shows: date, best set, estimated 1RM, volume over time
Typical Session
bash
# 1. Start workout start --empty # 2. Log as you go workout log lat-pulldown 100 10,10,9,8 workout note lat-pulldown "Dropped from 120 due to elbow" workout log single-arm-cable-row 40 12,12,10 workout log single-arm-cable-row 45 10,10 # 3. Add session notes workout note "Pull day - elbow still recovering" # 4. Finish workout done
Data Storage
code
~/.workout/ exercises.json # Exercise library workouts/ # Completed sessions
JSON Output
All commands support --json:
bash
workout pr --json workout last --json workout history squat --json
Gotchas
- •exercises add requires all three:
--muscles,--type,--equipment - •Weights are in lbs by default
- •Multiple calls to
logat different weights work fine (common pattern) - •
swapmoves all logged sets to the new exercise - •
note <exercise> <text>adds note to specific exercise;note <text>adds session note
References
- •Repository: https://github.com/gricha/workout-cli