Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. harvester

harvester

Apache-2.0Gov0.20.0

A Go library for dynamic configuration management with support for seeding from multiple sources and live monitoring via Consul/Redis.

GitHubGitHub
135 stars27 forks0 contributors

What is harvester?

Harvester is a Go library for dynamic configuration management that allows applications to load and monitor configuration values from multiple sources like environment variables, Consul, Redis, and CLI flags. It solves the problem of static configuration by enabling live updates without application restarts.

Target Audience

Go developers building microservices or distributed systems that require flexible, runtime-configurable settings and integration with external configuration stores like Consul or Redis.

Value Proposition

Developers choose Harvester for its seamless multi-source support, thread-safe concurrent access, and real-time monitoring capabilities, which simplify configuration management and enhance application adaptability in dynamic environments.

Overview

Harvest configuration, watch and notify subscriber

Use Cases

Best For

  • Microservices needing centralized configuration via Consul
  • Applications requiring runtime configuration updates without downtime
  • Projects that must securely manage secrets and sensitive environment variables
  • Systems integrating multiple configuration sources (env, flags, files, Redis)
  • Go services where thread-safe configuration access is critical
  • Dynamic environments where configuration changes frequently

Not Ideal For

  • Projects relying solely on YAML or JSON configuration files without Consul/Redis integration
  • Teams prioritizing minimal dependencies and avoiding external services for configuration
  • Applications requiring built-in schema validation or complex configuration transformations

Pros & Cons

Pros

Multi-Source Flexibility

Supports configuration seeding from hard-coded values, environment variables, CLI flags, local files, Consul, and Redis, with a clear priority order as shown in the README's struct example.

Dynamic Runtime Updates

Monitors Consul and Redis for changes and applies updates in real-time without application restart, enabling live reconfiguration for microservices.

Thread-Safe Access

Provides concurrent-safe types like sync.String and sync.Int64, ensuring safe manipulation in multi-threaded Go environments, as detailed in the supported types section.

Secure Secret Handling

Includes a Secret type that automatically masks values (showing '***') in logs, protecting sensitive data like passwords and tokens from exposure.

Cons

Limited File Format Support

Only supports plain text files for configuration, not structured formats like YAML or JSON, which are commonly used in modern applications, limiting flexibility.

External Service Dependency

Full dynamic monitoring requires Consul or Redis, adding infrastructure complexity and potential vendor lock-in for teams not already using these services.

Complex Setup Process

The builder pattern and need to configure seeders and monitors for each source can lead to verbose and error-prone initialization code, as illustrated in the setup snippet.

Frequently Asked Questions

Quick Stats

Stars135
Forks27
Contributors0
Open Issues10
Last commit23 days ago
CreatedSince 2019

Tags

#dynamic-configuration#consul-integration#concurrent-access#environment-variables#go-library#secret-management#golang#cli-flags#configuration-management#go

Built With

G
Go

Included in

Go169.1k
Auto-fetched 19 hours ago

Related Projects

viperviper

Go configuration with fangs

Stars30,373
Forks2,173
Last commit6 months ago
godotenvgodotenv

A Go port of Ruby's dotenv library (Loads environment variables from .env files)

Stars10,548
Forks456
Last commit8 days ago
sonicsonic

A blazingly fast JSON serializing & deserializing library

Stars9,554
Forks464
Last commit1 month ago
envenv

A simple, zero-dependencies library to parse environment variables into structs

Stars6,271
Forks281
Last commit17 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub