Runtime Config Control
At the Edge
Ship faster with instant feature rollouts and edge compute. Runcfg delivers flags, configurations, and runs your config workers from global edge servers.
No credit card required. Free tier available for everyone*
Building Free and Open Source software?
Contact us to get a free enterprise license. A billing account is required to reach support and request a FOSS enterprise upgrade.
Contact usEdge-Replicated
Your flags and configurations are replicated across edge locations globally. Your users get rapid responses, no matter where they are.
Low Latency
In optimal cases, flags and configurations are served from the edge node closest to your users.
Multiple Edge Locations
When enabled, your configuration and flags are automatically replicated across our global edge network on every change.
99.9% Uptime SLA
Built-in redundancy and automatic failover ensure your applications can evaluate flags & configuration at runtime.
Built for Services and Platforms
Most flag platforms start from the user-facing app: targeting users and running experiments. Runcfg starts from the services and platforms behind it, with flags, configuration, secrets and edge workers managed together in one project.
| Feature | Flagsmith | LaunchDarkly | |
|---|---|---|---|
| Feature Flags | |||
|
Boolean, number and string flags
Kill switches, limits and tuning values for running services
|
Yes | Yes | Yes |
|
Percentage A/B splits
Send a share of traffic down a new code path, sticky per session
|
Yes | Yes | Yes |
|
Counter flags
Atomic counters shared by every instance of a service
|
Yes | No | No |
| Configuration | |||
|
Change values without a redeploy
Tune running services from the dashboard
|
Yes | Yes | Yes |
|
Configuration separate from flags
Flags are checked from memory on every request. Config is a named JSON or YAML document with full version history, loaded when a service starts or reloads, so it stays off the request path
|
Yes |
Partial:
Config stored as flag values
|
Partial:
Config stored as JSON flag variations
|
| Secrets | |||
|
Encrypted secrets storage
Database passwords and API keys, encrypted with per-project RSA-2048 keys and served by the same SDK as your config
|
Yes | No | No |
| Edge | |||
|
Global edge delivery
Serve flags and config from locations close to your services
|
Yes | Yes | Yes |
|
Run your own code at the edge
WebAssembly workers on our edge network, with your flags and config injected as environment variables
|
Yes | No |
No:
SDKs for third-party edge platforms
|
Also built in for platform teams
See every flag and config name your services ask for that doesn't exist yet.
Only your own servers can read a project's flags, config and secrets.
Response time and error rate for every project's SDK traffic, per hour.
Comparison based on each vendor's public documentation as of September 2026. Secrets, workers and IP allowlists require a Max or Enterprise plan. Flagsmith and LaunchDarkly are trademarks of their respective owners.
Config Workers
Deploy config workers to our global edge network. Run compute close to your users with automatic flag and config injection.
- WASM Runtime — Write workers in Rust, Go, C++, or any language that compiles to WebAssembly
- Auto-Injected Flags — Project flags and configs automatically available as environment variables
- Secure Sandbox — Isolated execution with configurable memory limits and timeouts
- No SDK Required — Workers access flags via standard environment variables
use std::env;
fn main() {
// Flags are auto-injected as env vars
let dark_mode = env::var("RUNCFG_FLAG_DARK_MODE")
.unwrap_or("false".into());
let max_items = env::var("RUNCFG_FLAG_MAX_ITEMS")
.unwrap_or("10".into());
// Access request info
let method = env::var("REQUEST_METHOD").unwrap();
let path = env::var("REQUEST_PATH").unwrap();
// Write HTTP response
println!("STATUS 200");
println!("Content-Type: text/plain");
println!();
println!("Hello from the edge!");
}
package main
import (
"fmt"
"os"
)
func main() {
// Flags are auto-injected as env vars
darkMode := os.Getenv("RUNCFG_FLAG_DARK_MODE")
if darkMode == "" {
darkMode = "false"
}
maxItems := os.Getenv("RUNCFG_FLAG_MAX_ITEMS")
if maxItems == "" {
maxItems = "10"
}
// Access request info
method := os.Getenv("REQUEST_METHOD")
path := os.Getenv("REQUEST_PATH")
// Write HTTP response
fmt.Println("STATUS 200")
fmt.Println("Content-Type: text/plain")
fmt.Println()
fmt.Println("Hello from the edge!")
}
#include <iostream>
#include <cstdlib>
#include <string>
int main() {
// Flags are auto-injected as env vars
const char* dark_mode_env = std::getenv("RUNCFG_FLAG_DARK_MODE");
std::string dark_mode = dark_mode_env ? dark_mode_env : "false";
const char* max_items_env = std::getenv("RUNCFG_FLAG_MAX_ITEMS");
std::string max_items = max_items_env ? max_items_env : "10";
// Access request info
std::string method = std::getenv("REQUEST_METHOD");
std::string path = std::getenv("REQUEST_PATH");
// Write HTTP response
std::cout << "STATUS 200" << std::endl;
std::cout << "Content-Type: text/plain" << std::endl;
std::cout << std::endl;
std::cout << "Hello from the edge!" << std::endl;
return 0;
}
Integrate in Minutes
A few lines of code is all it takes.
import "github.com/runcfg/sdk-go"
client := runcfg.New("your-api-key")
// Get a feature flag
enabled := client.Bool("new-checkout", false)
// Get configuration
config := client.Config("app-settings")
use runcfg::Client;
let client = Client::new("your-api-key");
// Get a feature flag
let enabled = client.bool("new-checkout", false);
// Get configuration
let config = client.config("app-settings");
#include <runcfg/runcfg.hpp>
runcfg::Client client("your-api-key");
// Get a feature flag
bool enabled = client.get_bool_default("new-checkout", false);
// Get configuration
auto config = client.get_config("app-settings");
import { Runcfg } from '@runcfg/sdk';
const client = new Runcfg('your-api-key');
// Get a feature flag
const enabled = client.bool('new-checkout', false);
// Get configuration
const config = client.config('app-settings');
Ready to ship faster?
Join thousands of developers who use Runcfg to manage feature flags and configuration at the edge.
*All tiers include limited flag evaluations/month