Skip to main content
Flipt server can be configured in two ways. Configuration precedence is as follows:
  1. Environment Variables
  2. Configuration File

Configuration File

The default way that Flipt is configured is with the use of a configuration file default.yml. This file is read when Flipt starts up and configures several important properties for the server.
You can generate a default configuration file by running flipt config init.
The server will check in a few different locations for server configuration (in order):
  1. --config flag as an override
  2. {{ USER_CONFIG_DIR }}/flipt/config.yml (the USER_CONFIG_DIR value is based on your architecture and specified in the Go documentation)
  3. /etc/flipt/config/default.yml
We provide both a JSON schema and a Cue schema that you can use to validate your configuration file and its properties.
You can edit any of these properties to your liking, and on restart, Flipt will pick up the new changes.

Environment Substitution

The configuration file also supports environment variable substitution as of v1.45.0. This allows you to use environment variables in your configuration file. For example, you can use the FLIPT_CUSTOM_DB_URL environment variable in the configuration file like this:
This will replace ${FLIPT_CUSTOM_DB_URL} with the value of the FLIPT_CUSTOM_DB_URL environment variable. The format for environment variable substitution is ${ENV_VAR}.
This can be used to provide sensitive information to Flipt without storing it in the configuration file. For example, you can use environment variables to store the database URL, API keys, or other sensitive information without having to conform to the pre-defined Flipt environment variable format.

Remote Configuration

Flipt supports fetching configuration from a remote source. This is useful for managing configuration across multiple instances of Flipt. The remote configuration source can be a URL to a configuration file stored in one of the following object storage services:
  • S3 (e.g.: s3://bucket-name/path/to/config.yml)
  • Azure Blob Storage (e.g.: azblob://container-name/path/to/config.yml)
  • Google Cloud Storage (e.g.: googlecloud://bucket-name/path/to/config.yml)
To load Flipt configuration from a remote source, replace the config.yml file with the URL to the remote configuration file in the --config flag when starting Flipt.
For authenticating with the object storage service, you can use the following environment variables depending on the service:
  • AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
  • AZURE_STORAGE_ACCOUNT and AZURE_STORAGE_KEY or AZURE_CLIENT_ID, AZURE_TENANT_ID, and AZURE_CLIENT_SECRET
  • GOOGLE_APPLICATION_CREDENTIALS
These environment variables are used by the underlying object storage client libraries to authenticate with the object storage service and are the same values used in our object storage configuration.

Environment Variables

All options in the configuration file can be overridden using environment variables using the syntax:
Environment variables MUST have FLIPT_ prefix and be in UPPER_SNAKE_CASE format.
Using environment variables to override defaults is especially helpful when running with Docker as described in the Docker documentation.
Keys should be uppercase and . should be replaced by _. For example, given these configuration settings:
You can override them using:

Multiple Values

Some configuration options can have a list of values. For example, the cors.allowed_origins option can have multiple origins. In this case, you can use a space separated list of values for the environment variable override:

Configuration Parameters

User Interface

Logging

Server

Authentication

Authentication Methods: Token

Authentication Methods: OIDC

Authentication Methods: GitHub

Authentication Methods: Kubernetes

Authentication Methods: JWT

Authorization

Authorization Backend: Local

Authorization Backend: Bundle

Authorization Backend: Object

Authorization Backend Object: S3

Database

Storage

Storage Local

Storage Git

Storage Object

Storage Object: S3
Storage Object: Azure Blob
Storage Object: Google Cloud Storage

Storage OCI

Cache

Cache: Memory

Cache: Redis

Audit Events

Audit Events: Log

Audit Events: Webhook

Audit Events: Kafka

Analytics

Analytics: Clickhouse

Analytics: Prometheus

Metrics

Metrics: OTLP

Tracing

Tracing: Jaeger

Tracing: Zipkin

Tracing: OTLP

Deprecations

From time to time configuration options will need to be deprecated and eventually removed. Deprecated configuration options will be removed after ~6 months from the time they were deprecated. All deprecated configuration options will be removed from the documentation, however, they will still work as expected until they’re removed. A warning will be logged in the Flipt logs when a deprecated configuration option is used. All deprecated options are listed in the DEPRECATIONS file in the Flipt repository as well as the CHANGELOG.

Experiments

From time to time, Flipt may introduce new features that are not considered fully supported. These features are considered experimental and may change or be removed in future releases. We put experimental features behind a configuration setting that can be enabled in the configuration file. To enable experimental features, set the experimental.{feature}.enabled configuration option to true.
See the Experimental documentation for more information on the current experimental features and how to enable them.