About this project

Pkl is a configuration-as-code language created by Apple, designed to bring programming-language expressiveness and validation to configuration files. Instead of writing static YAML, JSON, or property files, users write Pkl programs that produce configuration output, with type checking, constraints, and reusable templates. The repository is the core implementation of the language. It ships a CLI for evaluating Pkl files and rendering them to formats such as JSON, YAML, and others. The language supports rich validation, so invalid or out-of-range values can be caught before configuration is applied. Documentation covers an introduction, a language reference, tooling, examples, and release notes. An ecosystem of companion repositories extends Pkl to many environments. Language bindings exist for Go and Swift, and there are examples for using Pkl inside Go, JVM, and Swift applications. A Spring Boot extension allows configuring Boot apps with Pkl. Kubernetes users get templates and examples, and Bazel build rules are available. Editor and tooling support includes a language server implementing the Language Server Protocol, plugins for JetBrains IDEs and VS Code, Neovim support, a TextMate bundle, a Tree-sitter parser, and Highlight.js syntax highlighting. Shared packages and utility libraries are published through the pkl-pantry and pkl-project-commons repositories, and external reader tools live in pkl-readers. The project is developed in the open on GitHub, with issues and GitHub Discussions for community questions. Contribution guidelines and build instructions are provided in the repository, and CI pipelines publish artifacts to a Sonatype repository. Suggested language changes are tracked through the pkl-evolution repository as SPICEs.