Skip to main content
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 and Secret References

The configuration file supports both environment variable substitution and secret references.

Environment Variables

You can use environment variables in your configuration file with the ${env:VARIABLE_NAME} syntax. For example:
This will replace ${env:FLIPT_CUSTOM_AUTH_REQUIRED} with the value of the FLIPT_CUSTOM_AUTH_REQUIRED environment variable.
The v1 syntax ${VARIABLE_NAME} is not supported in v2. You must use the explicit ${env:VARIABLE_NAME} format.

Secret References

You can also reference secrets from configured secret providers using the ${secret:provider:path:key} syntax:

Combined Usage

You can combine environment variables and secret references in the same configuration:
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 the server.
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

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.
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

The following sections group related configuration options for easier navigation:
  1. Core Server Setup - Essential configuration to get Flipt running
  2. Security & Access Control - Authentication, authorization, and security settings
  3. Observability & Operations - Monitoring, logging, and analytics
  4. Additional Settings - Optional features and enhancements

Core Server Setup

Server

Server configuration controls how Flipt listens for and serves HTTP, HTTPS, and gRPC connections.

Storage

Storage configuration defines where and how Flipt persists feature flag data, including local and remote Git repositories.

Commit Signing

Environments

Environments configuration allows you to create isolated feature flag namespaces with separate storage backends.

Source Control Management

User Interface

User interface configuration customizes the appearance and behavior of the Flipt web UI.

CORS

Cross-Origin Resource Sharing (CORS) configuration allows web applications from different domains to access Flipt’s API.

CORS Troubleshooting

If you’re experiencing CORS issues with browser-based applications (such as Vue, React, or Angular), simply setting cors.enabled: true may not be sufficient. Browsers can be strict about CORS policies, and you may need to explicitly configure the allowed origins and other options. Common Issue: Browser applications receive CORS errors even when cors.enabled: true is set. Solution: Configure explicit CORS settings instead of relying on the wildcard defaults:
When using client-side SDKs like the Flipt JavaScript SDK, make sure to include your application’s origin in the allowed_origins list and include any custom headers your application sends.

Security & Access Control

Authentication

Authentication configuration controls how users and systems authenticate with Flipt, supporting multiple methods including OIDC, GitHub, JWT, and static tokens.
Authentication is configured slightly differently in v2 compared to v1. See the Authentication documentation for more details.

Authentication Session

Authentication Session Storage

Authentication Session Storage: Redis

Authentication Methods: Static Token

Authentication Methods: OIDC

Authentication Methods: GitHub

Authentication Methods: Kubernetes

Authentication Methods: JWT

Authorization

Authorization configuration enforces fine-grained access control policies to restrict operations based on user roles and permissions.

Authorization Backend: Local

Credentials

Credentials configuration manages authentication details for accessing remote Git repositories and SCM providers.

Credentials: Basic

Credentials: SSH

Credentials: Access Token

Credentials: GitHub App

Secrets

Secrets configuration enables integration with external secret management systems for secure credential storage. See the Secrets documentation for detailed provider setup and usage.

Secrets Provider: File

Secrets Provider: Vault

Secrets Provider: AWS Secrets Manager

Secrets Provider: GCP Secret Manager

Secrets Provider: Azure Key Vault

Observability & Operations

Logging

Logging configuration controls the format, destination, and verbosity of Flipt’s application logs.

Logging: OTLP

Flipt v2 supports the new OpenTelemetry OTLP logging specification. To enable OTLP logging, set the OTLP_LOGS_EXPORTER environment variable
OpenTelemetry logging is in addition to the existing logging configuration. It does not replace the ability to log to a file or stdout/stderr.
OpenTelemetry OTLP logging is configured via the default OpenTelemetry Environment Variables. See the OpenTelemetry Environment Variables documentation for more details. For example, to configure the OTLP logging endpoint, you can set the OTEL_EXPORTER_OTLP_LOGS_ENDPOINT environment variable.

Metrics

Metrics configuration enables operational monitoring through Prometheus or OpenTelemetry exporters.

Metrics: OTLP

OpenTelemetry OTLP metrics are configured via the default OpenTelemetry Environment Variables. See the OpenTelemetry Environment Variables documentation for more details. For example, to configure the OTLP metrics endpoint, you can set the OTEL_EXPORTER_OTLP_METRICS_ENDPOINT environment variable.
To configure the OTLP headers, you can set the OTEL_EXPORTER_OTLP_METRICS_HEADERS environment variable.

Tracing

Tracing configuration enables distributed tracing for observability and performance analysis using OpenTelemetry.
The only supported tracing backend is OTLP.

Tracing: OTLP

OpenTelemetry OTLP tracing is configured via the default OpenTelemetry Environment Variables. See the OpenTelemetry Environment Variables documentation for more details. For example, to configure the OTLP tracing endpoint, you can set the OTEL_EXPORTER_OTLP_TRACES_ENDPOINT environment variable.
To configure the OTLP headers, you can set the OTEL_EXPORTER_OTLP_TRACES_HEADERS environment variable.

Evaluation

Evaluation configuration controls feature flag evaluation behavior and related API response data.
Flag metadata can contain operator-defined data. Keep evaluation.include_flag_metadata disabled unless clients that call ListFlags should receive that metadata.

Analytics

Analytics configuration enables collection and export of feature flag evaluation metrics to external analytics systems.

Analytics: Clickhouse

Analytics: Prometheus

Additional Settings

Templates

Templates configuration customizes the generated commit messages and merge proposal content that Flipt creates for Git-backed workflows. Template values use Go text/template syntax.
config.yaml
Server-wide templates override Flipt’s built-in defaults. Repository-level templates in flipt.yaml or flipt.yml override server-wide templates for that repository.
Flipt validates configured templates when it loads the configuration. Invalid server-wide templates prevent the configuration from loading.

License

License configuration enables Pro features by providing a valid license key.
A license is only required for Pro features. See the Licensing documentation for more information.

Meta & Diagnostics

Meta configuration controls Flipt’s internal behavior including update checks, telemetry, and diagnostic endpoints.
Changed in v2.10.0: diagnostics.profiling.enabled now defaults to false. If you rely on pprof endpoints, explicitly set it to true in your configuration.

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.