# Home

## Vostok.Configuration in a nutshell

Vostok.Configuration is a [set](https://vostok.gitbook.io/configuration/modules) of libraries offering configuration tools to .NET applications. It handles fetching configuration data from files or APIs, parsing and converting it to user-defined model classes.

## Guiding design principles

* **Configuration data sources should be composable regardless of storage formats**.

  * It should be easy to combine settings from JSON files, environment variables and custom APIs. This is achieved with [configuration source](https://vostok.gitbook.io/configuration/concepts-and-basics/configuration-sources) concept and universal [settings nodes](https://vostok.gitbook.io/configuration/concepts-and-basics/settings-nodes) abstraction.&#x20;

* **"Hot" configuration updates should be easy to leverage**.&#x20;

  * Hot configuration implies handling changes in settings without application restart. This is enabled by explicitly reactive [source](https://vostok.gitbook.io/configuration/concepts-and-basics/configuration-sources) design and [settings provider methods](https://vostok.gitbook.io/configuration/concepts-and-basics/configuration-provider).

* **Rich object models should be supported for user convenience**.

  * [Binding](https://vostok.gitbook.io/configuration/concepts-and-basics/binding-nodes-to-models) process supports a wide range of [primitives](https://vostok.gitbook.io/configuration/binding/primitives), [collections](https://vostok.gitbook.io/configuration/binding/collections), [classes](https://vostok.gitbook.io/configuration/binding/classes-and-structs), [interfaces](https://vostok.gitbook.io/configuration/advanced-scenarios/use-dynamic-interfaces) and employs a number of conventions for arbitrary types (anything with a `TryParse` method works).

* **It should be possible to extend the library with arbitrary data sources and object models**.

  * Two major extensions points are [custom configuration sources](https://vostok.gitbook.io/configuration/advanced-scenarios/create-custom-sources) and [binders](https://vostok.gitbook.io/configuration/advanced-scenarios/apply-custom-binders).

## Features

* [On-demand](https://vostok.gitbook.io/configuration/basic-scenarios/obtain-settings-from-provider) and [subscription-based](https://vostok.gitbook.io/configuration/basic-scenarios/observe-settings-via-provider) methods to obtain settings;

* Support for [required](https://vostok.gitbook.io/configuration/basic-scenarios/make-settings-required) and [secret](https://vostok.gitbook.io/configuration/basic-scenarios/make-settings-secret) settings;

* Support for custom settings [validation](https://vostok.gitbook.io/configuration/advanced-scenarios/apply-custom-validators);

* Wide selection of [built-in sources](https://vostok.gitbook.io/configuration/sources);

* Composable [binders](https://vostok.gitbook.io/configuration/concepts-and-basics/binding-nodes-to-models);

* Sources can be [combined](https://vostok.gitbook.io/configuration/basic-scenarios/combine-sources), [navigated](https://vostok.gitbook.io/configuration/basic-scenarios/scope-sources) and [transformed](https://vostok.gitbook.io/configuration/advanced-scenarios/transform-sources);

* [Integration](https://vostok.gitbook.io/configuration/broken-reference) with Microsoft configuration system;

## Guarantees

See [obtain](https://vostok.gitbook.io/configuration/basic-scenarios/obtain-settings-from-provider) / [observe](https://vostok.gitbook.io/configuration/basic-scenarios/observe-settings-via-provider) settings scenarios, [caching](https://vostok.gitbook.io/configuration/concepts-and-basics/caching-and-performance) and [error handling](https://vostok.gitbook.io/configuration/concepts-and-basics/error-handling) sections for details.

## Good starting points

{% content-ref url="quickstart" %}
[quickstart](https://vostok.gitbook.io/configuration/quickstart)
{% endcontent-ref %}

{% content-ref url="concepts-and-basics" %}
[concepts-and-basics](https://vostok.gitbook.io/configuration/concepts-and-basics)
{% endcontent-ref %}

{% content-ref url="basic-scenarios" %}
[basic-scenarios](https://vostok.gitbook.io/configuration/basic-scenarios)
{% endcontent-ref %}

{% content-ref url="modules" %}
[modules](https://vostok.gitbook.io/configuration/modules)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vostok.gitbook.io/configuration/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
