urfave/cli

A declarative, simple, fast, and fun package for building command line tools in Go

24,232

stars

3,627

commits

Go

primary language

Sep 4, 2026

updated

cli.urfave.org
cli
command-line
go
golang-library
json
toml
yaml
Browse cluster: CLI tools for data transformation

README

Welcome to urfave/cli

Go Reference Go Report Card codecov Tests status

urfave/cli is a declarative, simple, fast, and fun package for building command line tools in Go featuring:

  • commands and subcommands with alias and prefix match support
  • flexible and permissive help system
  • dynamic shell completion for bash, zsh, fish, and powershell
  • no dependencies except Go standard library
  • input flags for simple types, slices of simple types, time, duration, and others
  • compound short flag support (-a -b -c can be shortened to -abc)
  • documentation generation in man and Markdown (supported via the urfave/cli-docs module)
  • input lookup from:
    • environment variables
    • plain text files
    • structured file formats (supported via the urfave/cli-altsrc module)

Documentation

See the hosted documentation website at https://cli.urfave.org. Contents of this website are built from the ./docs directory.

Support

Check the Q&A discussions. If you don't find answer to your question, create a new discussion.

If you found a bug or have a feature request, create a new issue.

Please keep in mind that this project is run by unpaid volunteers.

License

See LICENSE.

Contributors

(top 30 of 302)

dearchap

837 commits

meatballhat

825 commits

jszwedko

274 commits

coilysiren

241 commits

urfave/cli

A declarative, simple, fast, and fun package for building command line tools in Go

24,232

stars

3,627

commits

Go

primary language

Sep 4, 2026

updated

cli.urfave.org
cli
command-line
go
golang-library
json
toml
yaml
Browse cluster: CLI tools for data transformation

README

Welcome to urfave/cli

Go Reference Go Report Card codecov Tests status

urfave/cli is a declarative, simple, fast, and fun package for building command line tools in Go featuring:

  • commands and subcommands with alias and prefix match support
  • flexible and permissive help system
  • dynamic shell completion for bash, zsh, fish, and powershell
  • no dependencies except Go standard library
  • input flags for simple types, slices of simple types, time, duration, and others
  • compound short flag support (-a -b -c can be shortened to -abc)
  • documentation generation in man and Markdown (supported via the urfave/cli-docs module)
  • input lookup from:
    • environment variables
    • plain text files
    • structured file formats (supported via the urfave/cli-altsrc module)

Documentation

See the hosted documentation website at https://cli.urfave.org. Contents of this website are built from the ./docs directory.

Support

Check the Q&A discussions. If you don't find answer to your question, create a new discussion.

If you found a bug or have a feature request, create a new issue.

Please keep in mind that this project is run by unpaid volunteers.

License

See LICENSE.

Contributors

(top 30 of 302)

dearchap

837 commits

meatballhat

825 commits

jszwedko

274 commits

coilysiren

241 commits

Languages

Go

99.8%