Release control as a function

Decide with
explicit logic.

Define feature access as code. shipd evaluates users, environments, and rollout rules without hiding the decision.

decisionf(u, e, t) → {0, 1}

user × environment × time

f(mira, production, now)= 1

Local evaluation

0 network hops

Deterministic rules

Full decision trace

01 / Inspect the decision

No black box between
the rule and the result.

Change the inputs below. The result updates from the same conditions your application evaluates.

Live evaluationnew-checkout
request_8f31c
01country{ US, CA, GB }true
02plan=protrue
03bucket(user)<rollouttrue

Serve new-checkout to this request

TRUE
02 / One definition

The logic starts
in your codebase.

Types, defaults, variants, ownership, and lifecycle stay reviewable beside the software they control.

shipd.config.ts
01 export const flags = defineFlags({
02   newCheckout: flag.boolean({
03     default: false,
04     rules: [{
05       when: country.in("US", "CA", "GB"),
06       and: plan.eq("pro"),
07       rollout: 42.7,
08       serve: true,
09     }],
10   }),
11 });
Definition valid1 rule · 2 variants
03 / Evaluation path

From definition
to decision.

01

Define

Model flags and targeting rules with typed primitives in your repository.

02

Review

See the exact environment plan in CI before a definition reaches production.

03

Publish

Ship a signed, versioned snapshot to every connected runtime.

04

Evaluate

Resolve each request locally from explicit inputs and deterministic rules.

04 / Environment plan

Know what changes before it changes.

Every pull request produces a readable plan across environments. Review the audience, rollout, and resulting definition together.

See the Git workflow
new-checkoutplan_7a3f
environmentcurrentproposedstatus
development100%100%unchanged
previewinternalinternal + betachange
production31.4%42.7%change
2 changes ready to publish
05 / Request path

Fast enough to sit
inside every request.

evaluationin-process

The SDK resolves the snapshot locally. No extra hop on the request.

Decision traceeval_f412
Snapshot loaded
Context normalized
Rule 01 matched
Bucket 0.314 < 0.427
TRUEexplicit outcome

The next release can be explicit.

Put production
under definition.

Start with one flag