Configuration Language website screenshot

Configuration Language

Configuration languages are formats and DSLs used to express the desired state of software systems, infrastructure, applications, and APIs. Configuration languages span a spectrum from simple text-based formats (INI, JSON, YAML, TOML) to typed and templated formats (HCL, Cue, Dhall, Pkl, Jsonnet, KDL) that support imports, schemas, and validation. The choice of configuration language shapes how teams describe Kubernetes manifests, Terraform infrastructure, OpenAPI specs, CI pipelines, and developer environments.

9 APIs 0 Features
ConfigurationDSLInfrastructure as CodeSchemasSerializationTemplatingYAML

APIs

YAML

YAML Ain't Markup Language is a human-friendly data serialization language. YAML 1.2 is widely used for configuration in Kubernetes, OpenAPI, GitHub Actions, Ansible, and many o...

JSON

JavaScript Object Notation is a lightweight data interchange format defined by RFC 8259 and ECMA-404. JSON is heavily used as a configuration format in Node.js (package.json), V...

TOML

Tom's Obvious, Minimal Language is a config file format designed to be human-readable and unambiguous. TOML is used by Cargo for Rust projects, Python packaging via pyproject.to...

HCL

HashiCorp Configuration Language is a structured configuration language designed for human authoring of complex configurations. HCL underpins Terraform, Packer, Vault, Consul, a...

Cue

Cue is an open source data validation language with a powerful type system and unification semantics. Cue is used to validate, generate, and transform configuration for Kubernet...

Dhall

Dhall is a programmable configuration language that adds types and functions to JSON and YAML. Dhall expressions are total (always terminate) and remote imports are content-addr...

Pkl

Pkl is Apple's open source configuration language with a focus on type safety, composition, and runtime templating. Pkl can render to YAML, JSON, plist, and other formats and of...

Jsonnet

Jsonnet is a data templating language designed for elegant generation of JSON and YAML. It is used heavily for Kubernetes manifests, Grafana dashboards (Grafonnet), and Bazel-ba...

KDL

KDL is a node-oriented document language combining the readability of YAML and TOML with a unique tree-shaped grammar. KDL is used by Zellij, Helix, and other tools.

Pricing Plans

Rate Limits

Configuration Language Rate Limits

5 limits

RATE LIMITS

FinOps

Resources

🔗
Reference
Reference
🔗
Reference
Reference
🔗
Resources
Resources
🔗
Reference
Reference

Sources

apis.yml Raw ↑
aid: configuration-language
url: https://raw.githubusercontent.com/api-evangelist/configuration-language/refs/heads/main/apis.yml
name: Configuration Language
kind: topic
description: Configuration languages are formats and DSLs used to express the desired state of software systems, infrastructure,
  applications, and APIs. Configuration languages span a spectrum from simple text-based formats (INI, JSON, YAML, TOML) to
  typed and templated formats (HCL, Cue, Dhall, Pkl, Jsonnet, KDL) that support imports, schemas, and validation. The choice
  of configuration language shapes how teams describe Kubernetes manifests, Terraform infrastructure, OpenAPI specs, CI pipelines,
  and developer environments.
image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/apis-json-logo.jpg
tags:
- Configuration
- DSL
- Infrastructure as Code
- Schemas
- Serialization
- Templating
- YAML
created: '2025-01-01'
modified: '2026-04-28'
specificationVersion: '0.19'
apis:
- aid: configuration-language:yaml
  name: YAML
  description: YAML Ain't Markup Language is a human-friendly data serialization language. YAML 1.2 is widely used for configuration
    in Kubernetes, OpenAPI, GitHub Actions, Ansible, and many other ecosystems. YAML supports comments, scalars, sequences,
    mappings, anchors, and tags.
  humanURL: https://yaml.org/
  baseURL: https://yaml.org
  tags:
  - Human Readable
  - Serialization
  - Standards
  - YAML
  properties:
  - type: Specification
    url: https://yaml.org/spec/1.2.2/
  - type: Documentation
    url: https://yaml.org/
  - type: Reference
    url: https://github.com/yaml/yaml-spec
  x-features:
  - Indentation-based syntax with comments
  - Anchors and aliases for reuse
  - Schemas (failsafe, JSON, core)
  - Used by Kubernetes, OpenAPI, Ansible, GitHub Actions
- aid: configuration-language:json
  name: JSON
  description: JavaScript Object Notation is a lightweight data interchange format defined by RFC 8259 and ECMA-404. JSON
    is heavily used as a configuration format in Node.js (package.json), VS Code settings, and many other tools, and is the
    foundation for JSON Schema-based validation.
  humanURL: https://www.json.org/
  baseURL: https://www.json.org
  tags:
  - ECMA
  - IETF
  - Interchange
  - JSON
  properties:
  - type: Specification
    url: https://www.rfc-editor.org/rfc/rfc8259
  - type: Specification
    url: https://www.ecma-international.org/publications-and-standards/standards/ecma-404/
  - type: Reference
    url: https://json-schema.org/
  x-features:
  - Strict, simple, well-supported across languages
  - JSON Schema for validation
  - No native comments (mitigated by JSON5, JSONC)
