Confix 2.3.3

dotnet tool install --global Confix --version 2.3.3
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Confix --version 2.3.3
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Confix&version=2.3.3
                    
nuke :add-package Confix --version 2.3.3
                    

Logo

Confix

Your Companion for Seamless Application Configuration

License: MIT

Introduction

In the modern development sphere, managing application configuration across various stages from local development to production deployment has become a daunting task. That's where Confix steps in to simplify and streamline the process for you. With Confix, say goodbye to the configuration complexities and hello to a more straightforward, secure, and efficient application setup and deployment.

What if you could just use a simple JSON file to manage your application configuration?

<p align="center"> <img src="images/intro-0.png"> <p>

Confix provides a simplistic yet powerful toolset for managing your application configurations effortlessly. With just the Confix CLI and VSCode, you can seamlessly transition from local development to production deployment, ensuring consistency and reducing configuration errors.


Why Choose Confix?

  1. Simplicity at its Core: Running applications locally is a breeze, but deployment often brings configuration challenges. Confix eradicates these hurdles by allowing you to store configurations in a JSON file in your Git repository. Your IDE, empowered by JSON Schemas, assists in writing accurate configurations with code completion and validation.

  2. Compose with Ease: Reusing shared code across multiple locations or services in enterprise settings is now simplified. Confix enables reusability and easy composition of configuration components, saving you time and ensuring consistency across your projects.

  3. Flexibility for Every Project: Every configuration file in Confix is a JSON file - easy to create and consume. Regardless of your environment, if your application can load JSON files, it can utilize Confix, making your configuration management unified and straightforward.

  4. Secure Your Secrets: While Confix effortlessly manages your application configuration, it also provides a mechanism for representing secrets within your configuration using variables. The actual secret storage is your choice, whether in Azure Key Vault, HashiCorp Vault, or as environment variables, ensuring your application's security is never compromised.

To get started with confix follow the getting started guide

Documentation

Further documentation can be accessed on our documentation page.

Code-first .NET configuration

Opt into project.validation in .confixrc to validate appsettings using ConfixSection, AddConfixOptions, and data annotations. confix build also initializes the keys your application cannot supply itself, so a missing setting appears as an empty slot to fill. See the guide and the example. Existing GraphQL/dotnet inputs remain supported.

Roadmap: .NET 11 alignment

Code-first validation is meant to extend the .NET options pattern, not to reimplement it. Recursion already relies on the platform's own [ValidateObjectMembers] and [ValidateEnumeratedItems]. Confix targets net10.0 today; the items below are tracked for the move to net11.0.

Item Why it matters
Honour [ConfigurationIgnore] Correctness gap. Every public property is currently treated as a bindable key, so a property the binder ignores is reported as valid configuration. Affects key checking and schema export.
Move to IAsyncStartupValidator IStartupValidator is obsolete in .NET 11.
Support asynchronous validation AsyncValidationAttribute, IAsyncValidatableObject, and IAsyncValidateOptions allow rules that perform I/O. Validation is synchronous today, so such rules cannot run.
Execute source-generated validators An [OptionsValidator] partial class produces a reflection-free IValidateOptions<T>. Running the generated validator instead of reflecting over data annotations makes confix validate and application startup agree by construction, and is AOT friendly.
Reconcile with BinderOptions.ErrorOnUnknownConfiguration The binder can already reject unknown keys per bound type. Confix aggregates every error with its full path and is on by default, but the overlap should be an explicit decision rather than an accident.
Adopt OptionsBuilder<T>.Validate<TValidator>() New overload that resolves the validator from DI instead of taking a delegate.

These remain Confix's own concern, because the platform has no equivalent:

  • Coverage — every configured section must belong to an active contract, so orphaned and misspelled sections are reported. The binder only ever sees the sections it is asked to bind.
  • Validating without starting the application — contracts execute in a separate process using the application's own runtime and dependencies, before deployment.
  • Schema export for editor completion over the composed configuration.

Contributing

We welcome contributions from the community. Please open an issue or discussion with you idea/feature request and we will be happy to help you get started.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

Thanks to all our contributors.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
2.3.3 0 9/18/2026
2.3.2 0 9/18/2026
2.3.1 0 9/18/2026
2.3.0 158 9/18/2026
2.2.0 761 9/16/2026
2.1.1 91 9/16/2026
2.1.0 94 9/16/2026
2.1.0-preview.11 38 9/16/2026
2.1.0-preview.9 38 9/16/2026
2.1.0-preview.5 40 9/15/2026
2.1.0-preview.4 41 9/15/2026
2.1.0-preview.3 54 9/11/2026
2.1.0-preview.2 53 9/11/2026
2.1.0-preview.1 48 9/11/2026
2.0.0 1,039 9/11/2026
2.0.0-preview.1 65 9/9/2026
1.10.0 15,242 8/11/2026
1.10.0-preview.1 69 8/11/2026
1.9.0 4,995 7/29/2026
1.8.0 19,420 4/30/2026
Loading failed