Extensions

Extensions initialize your project with YAML and Ops catered to supported web frameworks. They each have a corresponding profiles that you use when initializing your project.

12-factor extension behavior by base

The Ubuntu base selects the contract that a 12-factor framework extension generates. There is no version key in charmcraft.yaml.

  • Ubuntu 22.04 LTS and Ubuntu 24.04 LTS generate the established contract, where the framework supports the base.

  • Ubuntu 26.04 LTS generates an experimental contract. It requires CHARMCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS=1 when Charmcraft expands or packs the project.

The Spring Boot extension is also experimental on Ubuntu 24.04 LTS in both Charmcraft and Rockcraft. The Spring Boot tutorial shows the required settings. Other Charmcraft framework extensions don’t require the environment variable on lower bases.

On Ubuntu 26.04 LTS, all six framework extensions generate the following contract:

Generated field

Ubuntu 22.04 LTS and 24.04 LTS

Ubuntu 26.04 LTS

Charm part plugin

charm

uv

Workload container

Framework-dependent

app

Workload resource

Framework-dependent

app-image

Peer relation

secret-storage with the secret-storage interface

peers with the peers interface

Secret options

A string secret key and a separate secret-ID option

One app-secret-key option of type secret

Optional build input

None

paas-config.yaml file

OAuth, OpenFGA, and tracing libraries

Libraries fetched from Charmhub

PyPI interface packages provided transitively by paas-charm

Cache relations

Redis and Valkey

Valkey

Charmcraft stages paas-config.yaml only when the file exists in an Ubuntu 26.04 LTS project.