Cobra

The commander library that powers Kubernetes, Hugo, and GitHub CLI's command-line interfaces.

Framework
Go
vv1.10.2
44,721 stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
53 /100 Fair
Development Activity 16
Maintenance 20
Community 76
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
88 /100 Excellent
Architecture 88
Code Quality 85
Innovation 90
Learning Curve 95

Cobra is a Go library for building modern, POSIX-compliant command-line applications with nested subcommands, persistent and local flags, and automatic help generation. It provides both an interface for defining commands and a controller for organizing application code, following the APPNAME COMMAND ARG --FLAG pattern used by tools like git and go.

Cobra powers CLIs for some of the most widely used projects in the Go ecosystem, including Kubernetes, Hugo, and the GitHub CLI. Beyond command dispatch, it auto-generates shell completions for bash, zsh, fish, and PowerShell, plus man pages, Markdown, REST, and YAML documentation directly from the same command definitions.

What You Get

  • A Command struct with a full lifecycle (PersistentPreRun -> PreRun -> Run/RunE -> PostRun -> PersistentPostRun) for organizing CLI logic
  • POSIX-compliant flag parsing via the bundled pflag library, with cascading persistent and local flags
  • Auto-generated shell completions for bash, zsh, fish, and PowerShell
  • Auto-generated man pages, Markdown, REST, and YAML documentation from your command definitions
  • The cobra-cli generator to scaffold new CLI projects and commands

Common Use Cases

  • Building a git- or kubectl-style CLI with nested subcommands and per-command flags
  • Adding a controller layer that organizes a Go application’s command-line entry points
  • Shipping shell autocompletion alongside a CLI without hand-writing completion scripts
  • Generating consistent man pages and reference docs directly from command source

Under The Hood

Architecture

Cobra’s core abstraction is the Command struct (command.go, 2000+ lines) organized into a tree: each Command holds child Commands, its own pflag.FlagSet, and a chain of lifecycle hooks (PersistentPreRun -> PreRun -> Run/RunE -> PostRun -> PersistentPostRun). Execute() walks up to the root Command via Root(), then ExecuteC() resolves os.Args against the Command tree, parses flags through the embedded pflag.FlagSet, and dispatches into the matched command’s lifecycle chain. That same tree is reused as the single source of truth for shell completion generation (completions.go plus per-shell files for bash/zsh/fish/powershell) and documentation generation (the doc/ package, which walks Use/Short/Long/Example fields to emit man pages, Markdown, REST, and YAML docs). This ‘one struct drives execution, completion, and docs’ design is Cobra’s central architectural decision.

Tech Stack

go.mod declares module github.com/spf13/cobra targeting Go 1.15 for broad compatibility, with a deliberately minimal dependency set: github.com/spf13/pflag (Cobra’s own POSIX-compliant flag-parsing fork, doing the actual flag work), github.com/cpuguy83/go-md2man/v2 (Markdown-to-man-page conversion for generated docs), github.com/inconshreveable/mousetrap (a Windows-only check that warns users who double-click the binary instead of running it from a terminal), and go.yaml.in/yaml/v3 (YAML doc generation). There is no runtime framework dependency beyond pflag - the library compiles straight into consumer code, and a Makefile plus a GitHub Actions workflow drive linting, testing, and doc generation in CI.

Code Quality

The repository ships 11 _test.go files at the package root (command_test.go, args_test.go, completions_test.go, bash_completions_test.go, flag_groups_test.go, and more) plus a further test suite inside doc/ for the generated-docs package, covering command resolution, argument validation, flag groups, and every completion shell. Error handling is idiomatic Go - RunE/PreRunE/PersistentPreRunE variants return error rather than panicking, and Args validators (args.go) return descriptive errors on mismatch (ExactArgs, MinimumNArgs, OnlyValidArgs). Naming is consistent and exported identifiers are documented with godoc comments throughout; command.go is the one large file (2000+ lines) that centralizes most of the Command type’s behavior rather than splitting it across files, a defensible but monolithic choice for a struct this central.

API Design Cobra’s public API is declarative: a consumer builds cobra.Command{Use, Short, Long, RunE: ...} values and calls AddCommand/Execute, with almost no required boilerplate to get a working CLI with --help, -h, and command suggestions (‘did you mean…’) for free. Persistent and local flags cascade automatically from parent to child commands, and the same struct fields (Use, Short, Long, Example, ValidArgs) simultaneously drive --help output, shell completions, and generated docs, so documenting a command once documents it everywhere. The companion cobra-cli generator scaffolds new commands/projects, further lowering the barrier to a consistent project layout - this consistency is what most reviewers cite as Cobra’s strongest developer-experience trait.

Used by 63 apps in this directory

Go
100%
Apache 2.0

SpiceDB

Authentication · Databases · Security

7,169

An open source, Google Zanzibar-inspired authorization database that models permissions as relationships and evaluates fine-grained access checks at massive scale with single-digit millisecond latency.

View details
89
Repo Health
89
Technical
67
Dependency
Built with
Go 100%
Updated 1 weeks ago
Go
75%
AGPL 3.0

Teleport

Authentication · Security

21,016

Zero-trust infrastructure access platform that replaces credentials and VPNs with short-lived certificates, SSO, and identity-aware proxies for SSH, Kubernetes, databases, RDP, and AI agents.

View details
94
Repo Health
81
Technical
68
Dependency
Built with
Go 75%
TypeScript 16%
Updated 1 weeks ago
Go
95%
Apache 2.0

TiDB

AI Development · Databases

40,672

AI-Native Distributed SQL Database for Agentic Workloads

View details
97
Repo Health
66
Technical
68
Dependency
Built with
Go 95%
Updated 6 days ago
Go
99%
Apache 2.0

Tusk

AI Code Assistants · Developer Tools · Devops

143

Record live API traffic and replay it as deterministic, sandboxed tests, plus AI code review and unit test generation, all from one Go CLI built by YC W2024's Use-Tusk.

View details
42
Repo Health
77
Technical
76
Dependency
Built with
Go 99%
Updated 5 months ago
Go
86%
Apache 2.0

Uncloud

Devops

5,572

Deploy and scale containerised apps across any servers without Kubernetes or Swarm overhead

View details
83
Repo Health
78
Technical
67
Dependency
Built with
Go 86%
Updated 2 weeks ago
Go
59%
AGPL 3.0

Unkey

Developer Tools

5,475

An open-source developer platform for API infrastructure — issue and verify API keys, enforce global rate limits, route traffic through a gateway, and get per-key analytics and audit logs.

View details
91
Repo Health
70
Technical
68
Dependency
Built with
Go 59%
TypeScript 40%
Updated 5 days ago
Go
66%
AGPL 3.0

Vikunja

Project Management

5,833

Self-hosted task management with natural-language quick-add, multiple views, and a fully documented REST API — your tasks, your infrastructure, zero lock-in.

View details
86
Repo Health
81
Technical
65
Dependency
Built with
Go 66%
TypeScript 24%
Updated 5 days ago
Go
97%
BSD 3

Weaviate

Databases · Search

16,908

Open-source vector database combining semantic search, hybrid queries, RAG, and image search in a single cloud-native system built for production scale.

View details
91
Repo Health
85
Technical
68
Dependency
Built with
Go 97%
Updated 6 days ago
Go
74%
AGPL 3.0

ZITADEL

Authentication

15,418

Open-source, API-first identity platform delivering multi-tenancy, Passkeys, OIDC, SAML, and SCIM without vendor lock-in.

View details
92
Repo Health
81
Technical
65
Dependency
Built with
Go 74%
TypeScript 12%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers