Config loading
These static settings tell DIAL Core where its config files are, how often to re-read them, how to merge several files, and what to do with an entity that fails validation. They apply to the dynamic configuration from files and from the platform bucket. This page is for platform engineers who manage Core's configuration; it assumes you know how DIAL Core is configured.
Settings
| Setting | Default | Description |
|---|---|---|
config.files | [] | The JSON config files to load, in order. Core deep-merges them; a later file overrides keys from an earlier one. A path not found on disk is read from the classpath. |
config.reload | 60000 | How often Core re-reads the config files and rebuilds the merged configuration, in milliseconds. |
config.jsonMergeStrategy.overwriteArrays | false | How arrays merge across files. false concatenates them; true lets a later file's array replace an earlier one. |
config.onInvalidEntity | abort | What a semantic violation does to a rebuild, such as a duplicate deployment ID. abort fails the rebuild and keeps the previous configuration; at startup, Core does not start. skip drops the offending entity alone and records it as invalid. |
config.write.softValidation | false | When true, a model written through the Configuration API whose only problem is a reference to a missing interceptor is accepted. Other rule violations are still rejected. |
How the settings work together
- A broken file on reload. If a periodic re-read fails to open, parse, or validate a file, Core keeps the last good configuration and logs a warning, whatever
config.onInvalidEntitysays. - A broken blob. A blob in the
platformbucket that cannot be parsed or decrypted is always skipped and recorded. - A missing interceptor. A model that references an interceptor that does not exist is checked on every Configuration API write. On a rebuild, it is checked only under
skip, which drops the model. Underabort, the model stays a deployment, and requests to it answer404Interceptor is not found. - Keys with slashes. Under
models,interceptors,roles,keys, androutes, a file key shaped like a canonical ID (models/platform/gpt) fails the file load. Any other file key containing/in an entity map is dropped with a warning.
Recorded invalid entities are listed by GET /v1/admin/health/config; see Configuration API.
Example
{
"config": {
"files": ["/opt/config/models.json", "/opt/config/access.json"],
"reload": 60000,
"jsonMergeStrategy": { "overwriteArrays": false },
"onInvalidEntity": "skip",
"write": { "softValidation": false }
}
}
As an environment variable, pass the array as a JSON string: aidial.config.files: '["/opt/config/config.json"]'.
Further reading
- Configuration API — write entities while Core runs
- Toolsets security — OAuth and encryption for MCP toolsets
- DIAL Admin chart configuration — chart settings for Admin, its backend, and Deployment Manager