kcl is a free, open source cloud infrastructure management project written in Rust and released under Apache-2.0. It has 2,415 GitHub stars, 170 forks and 19 open issues, and was last pushed 3 days ago. On this registry it ranks #34 of 43 tracked projects in Cloud Infrastructure Management, with 5 head-to-head comparisons available.

What is kcl?

KCL is an open-source, constraint-based record and functional language, hosted as a CNCF Sandbox project and licensed under Apache-2.0, for platform engineers, DevOps teams, and cloud-native practitioners who need to write, validate, and manage complex configuration without hand-maintaining raw YAML or JSON.

What it is

KCL is a programming language and compiler implementation, written in Rust and C, that lives in the cloud-native ecosystem and targets configuration as its primary domain. It combines a static type system, schema-based modeling, rule constraints, and a functional style derived from high-level languages such as Python and Golang, with an independent spec-driven design covering syntax, semantics, runtime, and system modules. The core repository ships the language implementation and the API surface that multilingual SDKs and editor tooling build on.

The concrete problem it solves is the maintenance burden of large, environment-specific configuration. Instead of writing and duplicating low-level static configuration data by hand, teams define Schema-centric types, express logic and policy in Config, Lambda, and Rule constructs, and let KCL generate the output formats they already consume, such as JSON and YAML. The specific thing it replaces is unmodeled, boilerplate-heavy static configuration that cannot be checked before deployment. Constraints and rules validate data automatically, and an automatic merge mechanism combines isolated configuration blocks so one set of sources can serve many environments.

Key capabilities

  • Generates low-level static configuration such as JSON and YAML, and integrates with existing data rather than replacing it.
  • Reduces boilerplate through schema modeling, with configuration expressed through Config, Schema, Lambda, and Rule.
  • Enforces stability with a static type system, constraints, and validation rules applied automatically to configuration data.
  • Merges isolated configuration blocks automatically, scaling one configuration across different environments.
  • Mutates or validates Kubernetes resources through the kubectl-kcl-plugin cloud-native plugin.
  • Reaches automation through CRUD APIs, multilingual SDKs, and the kcl-plugin language plugin, with compilation to native code and WASM.
  • Ships developer tooling in the kcl CLI for Format, Lint, Test, Vet, Doc, and package management, alongside multiple IDE extensions.
  • Supports ecological API specifications including OpenAPI through kcl-openapi, Kubernetes CRD, and the Kubernetes Resource Model (KRM) spec.

Who users it and how

  • Platform engineering teams use KCL as the platform language for delivering modern applications with KusionStack.
  • Teams running GitOps adopt its gradient automation scheme to organize, unify, and manage large configurations without side effects.
  • Operators managing the same workload across many environments use isolated configuration blocks plus the automatic merge mechanism.
  • Kubernetes users add the kubectl-kcl-plugin to mutate or validate manifests inside an existing workflow.
  • Organizations with governance requirements benefit from a domain-oriented language with no system-level functions such as native threads and IO, keeping noise and security risk low.

Getting started

Installation follows the Installation section of the official documentation at kcl-lang.io, after which the kcl CLI provides the run, format, lint, test, vet, and doc commands. The kubectl-kcl-plugin is the entry point for Kubernetes manifest work.

How it compares

The facts provided name no paid products that this project replaces, and no directly comparable tools are named either. KCL therefore stands alone in this registry on the basis of the available information.

When to use it — and when not to

KCL is a language and compiler toolchain rather than a hosted service, so adoption means learning a new configuration language and maintaining its toolchain and modules, and the facts name no database, storage layer, or SMTP dependency that a self-hoster would otherwise have to operate. Teams whose needs stop at a handful of plain YAML files, or who cannot invest in schema and constraint modeling, should not pick it. The registry entry shows an active repository with 19 open issues and a recent push, but the README excerpt available here is truncated partway through the features list, so readers should consult kcl-lang.io for current installation and release details.

project readme (upstream, from github) — read inline

KCL: Constraint-based Record & Functional Language

English | 简体中文

Introduction | Features | What is it for | Installation | Documentation | Contributing

Introduction

KCL is an open-source, constraint-based record and functional language that enhances the writing of complex configurations, including those for cloud-native scenarios. With its advanced programming language technology and practices, KCL is dedicated to promoting better modularity, scalability, and stability for configurations. It enables simpler logic writing and offers ease of automation APIs and integration with homegrown systems.

What is it for?

You can use KCL to

Features

  • Easy-to-use: Originated from high-level languages ​​such as Python and Golang, incorporating functional language features with low side effects.
  • Well-designed: Independent spec-driven syntax, semantics, runtime and system modules design.
  • Quick modeling: Out-of-the-box modules and Schema-centric configuration types and modular abstraction.
  • Rich capabilities: Configuration with type, logic and policy based on Config, Schema, Lambda, Rule.
  • Stability: Configuration stability is achieved through a static type system, constraints, and rules.
  • Scalability: High scalability is assured with an automatic merge mechanism of isolated config blocks.
  • Fast automation: Gradient automation scheme of CRUD APIs, multilingual SDKs, and language plugin
  • High performance: High compile-time and runtime performance using Rust & C, and support compilation to native code and WASM.
  • API affinity: Native support for ecological API specifications such as OpenAPI, Kubernetes CRD, Kubernetes Resource Model (KRM) spec.
  • Developer-friendly: Friendly development experiences with rich language tools (Format, Lint, Test, Vet, Doc, package management tools etc.), and multiple IDE extensions.
  • Safety & maintainable: Domain-oriented, no system-level functions such as native threads and IO, low noise and security risk, easy maintenance and governance.
  • Rich multi-language SDK: Rust, Go, Python, .NET, Java and Node.js SDKs meet different scenarios and application use prelude.
  • Integrations: Abstract, mutate and validate manifests through Kubectl KCL Plugin, Kustomize KCL Plugin, Helm KCL Plugin, KPT KCL SDK or Crossplane KCL Function.
  • Production-ready: Widely used in production practices of platform engineering and automation at Ant Group.

How to choose?

A detailed feature and scenario comparison is here.

Installation

For more information about installation, please check the Installation Guide on the KCL official website.

Documentation

Detailed documentation is available at KCL Website

There is also a very nice Devin generated document available at deepwiki.

Contributing

See Developing Guide. You can also get started by opening the project in GitHub Codespaces.

Open in GitHub Codespaces

Community

See the community for ways to join us.

License

FOSSA Status

Frequently asked questions

Is kcl free to use?

kcl is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does kcl do?

KCL Programming Language Core and API (CNCF Sandbox Project). https://kcl-lang.io

What is kcl written in?

kcl is primarily written in Rust. Its source is publicly available at https://github.com/kcl-lang/kcl, and it has 2,415 GitHub stars.