awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
lightbend avatar

lightbend/config

0
View on GitHub↗
6,309 stars·978 forks·Java·15 viewslightbend.github.io/config↗

Config

This is a configuration library for JVM applications that parses HOCON, JSON, and Java properties files into an immutable tree structure. It resolves ${...} placeholders by traversing the configuration tree and falling back to environment variables and system properties, and validates loaded configurations against a reference schema.

The library loads configuration from classpath resources, files, URLs, system properties, and environment variables, merging them with priority-based override semantics. It provides typed value access with automatic type coercion, supports dot-path navigation, and enables programmatic manipulation of configuration trees through operations like merging, filtering, and flattening. Configuration values can be rendered as strings in HOCON or JSON format, and the library can populate JavaBeans from configuration subtrees.

The library is packaged as an OSGi bundle for deployment in modular Java environments.

Features

  • JVM Configuration Frameworks - Loads, merges, and resolves configuration files in HOCON, JSON, and Java properties formats for JVM applications.
  • HOCON Parsers - Parses configuration files using the Human-Optimized Config Object Notation format with JSON and Java properties fallback.
  • JVM Configuration Frameworks - Provides the core JVM configuration framework that loads and merges settings from multiple sources with priority-based overrides.
  • Configuration Trees - Represents parsed configuration as an immutable tree that produces new instances on modification.
  • Reference and Application Configs - Loads application configuration files from the classpath as the default application configuration.
  • Classpath Reference Config Mergers - Automatically merges all reference configuration resources found on the classpath to provide default configuration values.
  • Path-Based Value Retrieval - Fetches configuration values using dot-separated path expressions from the tree.
  • Recursive Object Key Mergers - Recursively merges duplicate object-valued keys with later values overriding earlier ones.
  • Path-Based Data Access - Navigates and extracts values from nested configuration structures using dot-notation paths.
  • Automatic Type Converters - Automatically converts between string, number, boolean, and null types when accessing values.
  • Configuration Value Type Converters - Returns configuration values in requested types with automatic coercion from string representations.
  • Configuration Value Wrappers - Wraps a configuration value into a configuration object at a specified key or path for structured access.
  • Configuration Value Mergers - Combines overlapping configuration values based on their data types with precedence rules.
  • Environment Variable Config Overrides - Substitutes unresolved configuration references with environment variable values, optionally forcing overrides via a special prefix.
  • Environment Variable Configuration - Resolves unresolved configuration substitutions by looking up matching environment variable values.
  • Configuration File Loading - Loads configuration from files, URLs, classpath resources, and system properties, stacking them by priority.
  • Configuration Merging - Combines settings from files, classpath resources, URLs, and system properties with fallback and override semantics.
  • Multi-Source Configuration Loaders - Loads configuration from files, URLs, classpath resources, and system properties with priority-based overrides.
  • Parsing Configuration Files - Parses HOCON, JSON, and Java properties files into a merged, immutable configuration tree.
  • Multi-Format Config Parsers - Loads configuration from files, URLs, classpath resources, and system properties, merging them into a single immutable tree.
  • Multi-Source Configuration Loaders - Loads configuration from files, classpath resources, URLs, and strings with include directives and recursive class loader inheritance.
  • Object Merging - Combines configuration objects with precedence rules for layered settings.
  • Java - Overrides any configuration value by setting Java system properties or environment variables with array index support.
  • Environment Variable Substitution - Falls back to environment variables when a substitution is not found in the configuration tree.
  • Configuration Variable Substitutions - Replaces placeholder references with values from the config tree, environment variables, or system properties.
  • Configuration Tree Substitutions - Resolves ${...} placeholders by traversing the configuration tree and falling back to environment variables and system properties.
  • Placeholder Resolutions - Resolves ${...} placeholders in configuration files using values from the same config, environment variables, or system properties.
  • Dot-Notation Value Retrievers - Retrieves values from nested configuration objects using dot-separated key paths.
  • Configuration Fallbacks - Provides fallback defaults for missing configuration fields through layered merging.
  • Value Type Conversions - Transforms configuration values between types during retrieval with automatic coercion.
  • Typed Configuration Value Retrievers - Retrieves configuration values as booleans, integers, durations, sizes, or strings with automatic type conversion.
  • Path Reference Resolvers - Replaces path references in a config tree with their actual values, producing a fully resolved immutable configuration.
  • Cross-Reference Substitutions - Uses substitution syntax to refer to another part of the configuration tree and resolve its value.
  • Configuration Source Priority - Combines configurations from multiple sources with later sources overriding earlier ones in a defined priority order.
  • Priority-Based Configuration Merging - Applies configuration layers based on a predefined priority order for merging.
  • Dot-Notation Key Expanders - Expands dot-separated keys into nested objects during configuration parsing.
  • Recursive Configuration Merging - Deeply merges multiple configuration objects into a final resolved settings tree.
  • JavaBean Initializers - Populates Java object fields automatically from a matching configuration subtree.
  • Configuration Array Appenders - Adds an element to an existing array using the += separator, creating the array if it does not exist.
  • Self-Referential Array Appenders - Allows a configuration value to reference its own previous definition, enabling incremental value construction.
  • Self-Referential Array Appends - Appends elements to arrays using the += operator by creating self-referential substitutions that expand at resolution time.
  • Duration Parsers - Converts string input into time duration types for time-based configuration values.
  • Period String Parsers - Parses date-based period strings from configuration into time period values.
  • Include Directives - Imports another configuration file into the current file using an include statement, merging its keys into the current object.
  • Reference Schema Validators - Checks that a configuration contains all keys present in a reference config, throwing an exception for mismatches.
  • Include Directives - Loads configuration from URLs, files, or classpath resources using include directives, with optional failure on missing includes.
  • Custom Parse Options - Parses configuration using user-specified parse and resolution options, such as class loader or allow-unresolved settings.
  • Partial Resolvers - Resolves only a subset of substitutions in a configuration, leaving others unresolved for later processing.
  • Memory Size String Parsers - Parses memory size strings from configuration into byte counts with unit support.
  • Custom Source Substitutions - Sources variable substitutions from a user-provided configuration instead of the default self-referencing resolution.
  • Custom Resolver Appenders - Appends custom resolvers to handle unresolved substitutions during configuration resolution.
  • Path-Based Value Inserters - Inserts or overwrites a value at a specified path or key within an existing configuration.
  • Dot-Key Tree Builders - Splits Java properties keys on dots to build a nested configuration object tree from flat property files.
  • Configuration - Configuration library supporting HOCON, JSON, and properties.

