charmbracelet/fang

The CLI starter kit

Go

1,954

128 commits

updated May 4, 2026

See the code

README

Fang

Charm Fang

Latest Release GoDoc Build Status

The CLI starter kit. A small, experimental library for batteries-included Cobra applications.

The Charm Fang mascot and title treatment

Features

  • Fancy output: fully styled help and usage pages
  • Fancy errors: fully styled errors
  • Automatic --version: set it to the build info, or a version of your choice
  • Manpages: Adds a hidden man command to generate manpages using mango1
  • Completions: Adds a completion command to generate shell completions
  • Themeable: use the built-in theme, or make your own
  • UX: Silent usage output (help is not shown after a user error)

Usage

To use it, invoke fang.Execute passing your root *cobra.Command:

package main

import (
	"context"
	"os"

	"github.com/charmbracelet/fang"
	"github.com/spf13/cobra"
)

func main() {
	cmd := &cobra.Command{
		Use:   "example",
		Short: "A simple example program!",
	}
	if err := fang.Execute(context.Background(), cmd); err != nil {
		os.Exit(1)
	}
}

That's all there is to it!

Contributing

See contributing.

Feedback

We’d love to hear your thoughts on this project. Feel free to drop us a note!

License

MIT


Part of Charm.

The Charm logo

Charm热爱开源 • Charm loves open source

Footnotes

  1. Default cobra man pages generates one man page for each command. This is generally fine for programs with a lot of sub commands, like git, but its an overkill for smaller programs. Mango also uses roff directly instead of converting from markdown, so it should render better looking man pages. ↩

Significant stargazers

(top 24 of 61)

Aman Karmani

3,104 followers · starred Jun 2025

Joshua Peek

2,587 followers · starred Jun 2025

CrazyMax

2,790 followers · starred Jun 2025

Ludovic Fernandez

731 followers · starred Jun 2025

charmbracelet/fang

The CLI starter kit

Go

1,954

128 commits

updated May 4, 2026

See the code

README

Fang

Charm Fang

Latest Release GoDoc Build Status

The CLI starter kit. A small, experimental library for batteries-included Cobra applications.

The Charm Fang mascot and title treatment

Features

  • Fancy output: fully styled help and usage pages
  • Fancy errors: fully styled errors
  • Automatic --version: set it to the build info, or a version of your choice
  • Manpages: Adds a hidden man command to generate manpages using mango1
  • Completions: Adds a completion command to generate shell completions
  • Themeable: use the built-in theme, or make your own
  • UX: Silent usage output (help is not shown after a user error)

Usage

To use it, invoke fang.Execute passing your root *cobra.Command:

package main

import (
	"context"
	"os"

	"github.com/charmbracelet/fang"
	"github.com/spf13/cobra"
)

func main() {
	cmd := &cobra.Command{
		Use:   "example",
		Short: "A simple example program!",
	}
	if err := fang.Execute(context.Background(), cmd); err != nil {
		os.Exit(1)
	}
}

That's all there is to it!

Contributing

See contributing.

Feedback

We’d love to hear your thoughts on this project. Feel free to drop us a note!

License

MIT


Part of Charm.

The Charm logo

Charm热爱开源 • Charm loves open source

Footnotes

  1. Default cobra man pages generates one man page for each command. This is generally fine for programs with a lot of sub commands, like git, but its an overkill for smaller programs. Mango also uses roff directly instead of converting from markdown, so it should render better looking man pages. ↩

Significant stargazers

(top 24 of 61)

Aman Karmani

3,104 followers · starred Jun 2025

Joshua Peek

2,587 followers · starred Jun 2025

CrazyMax

2,790 followers · starred Jun 2025

Ludovic Fernandez

731 followers · starred Jun 2025