Feature Flagging 2.0

Lekko is building the next generation of feature management, designed for safety, scalability, and seamless developer experience.

Misconfigurations account for 50%+ of software outages.

Misconfigurations account for 50%+ of Software Outages

The problem with legacy feature flags
Costly Incidents
  • Untested code slipped to customers
  • Mistakes that lead to revenue loss
  • Outages caused by misconfigurations
Inflexibility
  • Flags are temporary parts of code
  • Only safe for a small subset of possible use cases
  • Experience is unfriendly to devs
Technical Debt
  • Time spent cleaning up stale flags
  • Unclear webs of code paths
  • Difficulty debugging, predicting, and preventing issues

Lekko solves these problems

A new approach:
dynamic configuration

In-Code Interface

Lekko wraps functions at build time to fetch updated versions at runtime. Decreasing complexity and keeping code behavior traceable.

Validate, Test, Prevent Issues

Lekko changes don't bypass unit tests, validation and CI which will prevent untested code from reaching your customers.

Group & Validate

Create approved configurations, then control who can deploy them to customers. Lekko’s Web UI lets developers hand off daily control to team members safely and simply.

Just wrap functions in your code.

Adding dynamic behavior is as easy as merging code containing your new function. Lekko will mirror the function and make it dynamic allowing you to modify it at runtime.

internal/lekko/flags/flags.go
func getGenerationParams(plan string) *LlmConfig {
	if plan == "enterprise" || plan == "team" {
		return &LlmConfig{
			Model:       "openai-chatgpt4-o",
			Temperature: 0.7,
			TokenLimit:  8192,
		}
	}
	return &LlmConfig{
		Model:       "openai-chatgpt3.5-turbo",
		Temperature: 1.0,
		TokenLimit:  4096,
	}
}
src/lekko/flags.ts
export function getGenerationParams({ plan }: { plan: string }): LlmConfig {
    if (plan === "enterprise" || plan === "team") {
        return {
            model: "openai-chatgpt4-0",
            temperature: 0.7,
            tokenLimit: 8192,
        };
    }
    return {
        model: "openai-chatgpt3.5-turbo",
        temperature: 1.0,
        tokenLimit: 4096,
    };
}
// Whether to use experimental features or not
func getExperimentalEnabled(env string) bool {
  if env == "staging" {
    return true
  }
  return false
}
// Whether to use experimental features or not
func getExperimentalEnabled(env string) bool {
  if env == "staging" {
    return true
  }
  return false
}
// Whether to use experimental features or not
func getExperimentalEnabled(env string) bool {
  if env == "staging" {
    return true
  }
  return false
}
A GIF depicting an engineer creating and updating a dynamic function using lekko. It demonstrates the speed and efficacy of the technology across both the IDE and the web UI.

Update your code live.

Reconfigure your functions at runtime directly in your code or in our user friendly dashboard. With our static analysis and AI to keep things safe, daily changes can be comfortably handed off to other teams.

Supported Frameworks
Use Case
Legacy
Feature Flags
Experimentation Tools
Engineering
Stage safe and controlled feature rollouts to canary test, gather feedback, and manage risks
Set rules defining valid configurations for functions or groups of functions to allow safe hand off to non-engineering teams
Product Management
Define and enforce legitimate configurations for plans, previews, and demos
Efficiently provision and manage customers, plans, and features
Create and test against large user cohorts
Run large scale experiments with detailed analyics and feedback
DevOps
Adjust rate limits and failover mechanisms in real-time
Manage environments, incident response, security controls, and make on the fly operational adjustments
Customer Success
Safely roll back features or modify existing customer accounts to resolve issues quickly and effectively
Oversee and adjust customer entitlements and experience as needed without bothering engineering
Sales
Easily access and understand allowed configurations to support pitches and answer customer questions
Seamlessly provision demos or trials for potential customers
About us
A photograph of Lekko's founder and CEO Konrad Niemiec

Konrad Niemiec

Founder | CEO

The logo for LinkedIn

Dynamic configuration was too powerful to go without

At Uber and Meta, we got to work on the most advanced dynamic code systems ever built.

After moving on, we were shocked how much we missed them. The right tool is transparent — you just do your work without rebuilds, customer incidents, or zombie flags that come back to kill you. Those who’ve tried to build their own tools have found it’s more complex and challenging than they imagined.

Lekko evolves Uber and Meta’s tools for the broader range of companies  with more individualized relationships with the customers, clients and partners to whom they deploy their products. We think once you try it, you won’t want to work without it.

Our Background
The Uber LogoThe Meta LogoThe Splunk logo
Reduce outages

>50% of outages are the result of poorly implemented feature flags

Lower tech debt

Manage configurations with AI assisted tasks

Accelerate products

Spend less time cleaning up flags and more time writing new code

Manage risk

Keep your customers from receiving untested code

FAQ

What’s a lekko?

Named after a Polish word that means “lightly” or “easily,” a lekko is a dynamic function that you insert into your codebase. Lekkos can be grouped, and groups can be nested. There are three classes of lekko:

  • lekko — a function that is changeable at runtime i.e. a feature flag (but more broadly and easily usable).
  • validator — an accessory function that validates the contents or output of a lekko or lekkogroup.
  • Lekkoset — a group of lekkos. It can include other lekkosets.

You manage your lekkos in code or with our web application, which allow you to specify approved configurations of lekkos that can be provisioned by users with permission. Our docs show you how to get started for free.

How does Lekko differ from legacy feature flagging / management?

Lekko is a new approach to shipping quickly without having all the answers. While feature flagging is a primary use case of Lekko, current feature flagging implementations carry a lot of complexity and risk. They create a tradeoff between the benefits of dynamic behavior and the downsides of complexity and technical debt.

Lekko set out to solve these problems.

Is this different from LaunchDarkly, Unleash and other feature flag tools?

While existing feature flagging tools claim to cater to engineers, they often introduce cumbersome workflows, increase the risk of bugs and outages, and impose limitations on the ways engineers can solve problems.

Lekko aims to eliminate these issues, making it easier for engineers to implement dynamic configuration and safer to hand off day to day configuration to other parts of the business.

How do you differ from experimentation tools like Statsig, Split, and Optimizely?

Lekko is not an engine for statistical testing. You can use Lekko to serve different versions of your application to different target groups and collect data, but experimentation tools like Statsig, Split, and Optimizely are designed specifically for running statistically significant A/B tests.

Why can’t I build this myself?

You absolutely can! Companies like Uber, Facebook, LinkedIn, Plaid, and Doordash have done it, investing countless hours and tens of millions of dollars in the process. Building a solid dynamic configuration system involves reading extensive research, making inevitable mistakes, and potentially developing suboptimal solutions.

Once built, you'll also need to dedicate ongoing resources to maintain and update your internal system. Alternatively, you can leverage our expertise and let us handle all of that for you. Allowing you and your team to concentrate on building better software without the overhead of managing complex configuration infrastructure.

To help you get started, we even offer a free self-hosted version of Lekko.

Our investors
The logo for Lux Capital, one of our investors.The logo for Addition, one of our investors.The logo for Box Group, one of our investors.The logo for Abstraction Capital, one of our investors.The logo for SV Angel one of our investors.