CLI for logging Garmin Connect health data to markdown with structured JSON storage.
- Auth management — login, status, auto-refresh tokens
- Health logging — daily reports, sleep, stress, summary
- Activity logging — detailed activity analysis
- Markdown output — monthly files with formatted reports
- JSON storage — raw data for analysis
go install github.com/nikil0dion/garmin-cli/cmd/garmin-cli@latest
# Or build from source
go build -ldflags="-w -s" -trimpath -o garmin-cli ./cmd/garmin-cli# Credentials for login/refresh
export GARMIN_EMAIL="your@email.com"
export GARMIN_PASSWORD="your-password"
# Optional
export GARMIN_DATA_DIR="/path/to/data"
export GARMIN_LOG_LEVEL="info" # error, warn, info, debug
# Token (exported via `garmin-cli auth export`)
export GARMIN_TOKEN="base64-encoded-token"Priority: env vars > config.json > defaults
~/.config/garmin-cli/config.json:
{
"email": "your@email.com",
"password": "your-password",
"data_dir": "/path/to/data"
}# Login
garmin-cli auth login your@email.com
# Check status
garmin-cli auth status
# Auto-refresh token (for cron)
garmin-cli auth refresh# Full daily report (sleep + body battery + stress + summary)
garmin-cli log daily
garmin-cli log daily yesterday
garmin-cli log daily 2024-01-15
# Individual reports
garmin-cli log sleep
garmin-cli log stress
garmin-cli log summary
# Activity (latest or by ID)
garmin-cli log activity
garmin-cli log activity 21929289091Data is saved to:
- Markdown:
~/.local/share/garmin-cli/markdown/YYYY-MM.md - JSON:
~/.local/share/garmin-cli/json/TIMESTAMP_TYPE.json
💤 СОН (2024-01-15)
Всего: 7.2ч
Качество: 85% хорошо ✅
Фазы:
• Глубокий: 1.8ч
• REM: 1.5ч
• Лёгкий: 3.9ч
❤️ Средний пульс: 52 bpm
# Refresh token and log daily at 8 AM
0 8 * * * garmin-cli auth refresh && garmin-cli log dailyMIT