Go SDK

Installation

go get github.com/vexil-platform/vexil/sdks/go/vexil

Quick Start

package main

import (
    "fmt"
    "github.com/vexil-platform/vexil/sdks/go/vexil"
)

func main() {
    // From environment variables
    client, err := vexil.New(vexil.WithEnvProvider())
    if err != nil {
        panic(err)
    }
    defer client.Close()

    darkMode := client.Bool("dark-mode", false)
    rateLimit := client.Int("api-rate-limit", 100)
    banner := client.String("banner-text", "Welcome")

    fmt.Printf("dark-mode=%v rate-limit=%d banner=%q\n",
        darkMode, rateLimit, banner)
}

Providers

Environment Variables

client, _ := vexil.New(vexil.WithEnvProvider())

Reads flags from FLAG_* environment variables. The flag name is converted to uppercase with hyphens replaced by underscores: dark-mode becomes FLAG_DARK_MODE.

Sidecar

client, _ := vexil.New(vexil.WithSidecarProvider("http://localhost:8514"))

Fetches flags from the Vexil sidecar HTTP API.

ConfigMap

client, _ := vexil.New(vexil.WithConfigMapProvider("/etc/vexil"))

Reads flags from files in the mounted ConfigMap directory.

API

Client Methods

Method Signature Description
Bool Bool(name string, defaultVal bool) bool Get boolean flag
String String(name string, defaultVal string) string Get string flag
Int Int(name string, defaultVal int) int Get integer flag
JSON JSON(name string, dst interface{}) error Unmarshal JSON flag
Flag Flag(name string) (Flag, error) Get raw flag struct
AllFlags AllFlags() ([]Flag, error) List all flags
Close Close() error Clean up resources

Flag Struct

type Flag struct {
    Name     string
    Type     string   // "boolean", "string", "integer", "json"
    Value    string
    Disabled bool
}

Provider Interface

Implement this to create custom providers:

type Provider interface {
    GetFlag(name string) (Flag, error)
    GetAllFlags() ([]Flag, error)
    Close() error
}

Back to top

Vexil Platform © 2026. Apache-2.0 License.