Everything you need to ship confidently.

Remote config and feature flags with the guardrails built in. Typed values, validated changes, safe renames, and the delivery controls you expect.

No credit card required

Safety built in, not bolted on

Catch mistakes before your users do.

Most config mistakes are small: a value one digit off, a field missing from a JSON blob, a URL without HTTPS. ConfigDirector checks every change against the rules you define and rejects the ones that would break production.
Fine-grained types and validations

Deliver the configuration values your application needs.

Enforce validation and reduce application errors when values are updated. Every config has a real type: Integer, Float, Timespan, URL, Enum, JSON and more. Add the constraints your application relies on, like minimums and maximums, HTTPS-only URLs, or an allowed set of values. ConfigDirector enforces them on every change, in every environment, before anything is saved.

  • Values arrive in your code as the right type, not a string to parse.
  • Validations apply everywhere a value can change: dashboard, admin API, Terraform.
  • Rejected changes leave production exactly as it was.
api-timeout
Settings
ConfigTimespanPermanent
Timespan values must be integers between 250 and 5000 milliseconds
Targeting rules Production
Serve to all200milliseconds

The timespan value cannot be less than 250 milliseconds

Serve to all
{
  "freeShippingMin": 75,
  "maxWeightKg": 30,
  "carriers": ["ups", "dhl"],
  "cutoffHour": "14"
}

The value fails JSON schema validation: /cutoffHour Instance type "string" is invalid. Expected "integer".

JSON Schema validation

Don't have a bad day. JSON Schema validations can prevent costly configuration update mistakes.

JSON configs are flexible, which is exactly what makes them risky. Attach a JSON Schema to any JSON config and every update is checked against it. A missing field, a wrong type, or an unexpected key is rejected before it's saved, so the shape your code expects is the shape it gets.

onboarding-v2Rename in progress
new-onboarding-flowonboarding-v2
EnvironmentOld key evaluations, 7 daysStatus Test
Clear Staging
Clear Production
In use

Both keys resolve to the same value. The old key is purged once every environment has been clear for seven days.

Safe renamingOnly on ConfigDirector

Rename a config that's already in use. Nothing breaks.

A renamed config answers to both the old key and the new one, so your applications keep working while you update references in code at your own pace. Once the old key hasn't been evaluated in any environment for seven days, it's retired automatically.

No duplicating the config under a new name, no keeping two copies in sync, no guessing when it's safe to delete the old one.

Targeting rules & rollouts

Deliver the right configuration to the right audience.

Reduce release risk with phased feature rollouts. Every config and feature flag can be targeted, split, and rolled out gradually, per environment.
Production
Rule #1IF context's trait /plan equals "enterprise"Serve value: true
Rule #2IF 20% of contexts by identifierServe value: true
Otherwisefalse

Targeting rules

Combine conditions into ordered rules with a default for everyone else. Rules are defined per environment, so what you test in staging is what you ship to production.

User context
{
  id: "654321",
  name: "Another User",
  traits: {
    region: "Australia",
  },
}
App metadata
{
  metadata: {
    appName: "shop-web",
    appVersion: "1.0.2",
  },
}
Ifcontext.traits.regionequals"Australia"
Andmetadata.appVersion>="1.0.2"
ThenServetrue

User context targeting

Target by any attribute your application knows: user ID, name, plan, region, or any custom trait passed through the SDK. Rules can also match on application metadata like name and version.

Day 1
10%
Day 3
25%
Day 7
60%
Day 10
100%

Same users stay in the treatment as the percentage grows.

Gradual rollouts

Roll out any config or flag to a percentage of users, then increase it as confidence grows. Assignment is consistent: the users in your first 10% stay in the treatment when you move to 20%, 50%, and 100%.

checkout-layoutExperiment
control 50% one-page 25% express 25%

A/B testing

Experiment configs let you enumerate variations of a value. Split traffic between them by percentage, or assign variations by rule, and read the result in your code like any other config.

Visibility

Know how every value is used.

payment-providerEvaluations · last 24h
stripe 71%adyen 29%web 2.14.0 · ios 5.3
Telemetry & reporting

Monitor how configs and feature flags are evaluated. Fine-grained visibility to help you validate and adjust.

See how often each config is evaluated, which values are served, and from which applications and versions. Confirm a rollout is doing what you expect before you widen it.

new-onboarding-flowTemporaryReady to Archive
holiday-bannerTemporaryActive
api-timeoutPermanentActive

Notification sent: new-onboarding-flow has not been evaluated in 14 days.

Cleanup notifications

Know when a flag is ready to be removed.

Classify configs as temporary or permanent. When a temporary flag is no longer evaluated anywhere, its status updates and you can be notified, so stale flags leave your codebase instead of piling up.

Governance & automation

Control who changes what, and automate the rest.

On Sep 6, 2026, 3:15:26 PM by Maria (maria@acme.dev) via Dashboard

Updated targeting rules in Production
Added new conditional rule at position 1
IF context's trait /plan equals "enterprise"
Serve value: true
Updated default rule from true to false

Audit log

Every change to a config or flag is recorded: who, what, when, from where, and in which environment. Any user can review the history, so a surprising value is never a mystery.

RoleReader
Reader
Writer
Administrator
Owner

Role-based access control

Assign each user a role with the access they need: Reader, Writer, Administrator, or Owner. Unlimited seats on every plan, so nobody shares a login.

Generate API Token
Nameci-pipelineExpires In1 year
Environments
ReadCreateUpdateDelete
Configs
ReadCreateUpdate Targeting RulesArchive
Contexts
ReadDelete

Admin API

Manage everything programmatically. API tokens carry fine-grained permissions per resource and an expiration date, so a pipeline gets exactly the access it needs and nothing more.

main.tf
resource "configdirector_config" "api_timeout" {
  project_id = configdirector_project.shop.id
  key        = "api-timeout"
  role       = "config"
  lifetime   = "permanent"
  type       = "timespan"

  type_options = {
    unit = "milliseconds"
    min  = 250
    max  = 5000
  }
}

Terraform & OpenTofu providers

Define projects, environments, configs, and targeting rules as code. Review changes in pull requests and apply them with the same tooling as the rest of your infrastructure.

Intuitive SDKs

From zero to production ready in 5 minutes.

Back-end, web, mobile, we've got you covered. Install, initialize, read a value. Types, defaults, and live updates are handled for you.
$ npm install --save @configdirector/client-sdk
app.ts
import { createClient } from "@configdirector/client-sdk";
export const client = createClient("YOUR-CLIENT-SDK-KEY");
await client.initialize();

const enabled = client.getValue(
  "new-onboarding-flow",
  false // default fallback
);

Move fast. Don't break things.

Start for free, upgrade when you need it. No credit card required.