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. The server will check in a few different locations for server configuration (in order):--configflag as an override{{ USER_CONFIG_DIR }}/flipt/config.yml(theUSER_CONFIG_DIRvalue is based on your architecture and specified in the Go documentation)/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.
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:
${env:FLIPT_CUSTOM_AUTH_REQUIRED} with the value of the FLIPT_CUSTOM_AUTH_REQUIRED environment variable.
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: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)
config.yml file with the URL to the remote configuration file in the --config flag when starting the server.
AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEYAZURE_STORAGE_ACCOUNTandAZURE_STORAGE_KEYorAZURE_CLIENT_ID,AZURE_TENANT_ID, andAZURE_CLIENT_SECRETGOOGLE_APPLICATION_CREDENTIALS
Environment Variables
All options in the configuration file can be overridden using environment variables using the syntax:FLIPT_ prefix and be in UPPER_SNAKE_CASE format.
Using environment variables to override defaults is especially helpful when
running with Docker.
. should be replaced by _. For example,
given these configuration settings:
Multiple Values
Some configuration options can have a list of values. For example, thecors.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:- Core Server Setup - Essential configuration to get Flipt running
- Security & Access Control - Authentication, authorization, and security settings
- Observability & Operations - Monitoring, logging, and analytics
- 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 settingcors.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 theOTLP_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.
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 theOTEL_EXPORTER_OTLP_METRICS_ENDPOINT environment variable.
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 theOTEL_EXPORTER_OTLP_TRACES_ENDPOINT environment variable.
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 Gotext/template syntax.
config.yaml
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.