// Feature flag infrastructure

Feature flags that run where
your code runs

FlagDrop pushes config files to your S3, GCS, or Azure bucket. Your SDKs evaluate locally. No proxy, no sidecar, no egress of your traffic — ever.

app.ts
flags.config.json
server.py
⌘K
 1import { FlagClient } from '@flagdrop/sdk'
 2
 3// Reads directly from your S3 bucket
 4const flags = new FlagClient({
 5  bucket:      'acme-flags-prod',
 6  environment: 'production',
 7  provider:    'aws',
 8  region:      'us-east-1',
 9  refreshMs:   5000,
10})
11
12// Type-safe evaluation, zero network hops
13const checkout = flags.getBool('new-checkout', false)
14const tier     = flags.getString('plan-tier', 'free')
15const rollout  = flags.getNumber('rollout-pct', 0)
16
17if (checkout) renderNewCheckout()
connected · s3://acme-flags-prod
Deploys toAWS · GCP · Azure
Median eval0.3 ms
Pricing$49 / project / mo
MCP serverBuilt-in
~/docs/how-it-works

Direct-to-bucket. No middlemen.

We push config files. You read locally. There is no proxy to scale, no evaluation service to trust, and no traffic leaving your account. If AWS is up, your flags work.

Control Plane · FlagDrop
Dashboard & MCP

Humans toggle flags. Agents call tools. Every change writes a new config file.

new-checkout
legacy-nav
rollout-pct25
plan-tier'pro'
Data plane · Your cloud
Your storage bucket

Config files live in your account, your region. Versioned, signed, cached at edge.

s3://acme-flags-prod/
├─ production.json2.1kb
├─ staging.json1.8kb
├─ _meta.json0.4kb
└─ .signatures/
Runtime · Your SDKs
Local evaluation

SDKs cache, hot-reload, and evaluate in-process. Median eval: 0.3ms.

// backend
flags.getBool('new-checkout')
  → true  (0.3ms, cache hit)
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ your_infra ← signed_manifest ← push() ← flagdrop_control_plane ← human | mcp_agent | api_token │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────┘
6 reasons / 0 asterisks

Engineered for the
modern stack.

Built by engineers who were tired of paying per-seat for a proxy they didn't want.

F.01live

Your cloud, your data.

Evaluations run inside your AWS, GCP, or Azure account. Config files live in your bucket. We never see your traffic, your users, or your payloads.

→ data_residency(region: "your-region")
F.02flat

$49 flat, per project.

No per-seat. No per-MAU. Unlimited flags, unlimited evals, unlimited team members. Three tiers total. Scale headcount without a procurement review.

→ pricing.model == "flat"
F.03built-in

Agents ship with you.

Built-in MCP server. Claude, Cursor, Windsurf, and any MCP-compatible agent can create, toggle, and roll out flags from the same chat where it writes the code.

→ mcp.tools: create, toggle, rollout, audit
F.040.3ms

Zero-latency, by design.

SDKs read configs from local cache, hot-reloaded from your bucket. No round-trip. No proxy outage can take you down — if AWS S3 is up, your flags work.

→ p99 < 1ms · uptime = storage.uptime
F.053 clouds

Multi-cloud, one workflow.

Push the same config to S3, GCS, and Azure Blob simultaneously. Region-scope per environment. Works with Cloudflare R2, MinIO, and any S3-compatible store.

→ providers: [aws, gcp, azure, r2, minio]
F.06sdks · 7

Separate scoping for frontend.

Backend configs can hold secrets. Frontend configs are public by design. FlagDrop generates both from one source of truth — and never ships a PII rule to the browser.

→ scope: ["server", "client"]
pricing.diff()

Stop paying for
someone else's servers.

Traditional vendors charge per seat and per MAU because they run the eval path. We don't — so we charge a flat rate per project.

Dimension
Traditional vendor
FlagDrop
Where evaluations run
Their servers, their regions
Your cloud, your region
Pricing model
Per-seat + per-MAU
Flat, per-project
10 seats · 100K MAU
≈ $1,200 / mo
$49 / mo
Data residency
Their multi-tenant SaaS
Your account, your region
MCP / AI-native
Not available
First-class, built-in
Backend + frontend scoping
Single config
Separate signed files
Multi-cloud
SaaS-only
AWS · GCP · Azure · R2
$ flagdrop estimate --seats 25 --maus 2MSee full pricing →
time_to_first_flag < 4 min

Five lines to your first flag.

Install the SDK. Point it at your bucket. Ship.

01

Install the SDK

Node, Python, Go, Rust, Swift, Kotlin, or Edge. Same API, same config.

02

Connect your bucket

One-time IAM grant. We verify write access, you keep the key. Rotatable at will.

03

Create a flag

From the dashboard, the CLI, or your AI agent via MCP. Config is pushed in <1s.

04

Read it in code

Type-safe getters for bool, string, number, JSON, and targeting rules.

05

Roll out safely

Gradual percentages, user targeting, scheduled toggles, instant kill-switch.

1import { FlagClient } from '@flagdrop/sdk'
2
3const flags = new FlagClient({ bucket: 'acme-flags-prod' })
4await flags.ready()
5
6if (flags.getBool('new-checkout')) {
7  renderNewCheckout()
8}
$ npm i @flagdrop/sdk2.1kb gzipped · ESM · CJS
your_agent.call("flagdrop.*")

Your coding agent can
ship flags now.

Drop in our MCP server and Claude, Cursor, or Windsurf gets six new tools: create_flag, toggle, rollout, target, rollback, audit.

claude — flagdrop mcpconnected
# You
Roll out new-checkout to 25% of pro users in prod.
# Claude
Calling flagdrop.rollout...
├─ flag: new-checkout
├─ env: production
├─ target: plan == 'pro'
└─ percent: 25
pushed to s3://acme-flags-prod · 0.8s
14 SDKs picked up new config
~/.cursor/mcp.json
{
  "mcpServers": {
    "flagdrop": {
      "command": "npx",
      "args": ["-y", "@flagdrop/mcp"],
      "env": {
        "FLAGDROP_API_KEY": "fd_live_***",
        "FLAGDROP_PROJECT": "acme"
      }
    }
  }
}
// ready to ship

Ship features
with confidence.

Free tier forever. No credit card. 4-minute setup. Works with any bucket you already have.

▲ no credit card · ▲ self-serve · ▲ slack community