DEV Community

Elder Fernandes
Elder Fernandes

Posted on Originally published at selfhoststack-8z4.pages.dev

Self-Hosted Feature Flags in 2026: Unleash vs Flagsmith vs GO Feature Flag (Ditch LaunchDarkly)

Self-Hosted Feature Flags in 626: Unleash vs Flagsmith vs GO Feature Flag (Ditch LaunchDarkly)

Feature flags have become indispensable for modern deployment workflows — trunk-based development, canary releases, A/B testing, and kill switches all depend on them. But commercial platforms like LaunchDarkly and Split.io enforce per-seat pricing ($15–30/developer/month) that scales poorly with growing teams. A 20-developer team pays $3,600–$7,200/year just to toggle booleans.

Self-hosting an open-source feature flag service gives you unlimited seats, SDK parity with major languages, audit logs, gradual rollouts, and full data ownership on a single VPS.

In this guide, we compare the top three self-hostable feature flag platforms in 2026: Unleash, Flagsmith, and GO Feature Flag.


The Landscape: Comparative Breakdown

Feature / Capability Unleash Flagsmith GO Feature Flag
Core Paradigm Enterprise-grade flag server with strategies Full feature platform + remote config + experimentation Lightweight Go relay/proxy with YAML config
Technology Stack Node.js, PostgreSQL, Redis Django (Python), PostgreSQL, Redis Go (single binary), YAML/JSON config
SDK Languages 16+ (Java, JS, Python, Go, Rust, Ruby, .NET, Swift, Android, iOS, etc.) 9+ (Python, JS, Go, Ruby, Rust, Android, iOS, .NET, Java) 8+ via OpenFeature provider (Go, JS, Python, Java, .NET, Rust)
Strategy Types Gradual rollout, A/B, multivariate, kill switch, remote address Gradual, boolean, number, string, remote config Boolean, gradual, A/B, time-based, dark launch
Audit Log Yes (full event log) Yes (change history per flag) Basic (config diff via Git)
UI Dashboard Full admin UI with projects & environments Full admin UI with segments & identities Minimal API + OpenFeature-compatible
Self-Host Tier Open-source (Apache 2.0) — unlimited seats Open-source (BSD-3) — unlimited seats Open-source (MIT) — unlimited
Best For Teams needing enterprise strategies & audit trails Teams wanting remote config + experiments in one UI Teams wanting GitOps-driven flags with minimal footprint

1. Unleash — The Enterprise-Grade Flag Server

Unleash is the most mature open-source feature flag platform, originally built at Finn.no (Norway's largest marketplace). It powers production workloads for teams of 50–500+ developers and offers the richest set of rollout strategies.

Key Strengths

  • Advanced Strategies: Native support for gradual rollout (percentage-based), A/B testing with variant buckets, multi-variant flags, geographic targeting, and custom strategy plugins.
  • Environment Isolation: Built-in concept of projects → environments (dev, staging, prod) with per-environment token scoping.
  • Audit Trail: Every flag change is logged with actor, timestamp, and diff — critical for compliance and incident post-mortems.
  • SDK Ecosystem: Official SDKs for 16+ languages including Rust, Ruby, Android, and iOS. Edge SDKs for Next.js and Cloudflare Workers.
  • API Tokens: Scoped API tokens with per-project and per-environment permissions — no global admin keys in your application config.

Docker Compose Setup

version: "3.9"

services:
  unleash-db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: unleash
      POSTGRES_USER: unleash
      POSTGRES_PASSWORD: ${UNLEASH_DB_PASSWORD}
    volumes:
      - unleash-db:/var/lib/postgresql/data
    restart: unless-stopped

  unleash:
    image: unleashorg/unleash-server:6
    ports:
      - "4242:4242"
    environment:
      DATABASE_URL: postgres://unleash:${UNLEASH_DB_PASSWORD}@unleash-db:5432/unleash
      INIT_ADMIN_API_TOKENS: ${UNLEASH_API_TOKEN}
    depends_on:
      - unleash-db
    restart: unless-stopped

volumes:
  unleash-db:
Enter fullscreen mode Exit fullscreen mode

Honest Pros & Cons

Pros:

  • Battle-tested at enterprise scale (Finn.no, DNB, Equinor)
  • Rich strategy engine with plugin architecture
  • Full audit log out of the box
  • Active community (9k+ GitHub stars)

Cons:

  • Node.js runtime means higher memory footprint (~300–500MB)
  • UI can feel cluttered for small teams with simple boolean needs
  • Enterprise edition (Unleash Cloud) is separate from self-hosted open-source; some features (SSO, role-based access) are enterprise-only
  • No built-in experimentation/bayesian stats — you need external analytics

2. Flagsmith — Feature Flags + Remote Config + Experiments

Flagsmith is a newer platform that combines feature flags with remote configuration, user segments, and lightweight experimentations. It's the best choice for teams that want flags and dynamic config in a single UI without adding a separate tool.

Key Strengths

  • Remote Config: Flagsmith stores boolean, string, integer, and JSON values per flag — your app can fetch config at runtime without redeploying.
  • User Segments: Define segments (e.g., "beta users", "enterprise tier") and target flags to specific segments or individual identities.
  • Identity Management: Built-in concept of user identities — you can override flags per user for testing and QA.
  • Experimentation (Premium): A/B testing with Bayesian statistics is available in the open-source edition for basic scenarios.
  • Edge Proxy: A lightweight Go edge relay that caches flags client-side and reduces latency to <1ms.

Docker Compose Setup

version: "3.9"

services:
  flagsmith-db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: flagsmith
      POSTGRES_USER: flagsmith
      POSTGRES_PASSWORD: ${FLAGSMITH_DB_PASSWORD}
    volumes:
      - flagsmith-db:/var/lib/postgresql/data
    restart: unless-stopped

  flagsmith:
    image: flagsmith/flagsmith-api:latest
    ports:
      - "8000:8000"
    environment:
      DATABASE_URL: postgres://flagsmith:${FLAGSMITH_DB_PASSWORD}@flagsmith-db:5432/flagsmith
      SECRET_KEY: ${FLAGSMITH_SECRET}
      ENVIRONMENT: production
    depends_on:
      - flagsmith-db
    restart: unless-stopped

  flagsmith-frontend:
    image: flagsmith/flagsmith-frontend:latest
    ports:
      - "8080:8080"
    environment:
      API_URL: http://flagsmith:8000/api/v1
    depends_on:
      - flagsmith
    restart: unless-stopped

volumes:
  flagsmith-db:
Enter fullscreen mode Exit fullscreen mode

Honest Pros & Cons

Pros:

  • Remote config + flags in one platform
  • Clean modern UI with segment targeting
  • Edge proxy for client-side caching
  • Strong SDK support including mobile (iOS, Android)

Cons:

  • Django/Python stack requires more memory than a Go binary (~400–600MB with Postgres)
  • Documentation can lag behind the actual API capabilities
  • Some advanced features (SSO, audit logs) are enterprise tier
  • Community is smaller than Unleash (~4k GitHub stars)

3. GO Feature Flag — The GitOps-Native Flag Relay

GO Feature Flag takes a fundamentally different approach: instead of a database-backed server with a UI, it's a single Go binary that reads flag configuration from YAML/JSON files (local or remote Git/S3/HTTP) and exposes an OpenFeature-compatible API. It's designed for teams who want flags to live in Git alongside their code.

Key Strengths

  • GitOps-Native: Flag configs are YAML files versioned in Git — changes go through pull requests, code review, and CI pipelines. No dashboard needed.
  • Minimal Footprint: Single Go binary, ~30MB memory, no database required.
  • OpenFeature Standard: Full compliance with the OpenFeature specification — works with any OpenFeature SDK (Go, JS, Python, Java, .NET, Rust).
  • Configuration Sources: Read flag files from local disk, Git, S3, HTTP endpoints, or Kubernetes ConfigMaps.
  • No Database: State is derived from the config file — no migrations, no DB backups, no connection pool tuning.

Docker Compose Setup

version: "3.9"

services:
  go-feature-flag-relay:
    image: gofeatureflag/relay-proxy:latest
    ports:
      - "1031:1031"
    environment:
      - LISTEN=:1031
      - POLLINGINTERVAL=5s
      - RETRIEVER_KIND=http
      - RETRIEVER_URL=https://raw.githubusercontent.com/yourorg/flags/main/flags.yml
      - RETRIEVER_GITHUB_TOKEN=${GITHUB_TOKEN}
    restart: unless-stopped
Enter fullscreen mode Exit fullscreen mode

Example Flag Config (flags.yml)

new-checkout-flow:
  variations:
    enabled: true
    disabled: false
  defaultRule:
    variation: disabled
  rules:
    - name: beta-testers
      query: '{ key: "email", operator: endsWith, value: "@beta.com" }'
      variation: enabled
    - name: 10-percent-rollout
      query: '{ key: "userId", operator: percentage, value: 10 }'
      variation: enabled
Enter fullscreen mode Exit fullscreen mode

Honest Pros & Cons

Pros:

  • Zero database — perfect for GitOps and Kubernetes
  • ~30MB memory footprint — runs on the smallest VPS
  • Full OpenFeature compliance — vendor-neutral SDK layer
  • Configuration-as-code with PR review and audit trail via Git

Cons:

  • No built-in UI dashboard — you manage flags via YAML in Git
  • No built-in audit log beyond Git history
  • Smaller community (~1.5k GitHub stars)
  • Not ideal for non-technical product teams who need a visual dashboard
  • No native experimentation/bayesian A/B testing

Decision Guide

Your Situation Recommended Tool
Enterprise team, need audit trails + SSO + advanced strategies Unleash
Need flags + remote config + user segments in one UI Flagsmith
GitOps-native, no database, minimal footprint GO Feature Flag
Want all three approaches? Combine: GO Feature Flag as edge relay + Unleash as backend

Production Best Practices

  1. Pin Docker image tags: Use unleash-server:6.6.0 not latest. Flag platform upgrades can introduce breaking API changes.
  2. Network isolation: Put the flag server and database on an internal Docker network. Expose only the API port (4242 for Unleash, 8000 for Flagsmith, 1031 for GO Feature Flag) through Traefik/Caddy with mTLS.
  3. SDK initialization: Initialize SDKs with a server-sent events (SSE) connection for real-time flag updates. Polling adds latency; SSE is push-based and near-instant.
  4. Secrets management: Store API tokens and database passwords in Infisical or Vaultwarden — not in .env files checked into Git.
  5. Backup the database: If using Unleash or Flagsmith, automate PostgreSQL backups with pgBackRest or restic. GO Feature Flag needs no backup (state is in Git).

Conclusion

LaunchDarkly charges $15–30/developer/month. For a 20-developer team, that's $3,600–$7,200/year. A self-hosted feature flag platform on a $5 VPS gives you unlimited seats, full data ownership, and SDK parity with every major language.

  • Unleash for enterprise teams needing audit trails and advanced strategies.
  • Flagsmith for teams wanting flags + remote config in one platform.
  • GO Feature Flag for GitOps-native deployments with zero database overhead.

Explore the full comparison and deployment guides:
👉 Self-Hosted Feature Flag Alternatives

Top comments (0)