Skip to content

Configuration Reference

Oriel loads oriel.toml by default and then applies environment overrides.

TOML keyDefault
server.http_addr:6743
server.public_urlempty
server.insecurefalse
server.tls.cert_fileempty
server.tls.key_fileempty
ingest.grpc_addr:4317
ingest.http_addr:4318
ingest.http_on_serverfalse
flags.stale_after720h
flags.unused_window336h
flags.unused_threshold0
flags.unused_detectiontrue
flags.scan_interval15m
alert.allow_private_targetsfalse
clickhouse.dsnclickhouse://localhost:9000/oriel
metadata.dsnempty, required for serving and metadata commands
valkey.dsnvalkey://localhost:6379/0
valkey.key_prefixoriel
valkey.operation_timeout500ms
valkey.ruleset_ttl10m
valkey.session_cache_ttl30s
valkey.token_cache_ttl30s
auth.cookie_secretempty; required when any OIDC provider is enabled
admin.allow_signupfalse
admin.email_domain_allowlistempty
admin.workspace_create_policyinstance_admins
admin.oidc_jit_provisioningtrue
admin.invite_ttl_hours168
admin.smtp.hostempty, disables invite email delivery
admin.smtp.port0; invite mailer uses 587 when unset
admin.smtp.usernameempty
admin.smtp.passwordempty
admin.smtp.fromempty
admin.smtp.starttlsunset
self_observability.enabledtrue
self_observability.interval30s
self_observability.sample_ratio1.0
log.levelinfo
log.formatauto
Environment variableTOML key
ORIEL_SERVER_HTTP_ADDRserver.http_addr
ORIEL_SERVER_PUBLIC_URLserver.public_url
ORIEL_SERVER_INSECUREserver.insecure
ORIEL_SERVER_TLS_CERT_FILEserver.tls.cert_file
ORIEL_SERVER_TLS_KEY_FILEserver.tls.key_file
ORIEL_INGEST_GRPC_ADDRingest.grpc_addr
ORIEL_INGEST_HTTP_ADDRingest.http_addr
ORIEL_INGEST_HTTP_ON_SERVERingest.http_on_server
ORIEL_FLAGS_STALE_AFTERflags.stale_after
ORIEL_FLAGS_UNUSED_WINDOWflags.unused_window
ORIEL_FLAGS_UNUSED_THRESHOLDflags.unused_threshold
ORIEL_FLAGS_UNUSED_DETECTIONflags.unused_detection
ORIEL_FLAGS_SCAN_INTERVALflags.scan_interval
ORIEL_ALERT_ALLOW_PRIVATE_TARGETSalert.allow_private_targets
ORIEL_CLICKHOUSE_DSNclickhouse.dsn
ORIEL_METADATA_DSNmetadata.dsn
ORIEL_VALKEY_DSNvalkey.dsn
ORIEL_VALKEY_KEY_PREFIXvalkey.key_prefix
ORIEL_VALKEY_OPERATION_TIMEOUTvalkey.operation_timeout
ORIEL_VALKEY_RULESET_TTLvalkey.ruleset_ttl
ORIEL_VALKEY_SESSION_CACHE_TTLvalkey.session_cache_ttl
ORIEL_VALKEY_TOKEN_CACHE_TTLvalkey.token_cache_ttl
ORIEL_AUTH_COOKIE_SECRETauth.cookie_secret
ORIEL_ADMIN_ALLOW_SIGNUPadmin.allow_signup
ORIEL_ADMIN_WORKSPACE_CREATE_POLICYadmin.workspace_create_policy
ORIEL_ADMIN_OIDC_JIT_PROVISIONINGadmin.oidc_jit_provisioning
ORIEL_ADMIN_INVITE_TTL_HOURSadmin.invite_ttl_hours
ORIEL_ADMIN_SMTP_HOSTadmin.smtp.host
ORIEL_ADMIN_SMTP_PORTadmin.smtp.port
ORIEL_ADMIN_SMTP_USERNAMEadmin.smtp.username
ORIEL_ADMIN_SMTP_PASSWORDadmin.smtp.password
ORIEL_ADMIN_SMTP_FROMadmin.smtp.from
ORIEL_ADMIN_SMTP_STARTTLSadmin.smtp.starttls
ORIEL_SELF_OBSERVABILITY_ENABLEDself_observability.enabled
ORIEL_SELF_OBSERVABILITY_INTERVALself_observability.interval
ORIEL_SELF_OBSERVABILITY_SAMPLE_RATIOself_observability.sample_ratio
ORIEL_LOG_LEVELlog.level
ORIEL_LOG_FORMATlog.format

