Skip to content

Quickstart & Task Routing

What is Flaggo?

Flaggo is a lightweight, self-hosted feature flag and runtime configuration platform built in Go. It decouples deployment from release by providing a centralized Control Plane (backend API and management dashboard) where engineers can toggle features, adjust rollout percentages, and trigger instant kill switches in real time. Client applications (Data Plane) poll these rules and evaluate them locally in memory for zero downtime and zero restarts.

Three binaries are built from the Go module: - Backend API (cmd/flaggo): Control plane backend managing flag CRUD, rollout percentages, and kill switches. - Frontend Gateway (cmd/flaggo-web): Management dashboard UI combined with an /api reverse proxy to the backend. - Data Plane Client (examples/client): Example client that polls the control plane, evaluates flags, and prints changes.

Task Routing Map

Use this routing table to navigate the wiki based on your development or operational task:

Task / Goal Relevant Wiki Pages
Understand system architecture & request flows Architecture Overview, Request Flow
Add or modify API endpoints Control Plane API, HTTP Middleware, Flag Domain Model
Modify storage or persistence Storage Layer, Health & Readiness
Change evaluation / rollout logic Flag Evaluation, Flag Domain Model
Configure environment variables Environment Configuration
Run locally, containerize, or manage lifecycle Containerization, Runtime Lifecycle
CI pipelines & test strategy CI Pipeline, Test Strategy
Operate, monitor, or debug Health & Readiness, Metrics & Logging, Frontend Gateway
Data plane client development Data Plane Client

Development Setup & Running Locally

No database is required for local development; the backend defaults to an in-memory store when STORE=memory is specified.

Option A: One Command (Background Stack)

./start.sh          # builds + starts backend, dashboard, client in the background
./start.sh stop     # stops all three

Logs are written to /tmp/opencode/. Access the dashboard at http://localhost:8090.

Option B: Three Terminals

Terminal 1 — Backend API (port 8080):

STORE=memory go run ./cmd/flaggo

Terminal 2 — Frontend Dashboard (port 8090):

PORT=8090 BACKEND_URL=http://127.0.0.1:8080 go run ./cmd/flaggo-web

Terminal 3 — Data-Plane Client:

CONTROL_PLANE_URL=http://127.0.0.1:8080 go run ./examples/client

Using PostgreSQL

To run with PostgreSQL persistence instead of memory:

export DATABASE_URL=postgres://user:pass@localhost:5432/flaggo?sslmode=disable
STORE=postgres go run ./cmd/flaggo

The flags table is initialized automatically upon startup.