Skip to content

Install flagd

Install and run flagd almost anywhere outside of Kubernetes.

Download flagd binary or container

flagd can be run as a standalone-binary or container.

Kubernetes-native? flagd can also be run as part of the Kubernetes Operator.

There are many ways to get started with flagd. Choose the method that best serves your requirements to get started.

Release binary

Download pre-built binaries from https://github.com/open-feature/flagd/releases

Docker

docker pull ghcr.io/open-feature/flagd:latest

Homebrew

brew install flagd

Snap

flagd is available on snapcraft:

sudo snap install flagd

Go binary

  1. Install Go 1.20 or above
  2. Run go install github.com/open-feature/flagd/flagd@latest

Systemd service

Documentation for installing flagd as a systemd service can be found here

flagd start

Start flagd:

flagd start \
  --port 8013 \
  --uri https://raw.githubusercontent.com/open-feature/flagd/main/samples/example_flags.flagd.json

Or use docker:

Note - In Windows, use WSL system for both the file location and Docker runtime. Mixed file systems does not work and this is a limitation of Docker.

docker run \
    --rm -it \
    --name flagd \
    -p 8013:8013 \
    ghcr.io/open-feature/flagd:latest start \
    --uri https://raw.githubusercontent.com/open-feature/flagd/main/samples/example_flags.flagd.json

If you wish, download the file locally to make changes:

wget https://raw.githubusercontent.com/open-feature/flagd/main/samples/example_flags.flagd.json

In local mode, run flagd like this:

flagd start \
    --port 8013 \
    --uri file:./example_flags.flagd.json

Or use docker ( Note - In Windows, this requires WSL system for both the file location and Docker runtime):

docker run \
    --rm -it \
    --name flagd \
    -p 8013:8013 \
    -v $(pwd):/etc/flagd \
    ghcr.io/open-feature/flagd:latest start \
    --uri file:./etc/flagd/example_flags.flagd.json

--uri can be a local file or any remote endpoint. Use file: prefix for local files. eg. --uri file:/path/to/example_flags.flagd.json. gRPC and http have their own requirements. More information can be found here.

Multiple flag sources and flag merging logic

Multiple --uri parameters can be specified. In other words, flagd can retrieve flags from multiple sources simultaneously.

See the flag merging page for more information.

Perform flag evaluations

Flagd is now ready to perform flag evaluations over either HTTP(s) or gRPC. This example utilizes HTTP via cURL.

Retrieve a String value:

curl -X POST "http://localhost:8013/schema.v1.Service/ResolveString" \
    -d '{"flagKey":"myStringFlag","context":{}}' -H "Content-Type: application/json"

For Windows we recommend using a WSL terminal. Otherwise, use the following with cmd:

set json={"flagKey":"myStringFlag","context":{}}
curl -i -X POST -H "Content-Type: application/json" -d %json:"=\"% "localhost:8013/schema.v1.Service/ResolveString"

Result:

{
    "value": "val1",
    "reason": "DEFAULT",
    "variant":"key1"
}

Updates to the underlying flag store (e.g. JSON file) are reflected by flagd in realtime. No restarts required.

flagd also supports boolean, integer, float and object flag types. Read more on the evaluation examples page

Integrate your application

Now that flagd is running, it is time to integrate into your application. Do this by using an OpenFeature provider in a language of your choice.