- aid: configuration-language:toml
  name: TOML
  description: Tom's Obvious, Minimal Language is a config file format designed to be human-readable and unambiguous. TOML
    is used by Cargo for Rust projects, Python packaging via pyproject.toml, and Hugo site config.
  humanURL: https://toml.io/
  baseURL: https://toml.io
  tags:
  - Configuration
  - Human Readable
  - TOML
  properties:
  - type: Specification
    url: https://toml.io/en/v1.0.0
  - type: GitHubRepository
    url: https://github.com/toml-lang/toml
  x-features:
  - Strong typing with dates, integers, floats, booleans, arrays
  - Tables and inline tables
  - Used by Cargo (Rust) and pyproject.toml (Python)
- aid: configuration-language:hcl
  name: HCL
  description: HashiCorp Configuration Language is a structured configuration language designed for human authoring of complex
    configurations. HCL underpins Terraform, Packer, Vault, Consul, and Nomad and supports expressions, variables, functions,
    and blocks.
  humanURL: https://github.com/hashicorp/hcl
  baseURL: https://github.com
  tags:
  - HCL
  - HashiCorp
  - Infrastructure as Code
  - Terraform
  properties:
  - type: GitHubRepository
    url: https://github.com/hashicorp/hcl
  - type: Documentation
    url: https://developer.hashicorp.com/terraform/language
  x-features:
  - Block-and-attribute syntax with native expressions
  - JSON-equivalent representation
  - Variables, locals, and functions
  - Foundation of Terraform infrastructure code
- aid: configuration-language:cue
  name: Cue
  description: Cue is an open source data validation language with a powerful type system and unification semantics. Cue is
    used to validate, generate, and transform configuration for Kubernetes, OpenAPI, and Terraform.
  humanURL: https://cuelang.org/
  baseURL: https://cuelang.org
  tags:
  - Cue
  - Schema
  - Type System
  - Validation
  properties:
  - type: Documentation
    url: https://cuelang.org/docs/
  - type: GitHubRepository
    url: https://github.com/cue-lang/cue
  x-features:
  - Types and values are unified
  - First-class schemas with constraints
  - Importable, composable definitions
  - Code generation and validation tooling
- aid: configuration-language:dhall
  name: Dhall
  description: Dhall is a programmable configuration language that adds types and functions to JSON and YAML. Dhall expressions
    are total (always terminate) and remote imports are content-addressed for safety.
  humanURL: https://dhall-lang.org/
  baseURL: https://dhall-lang.org
  tags:
  - Dhall
  - Functional
  - Total
  - Type Safe
  properties:
  - type: Documentation
    url: https://dhall-lang.org/
  - type: GitHubRepository
    url: https://github.com/dhall-lang/dhall-lang
  x-features:
  - Total, statically typed expressions
  - Pure functions, types, and imports
  - Renderable to JSON, YAML, plain Dhall
- aid: configuration-language:pkl
  name: Pkl
  description: Pkl is Apple's open source configuration language with a focus on type safety, composition, and runtime templating.
    Pkl can render to YAML, JSON, plist, and other formats and offers IDE tooling and language bindings.
  humanURL: https://pkl-lang.org/
  baseURL: https://pkl-lang.org
  tags:
  - Apple
  - Pkl
  - Templating
  - Type Safe
  properties:
  - type: Documentation
    url: https://pkl-lang.org/main/current/
  - type: GitHubRepository
    url: https://github.com/apple/pkl
  x-features:
  - First-class types, classes, and modules
  - Renders to YAML, JSON, plist, properties, and Pcf
  - Integrations for Java, Kotlin, Swift, Go
- aid: configuration-language:jsonnet
  name: Jsonnet
  description: Jsonnet is a data templating language designed for elegant generation of JSON and YAML. It is used heavily
    for Kubernetes manifests, Grafana dashboards (Grafonnet), and Bazel-based tooling.
  humanURL: https://jsonnet.org/
  baseURL: https://jsonnet.org
  tags:
  - Generation
  - Jsonnet
  - Templating
  properties:
  - type: Documentation
    url: https://jsonnet.org/learning/tutorial.html
  - type: GitHubRepository
    url: https://github.com/google/jsonnet
  x-features:
  - JSON-superset templating language
  - Functions, mixins, and inheritance
  - Used by Grafana dashboards (Grafonnet) and Tanka
- aid: configuration-language:kdl
  name: KDL
  description: KDL is a node-oriented document language combining the readability of YAML and TOML with a unique tree-shaped
    grammar. KDL is used by Zellij, Helix, and other tools.
  humanURL: https://kdl.dev/
  baseURL: https://kdl.dev
  tags:
  - KDL
  - Tree
  properties:
  - type: Specification
    url: https://github.com/kdl-org/kdl/blob/main/SPEC.md
  - type: Documentation
    url: https://kdl.dev/
  x-features:
  - Node-and-property document model
  - Distinct query language KQL for navigation
  - Schema language KDL Schema
common:
- type: Reference
  url: https://en.wikipedia.org/wiki/Configuration_file
- type: Reference
  url: https://docs.kernel.org/admin-guide/configuration.html
- type: Resources
  url: https://github.com/avelino/awesome-go#configuration
- type: Reference
  url: https://json-schema.org/
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com