Star history

Star history chart for lightbend/configStar history chart for lightbend/config

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Projects sharing features with Config

These projects share indexed features with Config. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • dynaconf/dynaconfdynaconf avatar

    dynaconf/dynaconf

    4,308View on GitHub↗

    Dynaconf is a configuration management library for Python applications that provides a unified system for loading, validating, and managing settings. It aggregates configuration data from multiple files, environment variables, and external stores into a single object using a defined precedence order. The project distinguishes itself through a layered environment manager that separates settings into distinct profiles, such as development and production. It includes a declarative validation framework to enforce data rules and type constraints during the loading process, as well as an external s

    Python
    View on GitHub↗4,308
  • node-config/node-confignode-config avatar

    node-config/node-config

    6,427View on GitHub↗

    This is a configuration manager for Node.js applications that handles hierarchical settings across different deployment environments. It functions as an environment-based loader and settings parser that merges default configurations with overrides based on the current runtime context and hostname. The project distinguishes itself through a priority-based merge strategy that incorporates environment variables, command-line arguments, and external data sources to supersede file-based settings. It supports multi-format parsing for JSON, YAML, JavaScript, and TypeScript files, and allows for cust

    JavaScriptconfigdeploymentproperties
    View on GitHub↗6,427
  • symfony/configsymfony avatar

    symfony/config

    4,280View on GitHub↗

    This project is a PHP configuration management library used to define, load, and validate application settings. It functions as a configuration merging engine and a schema validator, ensuring that software behaves consistently across different installations. The library acts as a multi-format configuration loader that converts settings from various file types, such as YAML and XML, into a standardized internal format. It allows for the establishment of formal configuration schemas with validation rules and default values to prevent runtime errors caused by invalid inputs. The system supports

    PHPcomponentphpsymfony
    View on GitHub↗4,280
  • cosmiconfig/cosmiconfigcosmiconfig avatar

    cosmiconfig/cosmiconfig

    4,154View on GitHub↗

    Cosmiconfig is a Node.js configuration loader used to find and load application settings from package manifests, rc files, and TypeScript modules. It functions as a directory-tree search tool and multi-format config parser that converts settings into JavaScript objects. The system distinguishes itself through a configuration transformation engine that supports merging base configurations and applying custom functions to parsed results. It employs a memoized transformation cache to store these results in memory, reducing filesystem overhead and avoiding repeated expensive computations. The li

    TypeScript
    View on GitHub↗4,154
Compare all 30 related projects→

Frequently asked questions

What does lightbend/config do?

This is a configuration library for JVM applications that parses HOCON, JSON, and Java properties files into an immutable tree structure. It resolves ${...} placeholders by traversing the configuration tree and falling back to environment variables and system properties, and validates loaded configurations against a reference schema.

What are the main features of lightbend/config?

The main features of lightbend/config are: JVM Configuration Frameworks, HOCON Parsers, Configuration Trees, Reference and Application Configs, Classpath Reference Config Mergers, Path-Based Value Retrieval, Recursive Object Key Mergers, Path-Based Data Access.

Which projects share features with lightbend/config?

Projects with overlapping indexed features include: dynaconf/dynaconf — Dynaconf is a configuration management library for Python applications that provides a unified system for loading,… node-config/node-config — This is a configuration manager for Node.js applications that handles hierarchical settings across different… symfony/config — This project is a PHP configuration management library used to define, load, and validate application settings. It… cosmiconfig/cosmiconfig — Cosmiconfig is a Node.js configuration loader used to find and load application settings from package manifests, rc… netflix/falcor — Falcor is a JavaScript library that models remote data as a single virtual JSON graph, providing a path-based query… dhall-lang/dhall-lang — Dhall is a type-safe configuration language designed to create programmable configuration files that are guaranteed to…