OIDC provider client secrets can be overridden with:

ORIEL_AUTH_OIDC_<SLUG>_CLIENT_SECRET

The slug is uppercased and hyphens become underscores.

[server]
http_addr = ":6743"
public_url = "https://oriel.example.com"
insecure = false
[server.tls]
cert_file = ""
key_file = ""

Native TLS is enabled only when both cert_file and key_file are set.

[ingest]
grpc_addr = ":4317"
http_addr = ":4318"
http_on_server = false

Both ingest listeners use the same TLS configuration as the server when native TLS is configured.

Set http_on_server = true to also mount OTLP/HTTP on the API/UI listener (server.http_addr) under /v1/traces, /v1/logs, and /v1/metrics. This only applies to oriel serve --role=all; the dedicated ingest.http_addr listener remains enabled by default.

[alert]
allow_private_targets = false

By default, alert delivery refuses webhook, ntfy, and SMTP targets that resolve to loopback, link-local, private, multicast, or unspecified addresses. Set allow_private_targets = true only for trusted deployments that intentionally deliver to internal endpoints.

[flags]
stale_after = "720h"
unused_window = "336h"
unused_threshold = 0
unused_detection = true
scan_interval = "15m"

The worker scans each project’s flags for staleness every scan_interval. A temporary flag idle longer than stale_after, a flag settled to one variation in every environment, an unmaintained flag, or a flag at or below unused_threshold evaluations over unused_window is flagged for cleanup. Detection is advisory and never archives or deletes a flag. The unused signal depends on evaluation telemetry; set unused_detection = false on deployments that do not emit it, such as query-only nodes or purely client-side SDKs, so live flags are not flagged for lack of data.

[clickhouse]
dsn = "clickhouse://oriel:oriel@localhost:9000/oriel"
[metadata]
dsn = "postgres://oriel:oriel@localhost:5432/oriel"
[valkey]
dsn = "valkey://localhost:6379/0"
key_prefix = "oriel"
operation_timeout = "500ms"
ruleset_ttl = "10m"
session_cache_ttl = "30s"
token_cache_ttl = "30s"

The metadata DSN is required. ClickHouse is required for ingest, query, worker, and most doctor checks. Valkey is required for serving and readiness; Oriel uses it for versioned feature-flag ruleset cache entries and SDK stream fanout while PostgreSQL remains authoritative.

[auth]
cookie_secret = "replace-with-a-stable-secret"
[auth.oidc.company]
name = "Company SSO"
icon = "generic"
issuer = "https://id.example.com"
client_id = "oriel"
client_secret = "change-me"
redirect_url = ""
scopes = ["openid", "profile", "email"]
groups_claim = "groups"

If redirect_url is empty, Oriel derives it from server.public_url. When any OIDC provider is enabled, auth.cookie_secret must be set to a stable shared value; otherwise oriel serve refuses to start. Local password sessions do not use this setting.

[admin]
allow_signup = false
email_domain_allowlist = []
workspace_create_policy = "instance_admins"
oidc_jit_provisioning = true
invite_ttl_hours = 168
[admin.smtp]
host = ""
port = 587
username = ""
password = ""
from = "oriel@example.com"
starttls = true

workspace_create_policy accepts instance_admins, any_user, or nobody. An empty SMTP host disables invitation email delivery; invitation creation still returns a one-time accept link. The SMTP password is best supplied through ORIEL_ADMIN_SMTP_PASSWORD. The invite mailer uses Go’s SMTP delivery path, which negotiates STARTTLS when the server advertises it.

[log]
level = "info"
format = "auto"

level accepts debug, info, warn, and error. format accepts auto, json, and console.