A/B testing and feature flags you run yourself.
Experimently is an open-source experimentation platform: experiments, feature flags, targeting rules and statistics, deployed on your own infrastructure so the assignment data never leaves it.
Apache-2.0. Both build profiles are the same licence and the same price: none.
Experiments and feature flags
Sticky assignment, gradual rollouts with configurable stages, mutual-exclusion groups and a global holdout, and automated safety rollback on error-rate and latency thresholds.
Targeting that is actually expressive
20+ operators — semantic version comparison, geo-distance, time windows, JSON path and array operations — compiled and cached, with throughput floors checked by a nightly benchmark job.
Statistics beyond a p-value
Frequentist and Bayesian analysis, sequential testing with mSPRT for early stopping, CUPED variance reduction (beta), multi-armed bandits, and dimensional breakdowns with multiple-comparison correction.
SDKs for the stack you have
JavaScript, React, React Native, Edge, Python, Go, Java, Android, iOS, Flutter, Ruby, PHP, .NET and Elixir, plus OpenFeature providers for JavaScript and Python, all MIT-licensed. By default, flag evaluation and experiment assignment happen on the server. The JavaScript and Python SDKs can also evaluate flags locally (beta), tested against cases generated by the server's own evaluator.
Deploy it yourself
Experimently works with AWS: a CDK app deploys it to ECS Fargate, Aurora PostgreSQL and ElastiCache in your own account. Or run a single docker compose stack on one machine. No hosted tier, so nothing to be locked into.
Open, and checkable
The whole platform is Apache-2.0 and the SDKs are MIT. The test suites, the security scans and the release pipeline are in the repository — read them rather than take our word.
Run it locally
Four containers — Postgres, Redis, the API and the dashboard — with the database created and seeded on the way up.
git clone https://github.com/getexperimently/experimently.git
cd experimently
docker compose up -d --waitThen open localhost:3000. The quick start has the default credentials and what to change before anyone else can reach it.