A library project is a Kluctl deployment that is meant to be included by other projects. It can be provided with configuration either via args or via vars in the include.

Kluctl deployment projects can include these library projects via local include, Git include or Oci includes. artifacts.

The .kluctl-library.yaml marks a deployment project as a library project and provides some configuration.


Consider the following root deployment.yaml inside your root project:

  - git:
      url: git@github.com/example/example-library.git
      arg1: value1

And the following .kluctl-library.yaml inside the included example-library git project:

  - name: arg1
  - name: arg2
    default: value2

This will include the given git repository and make args.arg1 and args.arg2 available via templating.

Allowed fields


A list of arguments that can or must be passed when including the library project. Each of these arguments is then available in templating via the global args object.

An example looks like this:

  - name: environment
  - name: enable_debug
    default: false
  - name: complex_arg
        nested1: arg1
        nested2: arg2

The meaning and function of these arguements is identical to the args in .kluctl.yaml.

Using Kluctl Libraries without .kluctl-library.yaml

Includes can also be done on projects that do not have a .kluctl-library.yaml configuration. In that case, all currently available variables are passed into the include project, including the args from the root deployment project.