Open source · MIT

Lift

A self-hosted platform for feature flags and A/B experiments: Wilson intervals, a z-test and guardrail metrics that raise the alarm themselves.

v1.0.0 Experiments whose numbers add up
Laravel 13PHP 8.5PostgreSQL 18BladeTailwind 4Vite 8
Lift

An arrow pointing up is not an answer

Every A/B tool eventually shows you two numbers and a green arrow. The arrow is the easy part. The hard part is everything it hides: is the sample big enough, do the confidence intervals overlap, did the winning variant quietly break something else?

Lift is built so that a decision can be defended a month later. The result screen states a verdict in one line, then shows the work behind it: the Wilson interval, the p-value, the probability of beating control, how much data the test still needs and what happened to the metrics that were never supposed to move.

What is inside

Deterministic buckets

SHA-256 of «salt:flag:user» into 10,000 buckets. The same person gets the same variant on every request and every server, with no session, no lookup table and no database round trip.

Rules that explain themselves

Conditions on any attribute, joined by AND inside a rule, evaluated top to bottom between rules. The answer carries the variant, the reason and the index of the rule that fired, so «why does this person see the old button» takes one form field.

Statistics without packages

Wilson intervals, a two-proportion z-test, a Beta-posterior probability to beat control and sample size estimation, written by hand and checked against textbook values, including Moro's inverse normal.

Guardrail metrics

Metrics that may not get worse even when the primary one grows. A background job writes a significant regression into the audit log by itself, and the screen shows it in red next to the verdict: more orders, but refunds grew faster.

Idempotent rollup

A person counts once per day per variant, and the job rewrites the day instead of adding to it. Late events simply correct the numbers on the next run; the screens read only the rollup and stay instant.

SDK API

Two endpoints: fetch configuration, post events in batches of up to 500. A key belongs to an environment, configuration is cached for ten minutes and dropped the moment a flag is saved.

Screenshots

Results: verdict, intervals and the guardrail on one screen
Results: verdict, intervals and the guardrail on one screen
A flag: rollout, targeting rules and a check on one real person
A flag: rollout, targeting rules and a check on one real person
Intervals on a shared axis — the overlap is visible at a glance
Intervals on a shared axis — the overlap is visible at a glance
Audit log: who changed what, and when
Audit log: who changed what, and when
SDK keys per environment and the two requests to connect
SDK keys per environment and the two requests to connect
Dark theme
Dark theme

Installation

git clone https://github.com/dripips/lift.git cd lift docker compose up --build

Have a project or idea?

Write to me and we will talk the task through.