spf13/viper

Go configuration with fangs

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 27 minutes ago
Added to GitGenius on September 1st, 2026
Created on April 2nd, 2014
Open Issues & Pull Requests: 133 (+0)
GitHub issues: Enabled
Number of forks: 2,292
Total Stargazers: 30,453 (+0)
Total Subscribers: 279 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 26.1 days
Mean response time: 221.1 days
90th percentile: 684.4 days
Tracked items: 316

How this project is maintained

Around half of the issues opened in the past year never receive a reply. Only 1% of issues opened in the past year have been closed. Three people close 69% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 8
New in 7 days: 1
Closed in 7 days: 0
Avg open age: 1,012 days
Stale 30+ days: 5
Stale 90+ days: 5

Recent activity

Opened in 7 days: 1
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 1

Top labels

  • lifecycle/stale (412)
  • kind/bug (96)
  • kind/enhancement (96)
  • lifecycle/keep (7)
  • kind/support (4)
  • kind/question (2)
  • area/documentation (1)

Detailed Description

Viper is a configuration management library for Go applications that handles reading, writing, and watching configuration from multiple sources.

Viper solves the problem of managing application configuration across diverse sources and formats by providing a unified interface that merges settings with a clear precedence order. It reads from defaults, external key-value stores like Etcd or Consul, configuration files, environment variables, command-line flags, and explicit programmatic calls, with later sources overriding earlier ones. The tool supports multiple file formats including JSON, TOML, YAML, INI, envfile, and Java Properties, and can search across multiple paths for configuration files. A distinctive capability is live watching and reloading of configuration files without requiring application restart, along with support for callbacks that execute when changes occur.

Viper suits any Go application needing flexible configuration management, particularly those following twelve-factor application principles. It works well for projects that need to support multiple deployment environments or allow runtime configuration updates. The tool is particularly valuable when an application must read settings from heterogeneous sources—combining defaults, files, environment variables, and remote systems—and needs a single consistent API for accessing all configuration values. Its case-insensitive key handling and key aliasing support make refactoring configuration easier across large codebases.

The project maintains active engagement with its user base through solicitation of feedback for upcoming major versions. Development shows consistent attention to both core functionality and edge cases, as evidenced by incremental feature additions such as support for extension-less configuration files and safe write methods that prevent accidental file overwrites. The codebase demonstrates stability through long-term adoption by established projects across diverse domains including infrastructure tooling, container systems, and web services.