Skip to main content

Configuration Reference

Configuration File

ionflow uses the YAML file format for configuration.

Configuration files are loaded as follows:

$ ionflow server -c <path/to/config-file.yaml>

A full configuration reference file is shown below, this provides comments and all available options.

ionflow.yaml
# The address to bind to for HTTP.
http_listen_addr: ":8080"

# The address to bind to for HTTPS.
https_listen_addr: ":8443"

# The address to bind to for the metrics.
metrics_listen_addr: ":8081"

# The public URL at which the ionflow server can be reached by clients and the CLI.
server_url: "https://ionflow.example.com"

keys:
# A private, 32 bytes in hex, system admin key
# Use this key with the CLI when configuring system-wide resources
# A key can be generated by:
# - ionflow genkey
# - openssl rand -hex 32
system_admin_key:

tls:
# Disable TLS (not recommended)
# Use this flag to disable TLS e.g. when running behind a reverse proxy
disable: false
# The path to the certificate for TLS.
# Required when TLS is enabled
cert_file: ""
# The path to the private key for the certificate.
# Required when TLS is enabled
key_file: ""

provider:
# The issuer URL of the OAuth2 provider.
# This URL is used to verify the authenticity of the provider
# and to obtain the provider's metadata, such as the supported grant types and scopes.
# The default value is empty.
issuer:

# The client ID of the application.
# This ID is used to identify the application when requesting access to protected resources.
# The default value is empty.
client_id:

# The client secret of the application.
# This secret is used to authenticate the application when requesting access to protected resources.
# The default value is empty.
client_secret:

# The scopes that the application is requesting access to.
# The scopes define the permissions that the application has for accessing the protected resources.
# The default value is empty.
scopes:

database:
# The URL for connecting to the database
# e.g
# url: "/data/ionflow.db?_pragma=busy_timeout(5000)&_pragma=journal_mode(WAL)"
# url: "postgres://ionflow:ionflow@localhost/ionflow?sslmode=disable"
url: "./ionflow.db"

kutlass:
# Specifies the environment in which the workflow will be executed.
runtime_env: native
# The directory where workflow files will be loaded from on startup.
# Use this directory to seed the runtime with an initial set of workflows; workflows can
# also be added to the database via API.
# This directory must exist and be readable by the user running the application.
workflow_dir: /var/lib/ionflow/kutlass
# Workflow retry settings
kutlass_retry:
# The initial delay before retrying a failed workflow.
# This delay is specified in ISO 8601 duration format,
# and it can include units such as seconds, minutes, hours, and days.
# For example, "PT30S" represents a delay of 30 seconds,
# and "P1DT2H" represents a delay of 1 day and 2 hours.
# The default value is PT0.1S (100 milliseconds).
delay: PT0.1S

# The maximum number of attempts to retry a failed workflow.
# This value can be either "unlimited" or an integer,
# and it determines the maximum number of times that a failed workflow will be retried.
# When the number of attempts exceeds this value, the workflow will be terminated.
# The default value is unlimited.
max_attempts: unlimited

# The maximum delay before retrying a failed workflow.
# This delay is specified in ISO 8601 duration format,
# and it can include units such as seconds, minutes, hours, and days.
# For example, "PT30S" represents a delay of 30 seconds,
# and "P1DT2H" represents a delay of 1 day and 2 hours.
# The default value is PT1H (1 hour).
max_delay: PT1H

# The increment of the delay between each retry.
# This increment is a static value that is added to the previous delay,
# and it is specified in ISO 8601 time format.
# For example, "PT1S" represents an increment of 1 second,
# and "PT2M" represents an increment of 2 minutes.
increment:

# The multiplier of the delay between each retry.
# This multiplier is applied to the previous delay, and it is a decimal value between 0 and 1.
# The default value is 2.
multiplier: 2

# The jitter of the delay between each retry.
# This jitter can be either a float value or a string,
# and it determines the maximum amount of random time that is added or subtracted
# from the delay between each retry of a failed workflow.
#
# If the jitter is specified as a float value, it represents the maximum amount of
# random time relative to the total delay. For example, a jitter value of 0.5
# means that the random time can be between 0 and 50% of the total delay.
#
# If the jitter is specified as a string, it represents the absolute maximum
# amount of random time in ISO 8601 duration format. For example, "PT1S"
# represents a maximum of 1 second, and "PT2M" represents a maximum of 2 minutes.
#
# The jitter can be used to avoid congestion and reduce the impact of retries on the system.
# The default value is 0.1
jitter: 0.1

logging:
# Whether the logger is in development mode.
# In development mode, the logger will take stacktraces more liberally
# and will change the behavior of DPanicLevel.
# The default value is false.
development: false
# The format of the log messages.
# Available levels: json, console
# The default format is console
format: console
# The log level for the application
# Available levels: debug, info, warn, error, fatal
# The default level is info
level: info

stream:
# Whether to enable tracing for Jetstream messages.
# Tracing can be useful for debugging and troubleshooting purposes,
# but it can also increase the amount of data logged,
# so it should be used with caution.
# The default value is false.
trace: false

# The directory where stream files will be stored.
# This directory must exist and be writable by the user running the application.
# The default value is /var/lib/ionflow/ionrow
streamdir: /var/lib/ionflow/ionrow

