Skip to main content
darkship
Log in Start free

Feature flags for dev teams

Ship dark.Reveal onyour terms.

Simple, fast feature flags with predictable pricing. Flags are evaluated inside your process, so a toggle costs you microseconds, not a network hop.

  • Local evaluation
  • Fail-static by design
  • Flat plans, no overage
web-appprod
new-checkoutSingle-page checkout · boolean
OFF
Rollout0%
checkout.tslocal evaluation
const on = await client.boolean(
  'new-checkout', { key: userId }, false
);
u_1042bucket 07.4false
u_2210bucket 38.1false
u_3391bucket 81.6false
poll → 304 Not Modified · v1420 B body

Simple

Six flag types, one rule model.

Boolean to JSON, targeted by the same conditions and segments.

Fast

Decided in your process.

The SDK holds the ruleset in memory. No request sits on your hot path.

Predictable

Flat plans. No overage.

Not per seat, not per user, not per evaluation. You know the invoice in advance.

01 Hybrid evaluation

The decision happens next to your code.

Server SDKs download a versioned ruleset and evaluate locally. They revalidate cheaply with ETags, and they keep serving if we cannot be reached.

Schematic · server SDK path
You

Console & API

Edit a flag. We build a complete snapshot of the environment’s rules.

last publishv142
Control plane

Ruleset CDN

Versioned snapshot served with an ETag.

ruleset v142
Your servers

SDK · local eval

In-memory rules. Decisions never leave the process.

servingv142 (current)
evaluations18,402

01 · Local evaluation

Zero network on the hot path

Rules, segments and rollouts run in-process. Percentage buckets are deterministic, so a user lands in the same variation on every SDK.

02 · ETag polling

A 304 is nearly free

SDKs poll with If-None-Match. Unchanged rulesets return no body; changed ones swap in atomically.

03 · Fail-static

Down for us is not down for you

If the control plane is unreachable the SDK keeps the last good ruleset. Try the outage button above.

02 Flag types

More than on and off.

boolean
truenew-checkout · on / off, with percentage rollout

Kill switches, dark launches, gradual rollouts.

evaluate.js
const on = await client.boolean('new-checkout', ctx, false);

03 Targeting & rollouts

Lists and rules are read top to bottom.

First match wins, otherwise the default. Try an email in any casing, or a group, and watch the lists react. This is the same logic the SDK runs.

Evaluation context

1target list: email is one of [ana@acme.com, bo@acme.com]no match
2target list: groups has any of [beta-testers, acme-staff]no match
3plan equals "business"no match
4country in [BR, PT] and in_segment beta-testersno match
5rollout by key no match

04 Privacy

We never store your users’ context.

Who your users are is evaluated in your process. What we keep are anonymous counters, so we can bill you and show usage.

Stays in your process

  • user.keyu_8841
  • user.emailana@acme.com
  • countryBR
  • planpro
  • custom attributes…

Reaches darkship

  • flag_keynew-checkout
  • variationon
  • count / hour12,480
  • sdk_versionjs-0.9.1

Details in the privacy policy and the telemetry post. LGPD and GDPR-style rights are supported.

05 SDKs

Three lines to your first flag.

app.ts
import { createClient } from '@darkship/sdk';

const client = await createClient({ sdkKey: process.env.DARKSHIP_KEY });
const on = await client.boolean('new-checkout', { key: user.id, plan: user.plan }, false);

06 Pricing

Flat plans. No overage.

Priced by what you use, not by who is using it. Compare plans in detail.

Free

$0
1M requests/mo25 flags3 seats7 days audit log
See Free

Pro

$29/mo
25M requests/mo250 flags10 seats90 days audit log
See Pro

Business

$149/mo
250M requests/mo2000 flags50 seats1 year audit log
See Business

Enterprise

Contact
SSO and custom contracts are out of the MVP scope
Talk to us

Illustrative prices (USD). Final numbers must match the Stripe products before launch.

07 FAQ

Straight answers.

Your app keeps working. Server SDKs hold the last good ruleset in memory and keep evaluating locally (fail-static). Billing or quota problems never switch your flags off either: we fail open.

Ship dark. Reveal on your terms.

Create a project in a minute. The Free plan needs no card.