Feature Flags
Control feature rollout with a pluggable feature flag system. Enable gradual rollouts, A/B testing, and environment-specific configurations.
Overview
AgentArea uses a flexible feature flag system for:
Gradual Rollouts : Enable features for subsets of users
Environment Configuration : Different features per environment
A/B Testing : Test new features with control groups
Emergency Toggles : Quickly disable problematic features
Available Features
Feature Description Default warm_poolEnable warm pool fast activation falsegateway_apiUse Gateway API HTTPRoute falsestate_reconcilerBackground state reconciliation false
Configuration
Environment Variables
# Enable features via environment variable
MCP_FEATURES_ENABLED = warm_pool,gateway_api,state_reconciler
Configuration File
# config/features.yaml
features :
warm_pool :
enabled : true
description : "Enable warm pool for fast MCP activation"
gateway_api :
enabled : false
description : "Use Gateway API instead of Ingress"
state_reconciler :
enabled : true
description : "Background reconciliation of MCP state"
Implementation
Feature Flag Provider
// internal/features/features.go
type Provider interface {
IsEnabled ( feature string ) bool
GetConfig ( feature string ) ( map [ string ] interface {}, error )
GetAll () map [ string ] bool
}
// Environment-based provider
type EnvProvider struct {
enabled map [ string ] bool
}
func NewEnvProvider () * EnvProvider {
enabledStr := os . Getenv ( "MCP_FEATURES_ENABLED" )
enabled := make ( map [ string ] bool )
for _ , feature := range strings . Split ( enabledStr , "," ) {
feature = strings . TrimSpace ( feature )
if feature != "" {
enabled [ feature ] = true
}
}
return & EnvProvider { enabled : enabled }
}
func ( p * EnvProvider ) IsEnabled ( feature string ) bool {
return p . enabled [ feature ]
}
Usage in Code
// Check if feature is enabled
if features . IsEnabled ( "warm_pool" ) {
// Use warm pool activation
err := m . warmPoolClient . Activate ( instance )
} else {
// Standard container creation
err := m . backend . CreateInstance ( instance )
}
Feature-Gated Routes
// Conditional route registration
if features . IsEnabled ( "gateway_api" ) {
router . HandleFunc ( "/instances" , handlers . CreateInstance ). Methods ( "POST" )
} else {
router . HandleFunc ( "/instances" , handlers . CreateInstanceLegacy ). Methods ( "POST" )
}
Provider Types
Environment Provider
Simple on/off based on environment variables:
provider := NewEnvProvider ()
// MCP_FEATURES_ENABLED=warm_pool,gateway_api
Config Provider
Load from configuration file:
provider := NewConfigProvider ( "config/features.yaml" )
Hybrid Provider
Combine multiple sources with precedence:
provider := NewHybridProvider (
NewEnvProvider (), // Highest priority
NewConfigProvider (), // Fallback
)
Best Practices
Monitoring
Feature Metrics
# Prometheus metrics
feature_flag_enabled{feature="warm_pool"} 1
feature_flag_enabled{feature="gateway_api"} 0
feature_flag_check_total{feature="warm_pool", result="enabled"} 1523
feature_flag_check_total{feature="warm_pool", result="disabled"} 42
Next Steps