Everything you need to ship confidently.
No credit card required
Catch mistakes before your users do.
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.
The timespan value cannot be less than 250 milliseconds
{ "freeShippingMin": 75, "maxWeightKg": 30, "carriers": ["ups", "dhl"], "cutoffHour": "14" }
The value fails JSON schema validation: /cutoffHour Instance type "string" is invalid. Expected "integer".
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.
Both keys resolve to the same value. The old key is purged once every environment has been clear for seven days.
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.
Deliver the right configuration to the right audience.
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.
{ id: "654321", name: "Another User", traits: { region: "Australia", }, }
{ metadata: { appName: "shop-web", appVersion: "1.0.2", }, }
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.
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%.
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.
Know how every value is used.
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.
Notification sent: new-onboarding-flow has not been evaluated in 14 days.
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.
Control who changes what, and automate the rest.
On Sep 6, 2026, 3:15:26 PM by Maria (maria@acme.dev) via Dashboard
Serve value: true
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.
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.
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.
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.
From zero to production ready in 5 minutes.
$ npm install --save @configdirector/client-sdkimport { 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
);