#What it is
A configuration library for Go that sits between the ones that do too little and the ones that do too much. No global state and no surprises at import time, just a struct you own.
#What it does
- Multiple sources: files, environment variables, Consul, Kubernetes ConfigMaps, composed in priority order.
- Typed getters with defaults: GetInt, GetBool, GetDuration, so a missing key is a default rather than a zero value you have to notice.
- Struct binding with a default tag for keys absent from the config.
- Hot reload through file watching.
- Auto-discovery: searches the current directory and its parents for config.yaml and config.local.yaml.
#The monorepo detail
Auto-discovery sounds like a convenience until you have a monorepo where every service lives three directories deep and go run ./cmd/whatever resolves relative paths from wherever you happened to be standing. Walking up the tree removes an entire genre of "works on my machine".