LISTEN/NOTIFY, usually within about a second, with no restart. A section with no stored value reads as its defaults.
Bootstrap configuration that needs a restart (ports, DSNs, the master key) is in Configuration instead.
Reading and writing
PUT replaces the whole value, and the body must carry every field the section’s schema marks required: PUT /api/settings/parsing with {} is refused with 422. Read the section first and send its value back with your change.
Who may change a section. Writing needs the update verb on settings. Under RELAY_AUTHZ=single every signed-in user holds it; under rbac only the built-in admin role (or a custom role that grants it) does. Sections marked admin only below additionally require an admin (a user with the admin role, or the admin token) under either mode, because they resolve secrets, delete history, or let an identity provider create accounts. Every write is recorded in the audit log.
A stored section that a later release can no longer accept (for example one naming a secret variable outside its prefix) reads as its defaults, with a warning in the log, rather than stopping relay from starting.
Seeding settings from files
At boot, relay readskind: Setting files from RELAY_SETTINGS_DIR (default <RELAY_CONFIG_DIR>/settings, read recursively) and writes each section that has no stored value yet. A section already in the database is left alone, so a file sets the starting value and the control API stays authoritative afterwards. A file naming an unknown section, failing validation, or holding another kind stops relay at boot.
settings/proxy-mode.yaml
false, 0, empty), not its default. A file may hold several ----separated documents. The Helm chart seeds payload-logging and usage-logging this way from its values (Kubernetes). relay apply and the catalog seed do not write settings.
Sections
inference
parsing
proxy-mode
See Proxy mode.
usage-logging
Admin only.
The ClickHouse and Postgres connections come from
RELAY_CH_DSN and RELAY_PG_DSN. See Usage.
payload-logging
Admin only.
See Payload logging.
otlp-receiver
See OTLP receiver.
audit
Admin only.
See Audit log.
auth:oidc
Admin only. Ignored whileWYOLET_AUTH_MODE=oidc configures sign-in from the environment.
See SSO.
auth:scim
Admin only.
See SCIM provisioning.
auth:tokens
Only rotation changes the signing-key references. A
PUT that leaves them out keeps the installed ones, and a PUT naming another secret is refused with 400. TTL changes apply to tokens minted afterwards; tokens already minted keep their exp.
catalog-source
Relay writes this section itself. See Pinning a catalog version.
license
Holds a license installed at runtime. Write it withPUT /api/license, which verifies the license first, not through /api/settings. RELAY_LICENSE_FILE and RELAY_LICENSE win over it. See License.
governance
The four sectionsgovernance:provider, governance:host, governance:model and governance:policy share one shape:
They guard against accidental changes to rows the catalog owns; they are not access control. Every update and delete through the control API, the admin UI and
relay apply is judged by the row’s owner:
- System-owned rows (for example catalog providers and hosts) can be edited or deleted by an admin only, whatever the governance sections say. Teams, groups and roles are system-owned but follow the tenant rule below.
- Tenant-owned rows (owned by a user, team or project) are always allowed; access control decides who may touch them.
- Catalog-managed rows (owned by a provider or a host, such as catalog models and host tier policies) consult the governance section of their kind. A kind with no section, such as host-owned pricing, uses the defaults: edit allowed, delete refused. Admins are bound by these sections too.
- A row the catalog no longer ships (detached) counts as tenant-owned.
403 with a message naming the section to change. A delete is also refused while other rows reference the row.