hevy-cli
A typed, testable CLI for the Hevy workout tracking API.
Features
- Full Hevy API coverage — workouts, routines, folders, exercises, history
- Multiple output formats — table (rich), JSON, YAML (auto-selected by TTY)
- Auto-pagination — fetch all results with
--all - Flexible auth — env var, flag, or config file (XDG-compliant)
- Typed end-to-end — pydantic v2 models, mypy
--strict, pyright-friendly - Retry logic — exponential backoff on rate limits and server errors (tenacity)
- Structured logging —
structlogwith JSON output in--debug - Tested — pytest + respx against the real API shapes
Installation
With uv (recommended)
uv tool install hevy-cli
With pip
pip install hevy-cli
From source
git clone https://github.com/marinsalinas/hevy-cli.git
cd hevy-cli
uv sync
Quick Start
1. Get your API key
Go to hevy.com/settings?developer (requires Hevy Pro).
2. Configure
# Option A: Environment variable
export HEVY_API_KEY="your-api-key"
# Option B: Config file
hevy config set auth.api_key "your-api-key"
# Option C: Per-command flag
hevy --api-key "your-api-key" workouts list
3. Use
# List recent workouts
hevy workouts list
# Get a specific workout
hevy workouts get abc123
# List all workouts (auto-paginate)
hevy workouts list --all
# Filter by date range (YYYY-MM-DD, both bounds inclusive)
hevy workouts list --since 2026-01-01 --until 2026-03-31 --all
# Count total workouts
hevy workouts count
# JSON output for scripting
hevy workouts list --format json | jq '.[] | .title'
# Create a workout from file
hevy workouts create --file workout.json
# List exercise templates
hevy exercises list --page-size 50
# Get exercise history with date range
hevy exercises history D04AC939 --start 2024-01-01 --end 2024-12-31
# List routines
hevy routines list
# List routine folders
hevy folders list
# Create a routine folder
hevy folders create "Push Pull Legs"
# Show current config
hevy config show
Output Formats
# Rich table (default in terminal)
hevy workouts list
# JSON (default when piped)
hevy workouts list --format json
# YAML
hevy workouts list --format yaml
Configuration
Config is stored at ~/.config/hevy/config.toml (XDG compliant):
[auth]
api_key = "your-api-key"
[output]
format = "table" # json | table | yaml
color = true
[api]
base_url = "https://api.hevy.com"
timeout = 30
max_retries = 3
Development
# Clone and setup
git clone https://github.com/marinsalinas/hevy-cli.git
cd hevy-cli
uv sync --dev
# Run tests
uv run pytest
# Run linter
uv run ruff check src/ tests/
uv run ruff format --check src/ tests/
# Type checking
uv run mypy src/
# Run CLI in dev mode
uv run hevy --help
API Coverage
| Resource | list | get | create | update | count | events | history |
|---|---|---|---|---|---|---|---|
| Workouts | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Routines | ✅ | ✅ | ✅ | ✅ | — | — | — |
| Folders | ✅ | ✅ | ✅ | — | — | — | — |
| Exercises | ✅ | ✅ | ✅ | — | — | — | ✅ |
Use with Claude Code
This package ships a Claude Code skill so Claude can query your Hevy data directly through hevy instead of writing one-off HTTP scripts. Roughly 2–3× fewer tokens per Hevy-related prompt and no auth/pagination/error-handling drift.
# One-time install (from a clone of this repo)
mkdir -p ~/.claude/skills
cp -r skills/hevy ~/.claude/skills/
Then ask Claude things like "summarise my workouts from this week" or "what's my bench press PR?" — the skill activates automatically based on its description.
See docs/claude-skill.md for the install guide, customisation, and troubleshooting. An MCP server (cross-platform — Claude Desktop, Cursor, opencode, Continue) is planned for a future release.
Contributing
Contributions are welcome. See CONTRIBUTING.md for the dev setup, commit conventions, and pull-request flow. Start with issues labelled good first issue.
Architecture decisions and rationale are captured in ARCHITECTURE.md. Security issues should follow the private disclosure path in SECURITY.md — please do not file them as public issues.
Changelog
See CHANGELOG.md. This project follows Semantic Versioning; pre-1.0 minor releases may include breaking changes.
License
MIT — see LICENSE.
Metadata
Release files for hevy-cli 0.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hevy_cli-0.4.2.tar.gz | 113.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hevy_cli-0.4.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 145.0 kB
Release files / hevy_cli-0.4.2.tar.gz
| Download URL | hevy_cli-0.4.2.tar.gz |
|---|---|
| Size | 113.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c2fb52c854305a3239a819d32a57640a42ebc7e156239f9cc4c4a16edcf73158
|
|
BLAKE2b-256 checksum How to use checksums |
ba87b6d0c9abe529375f92fcc509883926b86a2e3f8ebd53ef640d0a039071ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 2, 2026.
Transparency logRelease files / hevy_cli-0.4.2-py3-none-any.whl
| Download URL | hevy_cli-0.4.2-py3-none-any.whl |
|---|---|
| Size | 31.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b5cacb5450880e4f347d0c335916ff13b4086347aac198146a0bbd1e78b26030
|
|
BLAKE2b-256 checksum How to use checksums |
b41f77ef50f1332311b59a7e1602ddcd77d3f4c1b5af1c0a35d5bdd3b92f7d66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 2, 2026.
Transparency log