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.

Feature flag best practices
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
For

Engineering teams that want flags in git.

shipd is for teams who keep flag keys typed beside the code they gate, review environment plans in pull requests, and evaluate each request locally—not for teams that need a dashboard-first platform.

∴

The next release can be explicit.

Put production
under definition.

Start with one flag