> For the complete documentation index, see [llms.txt](https://vostok.gitbook.io/configuration/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vostok.gitbook.io/configuration/advanced-scenarios/create-custom-sources.md).

# Create custom sources

**Requires**: [sources module](/configuration/modules/sources.md).

[Sources module](/configuration/modules/sources.md) offers a couple of base classes to assist in implementing custom [configuration sources](/configuration/concepts-and-basics/configuration-sources.md).

### [**ManualFeedSource**](https://github.com/vostok/configuration.sources/blob/master/Vostok.Configuration.Sources/Manual/ManualFeedSourceOfT.cs)

*For in-memory sources or sources that can update an in-memory one from a remote API*.

```
class MySource : ManualFeedSource<string>
{
    public MySource()
        : base(Parse) { }

    private static ISettingsNode Parse(string input) { ... }
}

var source = new MySource();

source.Push("input1");
source.Push("input2");

// Push method can be used by an internal periodical/event-based update routine.
```

### [FileSource](https://github.com/vostok/configuration.sources/blob/master/Vostok.Configuration.Sources/File/FileSource.cs)

*For sources based on local files. Includes automatic reload on file updates.*

```
class MyFileSource : FileSource
{
    public MyFileSource(string filePath)
        : base(new FileSourceSettings(filePath), Parse) { }
        
    private static ISettingsNode Parse(string input) { ... }
}
```

### Related pages

{% content-ref url="/pages/-M6UQMklC2EtQ\_nAUDjI" %}
[Configuration sources](/configuration/concepts-and-basics/configuration-sources.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M6UTr0xlcYKqw1Cw3P-" %}
[Constant sources](/configuration/sources/constant-source.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M6UVj1U2Fsz9Tw8WSTE" %}
[Combine sources](/configuration/basic-scenarios/combine-sources.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M6UVluEtzPV2Wnw3ecH" %}
[Scope sources](/configuration/basic-scenarios/scope-sources.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M6UWSpceWH4dlGESpjn" %}
[Nest sources](/configuration/advanced-scenarios/nest-sources.md)
{% endcontent-ref %}

{% content-ref url="/pages/-M6UWUC--ToHorbo25E-" %}
[Freeze sources](/configuration/advanced-scenarios/freeze-sources.md)
{% endcontent-ref %}
