flagcel

module
v0.0.0-...-580b6da Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 17, 2026 License: Apache-2.0

README

Flagcel

Self-hosted feature flags with CEL-based targeting rules.

Status: experimental. Flagcel is early in development. The API, storage schema, and SDK behavior may change without notice. Pin a commit if you depend on it.

What It Is

Flagcel is a feature flag service designed to run in your own infrastructure. It ships as a Go service backed by Postgres, includes an admin dashboard, exposes an HTTP API, and supports OpenFeature SDK providers.

Targeting rules are written in CEL, the same expression language used by projects like Kubernetes and Envoy. A rule can use application context directly:

user.country == "US" && request.path.startsWith("/checkout")

Why

Most feature flag systems either depend on a hosted SaaS control plane or introduce a custom rule language. Flagcel keeps the control plane self-hosted and uses a small, sandboxed expression language that is already widely used in infrastructure software.

Project Shape

  • Server: Go HTTP service with Postgres persistence.
  • Targeting: CEL expressions plus deterministic percentage rollouts.
  • Dashboard: SvelteKit admin UI embedded into the Go binary for production builds.
  • SDKs: OpenFeature providers for Go, JS/TS, and Python.
  • Evaluation core: Shared Go evaluator used by the server and native Go SDK.
  • API docs: OpenAPI spec served by the running service.

Quickstart

docker compose up

This starts Postgres and the Flagcel service on http://localhost:8080. The local Docker setup bootstraps an admin account:

admin@localhost / secret

See Quickstart for creating a flag, evaluating it, and using the local API.

Documentation

Repository Layout

  • cmd/server - server entrypoint and migration command.
  • internal - API handlers, services, config, storage, and engine integration.
  • evalcore - shared flag evaluation library.
  • web - SvelteKit dashboard.
  • sdks - OpenFeature providers.
  • examples - runnable SDK examples.
  • docs/src - project documentation.

Roadmap

  • Stabilize the published SDKs toward a 1.0 release.
  • Add a Helm chart for Kubernetes installs.
  • Expand production deployment guidance.

Contributing

Issues and PRs are welcome. Before opening a PR, run:

go build ./...
go test ./...

Development setup details live in Development.

License

Apache 2.0 - see LICENSE.

Directories

Path Synopsis
cmd
server command
evalcore module
internal
api/http/debug
Package debug runs net/http/pprof on a separate listener so profiling endpoints are never exposed on the public API.
Package debug runs net/http/pprof on a separate listener so profiling endpoints are never exposed on the public API.
sdks
go module
Package web embeds the SvelteKit static build and serves it as a SPA.
Package web embeds the SvelteKit static build and serves it as a SPA.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL