{"adoption": {"forks": 2284, "observed_at": "2026-08-28T04:11:54.470452+00:00", "stars": 30447}, "canonical_url": "https://ross.abutalabs.com/products/viper", "card": {"archived": false, "artifact_type": "library", "description": "Go configuration with fangs", "domain": ["developer-tools", "backend", "apis"], "enriched": true, "function": ["configuration-management", "developer-tools"], "health_score": 72, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["spf13/viper"], "name": "spf13/viper", "platform": ["go", "cross-platform"], "pushed_at": "2026-01-12T21:42:47+00:00", "repo": "spf13/viper", "stars": 30447, "tags": ["config-files", "environment-variables", "12-factor-apps", "live-reload", "yaml", "json", "toml", "consul", "etcd"], "topics": [], "urls": [], "use_cases": ["manage configuration for a go application", "read config from yaml json and toml files", "load settings from environment variables", "watch config files for live changes", "merge configuration from multiple sources", "read remote config from consul or etcd", "build 12-factor apps in go"], "what_it_is": "Viper is a comprehensive configuration library for Go applications that reads from files, environment variables, command-line flags, and remote key-value stores like Etcd and Consul. It supports defaults, key aliasing, and live watching of configuration changes, serving as a central registry for all app configuration needs.", "when_to_avoid": ["you need only simple single-file config parsing and want a minimal dependency", "you are not writing Go", "you need strongly typed config validation beyond what Viper offers"], "when_to_choose": ["you need a unified configuration solution across files, env vars, flags, and remote stores in Go", "you want live config reloading without restarting your app", "you need support for many config file formats out of the box"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/viper", "repo": "spf13/viper", "role": "main", "score": 60}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:52:45.965581+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5493a9108adbc22d2f1ec7af7bb829d9bc5e6bc7987490ad5c180093dbeb622c", "fetched_at": "2026-08-28T04:11:54.470452+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spf13/viper"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:52:45.965581+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5493a9108adbc22d2f1ec7af7bb829d9bc5e6bc7987490ad5c180093dbeb622c", "fetched_at": "2026-08-28T04:11:54.470452+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spf13/viper"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:52:45.965581+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5493a9108adbc22d2f1ec7af7bb829d9bc5e6bc7987490ad5c180093dbeb622c", "fetched_at": "2026-08-28T04:11:54.470452+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spf13/viper"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:52:45.965581+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5493a9108adbc22d2f1ec7af7bb829d9bc5e6bc7987490ad5c180093dbeb622c", "fetched_at": "2026-08-28T04:11:54.470452+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spf13/viper"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:52:45.965581+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5493a9108adbc22d2f1ec7af7bb829d9bc5e6bc7987490ad5c180093dbeb622c", "fetched_at": "2026-08-28T04:11:54.470452+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spf13/viper"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:52:45.965581+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5493a9108adbc22d2f1ec7af7bb829d9bc5e6bc7987490ad5c180093dbeb622c", "fetched_at": "2026-08-28T04:11:54.470452+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spf13/viper"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:54.470452+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:52:45.965581+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5493a9108adbc22d2f1ec7af7bb829d9bc5e6bc7987490ad5c180093dbeb622c", "fetched_at": "2026-08-28T04:11:54.470452+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spf13/viper"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:52:45.965581+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5493a9108adbc22d2f1ec7af7bb829d9bc5e6bc7987490ad5c180093dbeb622c", "fetched_at": "2026-08-28T04:11:54.470452+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spf13/viper"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:52:45.965581+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5493a9108adbc22d2f1ec7af7bb829d9bc5e6bc7987490ad5c180093dbeb622c", "fetched_at": "2026-08-28T04:11:54.470452+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spf13/viper"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:52:45.965581+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5493a9108adbc22d2f1ec7af7bb829d9bc5e6bc7987490ad5c180093dbeb622c", "fetched_at": "2026-08-28T04:11:54.470452+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spf13/viper"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 62, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4536, "days_push": 233, "days_rel": 359, "gap_med": 88.0, "n_releases_24m": 3}, "score": 60, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}