usage

usage 7.0.1

A specification for CLIs

  • By jdx
  • Open Source
  • Updated Oct 14, 2026
Download for Windows

About usage

Usage is a spec and CLI for defining CLI tools. Arguments, flags, environment variables, and config files can all be defined in a Usage spec. It can be thought of like OpenAPI (swagger) for CLIs. Here are some potential reasons for defining your CLI with a Usage spec:

  • Generate autocompletion scripts
  • Generate markdown documentation
  • Generate man pages
  • Generate type-safe SDK client libraries for TypeScript, Python, and Rust
  • Use an advanced arg parser in any language
  • Scaffold one spec into different CLI frameworks-even different languages
  • [coming soon] Host your CLI documentation on usage.sh

What's new in 7.0.1

This release reduces how much code usage-argv adds to CLIs that embed it. Help, -h, version, completion and parse-error output stay byte-for-byte the same, and startup and parse speed are unchanged.
Changed
- (lib) Help, completion and error rendering in usage-argv produce less machine code (#1551, #1553, #1554, @jdx). String appends, text wrapping, slicing, searching, completion splitting and error suggestions now go through shared helpers instead of being expanded at every call site. In stripped release builds of oxlint and oxfmt, the three PRs together removed about 85 KB from each binary. That covers most of the size those CLIs gained when they moved from bpaf to usage-rs.

Fixed

  • (complete) Split::walked and Split::argv no longer panic when cword is out of range. They now return the whole word list and an empty slice (#1554, @jdx).

💚 Sponsor usage
usage is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If usage powers CLI specs, docs, or completions for a tool you maintain or use, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep usage fast, free, and independent.

Full release notes »

Technical details

Publisherjdx
AuthorJeff Dickey
Version7.0.1
Release date2026-10-14
LicenseMIT
Installer typezip
Architecturex64, arm64
Package IDjdx.usage

Links & install command

Install usage from the command line with Windows Package Manager (winget):

winget install --id=jdx.usage -e

clispec

Older versions

  • 7.0.0
  • 6.12.1
  • 6.12.0
  • 6.11.1
  • 6.11.0
  • 6.10.0
  • 6.9.1
  • 6.9.0
  • 6.8.0