Docs
One project, per-environment keys, and an evaluate endpoint that behaves like a static file.
Create a project
curl -s -X POST http://localhost:8112/api/projects \
-H "Content-Type: application/json" \
-d '{"email":"you@app.dev","name":"My App"}'
# response includes your owner token and env_key
Each environment gets its own public
env_key. The owner token authorizes flag writes; the env key only reads.
Evaluate flags
# full flag map for the environment
curl http://localhost:8112/v1/flags/ENV_KEY
# a single value
curl http://localhost:8112/v1/flags/ENV_KEY/new-checkout
Responses carry
Cache-Control: max-age=30,
so any CDN in front absorbs traffic and origin load stays near zero.
Client-side toggles
const flags = await fetch(
"http://localhost:8112/v1/flags/ENV_KEY"
).then((r) => r.json());
if (flags["new-checkout"]) initCheckout(); The SDK is one fetch with no dependencies. Env keys are safe to ship to browsers: they can read flag values, nothing else.
Gradual rollouts
Flag values accept JSON objects, so a rollout looks like
{ "enabled": true, "rollout": 0.25 }.
Your client buckets deterministically (user id hash) and compares against
the rollout fraction.
Plan limits
| Free | Pro $19/mo | Team $49/mo | |
|---|---|---|---|
| Environments | 2 | 10 | 25 |
| Flags | 10 | unlimited | unlimited |
| Evaluations / mo | 50k | 1M | 5M |