= Choose a Camel runtime version

Starting from Camel K version 2 you will be able to use any Camel K Runtime version available which version is above 1.17. In order to use the feature you need to use the xref:traits:camel.adoc[Camel trait].

The `runtime-version` property is quite straightforward to use:

```
kamel run my-route.yaml -t camel.runtime-version=1.17.0
```

Having the ability to choose the runtime, gives you the ability to specify which Camel version you want to run. Each Camel K Runtime is bound to a well defined version of Camel (see the compatibility matrix).

== How does it work

This feature requires the dynamic generation of a builder that contains all the tooling expected by the build phase. In particular, this is a requirement for Quarkus native builds which, can be only done with builder `Pod` strategy.

When you are creating a new runtime for which a xref:architecture/cr/camel-catalog.adoc[CamelCatalog] does not yest exist, Camel K Operator is in charge to create such a catalog. Every CamelCatalog may carry the definition of a container image builder which may later be used by the builder `Pod` to build a Camel application which is specific to such a runtime (for instance, when running a Quarkus Native build).

== Pin a runtime version

By default each Camel K version uses the runtime version provided in the IntegrationPlatform. Using the trait will let you pin to a well defined version, avoiding to unintentionally upgrade the runtime of the integrations running when you perform an operator upgrade (hence an IntegrationPlatform upgrade). See more info in the xref:installation/upgrade.adoc#maintain-runtime-integrations[Camel K upgrade documentation].
