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.