Self‑hosted feature flags. One binary, Postgres, and a UI. No cloud, no vendor lock‑in
  • HTML 63.3%
  • Go 36.1%
  • Dockerfile 0.6%
Go to file
ibotzhub 1c03e61b4f README: clone URL for hexed
Made-with: Cursor
2026-03-10 10:31:28 -07:00
cmd/server Initial commit: FlagForge self-hosted feature flags 2026-03-06 09:34:54 -08:00
internal Initial commit: FlagForge self-hosted feature flags 2026-03-06 09:34:54 -08:00
migrations Initial commit: FlagForge self-hosted feature flags 2026-03-06 09:34:54 -08:00
ui Initial commit: FlagForge self-hosted feature flags 2026-03-06 09:34:54 -08:00
.gitignore Initial commit: FlagForge self-hosted feature flags 2026-03-06 09:34:54 -08:00
docker-compose.yml Initial commit: FlagForge self-hosted feature flags 2026-03-06 09:34:54 -08:00
Dockerfile Initial commit: FlagForge self-hosted feature flags 2026-03-06 09:34:54 -08:00
go.mod Initial commit: FlagForge self-hosted feature flags 2026-03-06 09:34:54 -08:00
go.sum Initial commit: FlagForge self-hosted feature flags 2026-03-06 09:34:54 -08:00
LICENSE Initial commit: FlagForge self-hosted feature flags 2026-03-06 09:34:54 -08:00
README.md README: clone URL for hexed 2026-03-10 10:31:28 -07:00

FlagForge

self hosted feature flags. no cloud, no vendor lock, no four hundred dollar a month invoice

docker compose up -d

done. you have a flag service.

why this exists

launchdarkly costs a fortune. unleash is heavy. flagsmith wants you to run k8s. flagforge is one go binary, postgres, and a UI. does one thing

FlagForge LaunchDarkly Unleash
self-hosted yes no yes
single binary yes no no
gradual rollout yes yes yes
targeting rules yes yes yes
audit log yes yes yes
price free free or $
setup 2 min 30 min 1 hr

features

toggle flags on and off per project. targeting rules with eq, neq, in, nin, contains, prefix. gradual rollouts with FNV bucketing so same user same result. projects for separate apps or envs. audit log for every change. SSE so clients can subscribe instead of polling. dashboard to create edit toggle set rules. tiny SDK, plain HTTP, no deps, any language

quick start

docker compose (easiest)

git clone https://git.hexed.systems/lifelessai/flagforge
cd flagforge
docker compose up -d

API on 8080, dashboard on 5173

or run locally: start postgres, apply migrations/001_init.sql, run the server with DATABASE_URL and ADDR. see the compose file for the shape

API

all SDK calls need X-API-Key with your project key

evaluate one flag: POST /sdk/v1/evaluate with flag_key and context. you get enabled and reason (disabled, rule_match, rollout, default). bulk: POST /sdk/v1/evaluate/bulk with flag_keys and context. all flags for caching: GET /sdk/v1/flags

targeting rules

evaluated in order, first match wins. eq, neq, in, nin, contains, prefix. examples: plan eq "pro", country neq "CN", plan in ["pro","enterprise"], email contains "@acme.com", user_id prefix "internal_"

rollouts

percentage plus sticky key (e.g. user_id). FNV hash so deterministic, no db hit per request. same user same result. roll 0 to 100 at your pace

SDK

its just HTTP. POST to evaluate with JSON, read enabled. go, js, python, whatever. no magic SDK required

config

DATABASE_URL for postgres. ADDR for listen, default :8080

roadmap

multivariate flags, flag dependencies, scheduled changes, webhooks on toggle, import from launchdarkly JSON, official SDK packages, eval counts, SSO for the dashboard. PRs welcome

contributing

clone, docker compose up postgres, go run ./cmd/server, open the ui

license

MIT