Context
Feature flags are currently file-based only (featureflags/file_store.go). Services can't toggle features without a deploy. This blocks:
- Kill switches for new features during incidents
- Gradual rollouts to specific orgs/teams
- A/B testing (relevant for evalops/prompts#28)
- Runtime configuration changes
Why Flipt + OpenFeature
- Flipt: Open-source, written in Go, self-hosted, supports Git-based flag definitions (GitOps-native). Uses Postgres or embedded SQLite — no additional infrastructure for small deployments. Native gRPC and HTTP APIs.
- OpenFeature: CNCF vendor-neutral SDK. Abstracts the flag backend so we can swap providers later without changing application code.
Requirements
service-runtime integration
Flipt deployment
Migration path
Usage pattern
client := openfeature.NewClient("meter")
enabled, _ := client.BooleanValue(ctx, "budget-alerts-v2", false,
openfeature.NewEvaluationContext("", map[string]interface{}{
"targetingKey": orgID,
"tier": orgTier,
}),
)
Context
Feature flags are currently file-based only (
featureflags/file_store.go). Services can't toggle features without a deploy. This blocks:Why Flipt + OpenFeature
Requirements
service-runtime integration
github.com/open-feature/go-sdkdependencygithub.com/open-feature/go-sdk-contrib/providers/fliptproviderfeatureflags/openfeature.gothat initializes the Flipt provider from env vars (FLIPT_URL)FLIPT_URLis unset)Flipt deployment
evalops/deploy(single replica, Postgres-backed, using existing cluster Postgres)flags/directory in the deploy repo, synced to Flipt via GitOpsMigration path
FLIPT_URLto service environment configsUsage pattern