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.
Install / Deploy
The docker compose up above builds the dev image from source. For real
deployments, Flagcel publishes a self-contained server (the dashboard,
migrations, and OpenAPI spec are embedded in the binary):
-
Container image (multi-arch, on every release):
docker pull ghcr.io/picunada/flagcel:latest # or docker.io/picunada/flagcel:latest
-
Docker Compose (production-style, pulls the published image): examples/deploy/docker-compose.yml.
-
Helm (OCI chart on GHCR):
helm install flagcel oci://ghcr.io/picunada/charts/flagcel \
--set database.url="postgres://user:pass@host:5432/flagcel?sslmode=require"
-
Prebuilt binaries with checksums on the Releases page.
See Deployment for full instructions and a production
checklist.
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.
charts/flagcel - Helm chart for Kubernetes installs.
docs/src - project documentation.
Roadmap
- Stabilize the published SDKs toward a 1.0 release.
- Add release signing and SBOMs (cosign / syft) to published artifacts.
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.