OpenLogs

All tools

FeatBit

Feature flag service with a web portal and SDKs for releasing features step by step.

Replaces

Paid feature flag services, such as LaunchDarkly.

All open-source alternatives to LaunchDarkly

Difficulty

Difficulty: Medium

4 services (1 database or broker: postgres), 2 volume mounts, 1 env value to set, no elevated host access. Heuristic score 5 of 11: medium. A source checkout is needed, so the rating is at least medium.

Stack

C# (language), PostgreSQL (database)

Deployment

docker_compose

Requirements

Not stated.

License

MIT (OSI-approved open source)

Read from github.com/featbit/featbit/blob/1483cb9/LICENSE

Business model

Unknown

The README at the pinned commit does not state a business model, so it stays unknown.

Source: github.com/featbit/featbit/blob/1483cb9/README.md, read on .

Repository

featbit/featbit

GitHub stats

Stars
1,946
Forks
151
Open issues and pull requests
46
Last push
2026-10-22
Latest release
6.0.1
Released
2026-10-14

From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as MIT.

Compose file

Config check passed docker compose config exited 0 on this exact file on 2026-10-22.
docker-compose.yml Version 1
name: featbit
services:
  ui:
    image: featbit/featbit-ui:${FEATBIT_VERSION:?FEATBIT_VERSION is required}
    environment:
      - API_URL=http://localhost:5000
      - DEMO_URL=https://featbit-samples.vercel.app
      - EVALUATION_URL=http://localhost:5100
      - BASE_HREF=/
    depends_on:
      - api-server
    ports:
      - "8081:80"
    networks:
      - featbit-network

  api-server:
    image: featbit/featbit-api-server:${FEATBIT_VERSION:?FEATBIT_VERSION is required}
    environment:
      - DbProvider=Postgres
      - MqProvider=Postgres
      - CacheProvider=None
      - Postgres__ConnectionString=Host=postgresql;Port=5432;Username=postgres;Password=please_change_me;Database=featbit
      - Jwt__Algorithm=HS256
      - Jwt__Key=please_change_me_to_a_secure_secret_key
    depends_on:
      - postgresql
    ports:
      - "5000:5000"
    networks:
      - featbit-network

  evaluation-server:
    image: featbit/featbit-evaluation-server:${FEATBIT_VERSION:?FEATBIT_VERSION is required}
    environment:
      - DbProvider=Postgres
      - MqProvider=Postgres
      - CacheProvider=None
      - Postgres__ConnectionString=Host=postgresql;Port=5432;Username=postgres;Password=please_change_me;Database=featbit
    depends_on:
      - postgresql
    ports:
      - "5100:5100"
    networks:
      - featbit-network

  postgresql:
    image: postgres:15.10
    container_name: postgresql
    restart: on-failure
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: please_change_me
    volumes:
      - ./infra/postgresql/docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d/
      - postgres:/var/lib/postgresql/data
    networks:
      - featbit-network

networks:
  featbit-network:
    name: featbit-network
    driver: bridge
    ipam:
      config:
        - subnet: 172.10.0.0/16

volumes:
  postgres:

From the app's own repository: github.com/featbit/featbit/blob/1483cb9/docker-compose.yml.

Compose file from featbit/featbit, used inside a checkout of that repository (documented setup B).

Install

  1. Docker with the Compose plugin and git (github.com/featbit/featbit/blob/1483cb9/README.md)

    A host with Docker, the Docker Compose plugin and git. This entry needs a checkout of the project repository.

  2. Get the source at commit 1483cb9 (github.com/featbit/featbit/blob/1483cb9/README.md)
    git init featbit
    cd featbit
    git remote add origin https://github.com/featbit/featbit.git
    git fetch --depth 1 origin 1483cb94c60af605a89a2d6cfeeaeee25f9a1241
    git checkout FETCH_HEAD
  3. The compose file in the checkout: docker-compose.yml (shown here for reading) (github.com/featbit/featbit/blob/1483cb9/docker-compose.yml)

    Use the compose file shown above.

  4. What the compose file check ran with (github.com/featbit/featbit/blob/1483cb9/README.md)

    The compose file check ran in a checkout of featbit/featbit at 1483cb94c60af605a89a2d6cfeeaeee25f9a1241 (a sparse checkout: only the top-level files). The README tells the reader to clone the repository, go into the featbit folder and run docker compose up -d.

  5. Start it (github.com/featbit/featbit/blob/1483cb9/README.md)
    docker compose up -d
  6. Open the app (github.com/featbit/featbit/blob/1483cb9/docker-compose.yml)

    Open http://localhost:8081. The compose file publishes host port 8081 for the ui service. The README names this address for the portal.

Compose file check: config_ok on 2026-10-22.

Gotchas and maintenance

Gotchas

  • The compose file has placeholder values. Placeholder values: Postgres__ConnectionString is "Host=postgresql;Port=5432;Username=postgres;Password=please_change_me;Database=featbit" (api-server), Jwt__Key is "please_change_me_to_a_secure_secret_key" (api-server), Postgres__ConnectionString is "Host=postgresql;Port=5432;Username=postgres;Password=please_change_me;Database=featbit" (evaluation-server), POSTGRES_PASSWORD is "please_change_me" (postgresql). (github.com/featbit/featbit/blob/1483cb9/docker-compose.yml, checked 2026-10-22)
  • The compose file publishes host ports. Host ports: 8081 (ui), 5000 (api-server), 5100 (evaluation-server), 5432 (postgresql). A port without a host address listens on all host network interfaces. (github.com/featbit/featbit/blob/1483cb9/docker-compose.yml, checked 2026-10-22)
  • The compose file mounts host folders. Host paths mounted into containers: ./infra/postgresql/docker-entrypoint-initdb.d/ at /docker-entrypoint-initdb.d/ (postgresql). (github.com/featbit/featbit/blob/1483cb9/docker-compose.yml, checked 2026-10-22)

Signals

  • Open issues and pull requests: 46
  • Last push: 2026-10-22 (0 days before this page was built)
  • Latest release: 6.0.1 on 2026-10-14 (8 days before this page was built)