ionbay:
# The directory where Ionbay will monitor for file changes.
# This directory must exist and be readable by the user running the application.
# The default value is /var/lib/ionflow/ionbay.
baydir: /var/lib/ionflow/ionbay

# Whether to delete the monitored files when the application exits.
# This setting can be useful to automatically clean up temporary files
# that are no longer needed after the application has finished running.
# The default value is false.
delete_on_exit: false

Environment Variables

Configuration can be overriden using environment variables. These values should be used for passing in compromising credentials, environment specific data, and granular controls.

NameDescriptionDefault Value
IONFLOW_HTTP_LISTEN_ADDRThe address to bind to for HTTP.:8080
IONFLOW_HTTPS_LISTEN_ADDRThe address to bind to for HTTPS.:8443
IONFLOW_SERVER_URLThe public URL at which the ionflow server can be reached by clients and the CLI.https://localhost:8443
IONFLOW_SYSTEM_ADMIN_KEYA private, 32 bytes in hex, system admin key
Use this key with the CLI when configuring system-wide resources
A key can be generated by:
- ionflow genkey
- openssl rand -hex 32
""
IONFLOW_DB_URLThe URL for connecting to the database
e.g
- url: "/data/ionflow.db?_pragma=busy_timeout(5000)&_pragma=journal_mode(WAL)"
- url: "postgres://ionflow:ionflow@localhost/ionflow?sslmode=disable"
ionflow.db
IONFLOW_TLS_DISABLEDisable TLS (not recommended)
Use this flag to disable TLS e.g. when running behind a reverse proxy
false
IONFLOW_TLS_CERT_FILEThe path to the certificate for TLS. Required when TLS is enabled.""
IONFLOW_TLS_KEY_FILEThe path to the private key for the certificate. Required when TLS is enabled.""
IONFLOW_METRICS_LISTEN_ADDRThe address to bind to for the metrics.:8081
IONFLOW_LOGGING_LEVELThe log level for the application.
Available levels: debug, info, warn, error, fatal
info
IONFLOW_LOGGING_FORMATThe format of the log messages. Available levels: json, console.console
IONFLOW_LOGGING_DEVELOPMENTWhether the logger is in development mode. In development mode, the logger will take stacktraces more liberally and will change the behavior of DPanicLevel.false
IONFLOW_KUTLASS_RUNTIME_ENVIRONMENTSpecifies the environment in which the workflow will be executed.native
IONFLOW_KUTLASS_WORKFLOW_DIRThe directory where workflow files will be loaded from on startup. Use this directory to seed the runtime with an initial set of workflows; can also be added to the database via API. This directory must exist and be readable by the user running the application.""
IONFLOW_KUTLASS_DEFAULT_RETRY_DELAYThe initial delay before retrying a failed workflow. This delay is specified in ISO 8601 duration format, and it can include units such as seconds, minutes, hours, and days. For example, "PT30S" represents a delay of 30 seconds, and "P1DT2H" represents a delay of 1 day and 2 hours.PT0.1S (100 ms)
IONFLOW_KUTLASS_DEFAULT_RETRY_MAX_ATTEMPTSThe maximum number of attempts to retry a failed workflow. This value can be either "unlimited" or an integer, and it determines the maximum number of times that a failed workflow will be retried. When the number of attempts exceeds this value, the workflow will be terminated.unlimited
IONFLOW_KUTLASS_DEFAULT_RETRY_MAX_DELAYThe maximum delay before retrying a failed workflow. This delay is specified in ISO 8601 duration format, and it can include units such as seconds, minutes, hours, and days. For example, "PT30S" represents a delay of 30 seconds, and "P1DT2H" represents a delay of 1 day and 2 hours.PT1H (1 hour)
IONFLOW_KUTLASS_DEFAULT_RETRY_INCREMENTThe increment of the delay between each retry. This increment is a static value that is added to the previous delay, and it is specified in ISO 8601 time format. For example, "PT1S" represents an increment of 1 second, and "PT2M" represents an increment of 2 minutes.0
IONFLOW_KUTLASS_DEFAULT_RETRY_MULTIPLIERThe multiplier of the delay between each retry. This multiplier is applied to the previous delay, and it is a decimal value between 0 and 1.2
IONFLOW_KUTLASS_DEFAULT_RETRY_JITTERThe jitter of the delay between each retry. This jitter can be either a float value or a string (ISO 8601 duration), and it determines the maximum amount of random time that is added or subtracted from the delay between each retry of a failed workflow.0.1
IONFLOW_IONBAY_BAY_DIRThe directory where Ionbay will monitor for file changes. This directory must exist and be readable by the user running the application./var/lib/ionflow/ionbay
IONFLOW_IONBAY_DELETE_ON_EXITWhether to delete the monitored files when the application exits. This setting can be useful to automatically clean up temporary files that are no longer needed after the application has finished running.false
IONFLOW_STREAM_TRACEWhether to enable tracing for Jetstream messages. Tracing can be useful for debugging and troubleshooting purposes, but it can also increase the amount of data logged, so it should be used with cautionfalse
IONFLOW_STREAM_DIRECTORYThe directory where stream files will be stored. This directory must exist and be writable by the user running the application./var/lib/ionflow/ionrow