Camel K Modeline

Integration files can contain modeline hooks that allow to customize the way integrations are executed via command line. For example:
// camel-k: (1)

import org.apache.camel.builder.RouteBuilder;

public class Hello extends RouteBuilder {
  public void configure() throws Exception {

        .bean( (2)

1 Modeline import of Maven library
2 Usage of a business logic class from the external library

When the integration code above is executed using the kamel run CLI command, the modeline options declared in the file are appended to the list of arguments that are passed to the command.

The kamel CLI will alert you, printing the full command in the shell:

$ kamel run
Modeline options have been loaded from source files
Full command: kamel run --dependency

Multiple options can be specified for an integration. For example, the following modeline options enables 3scale and limits the integration container memory:
// camel-k: trait=3scale.enabled=true trait=container.limit-memory=256Mi (1)

import org.apache.camel.builder.RouteBuilder;

public class ThreeScaleRest extends RouteBuilder {

  public void configure() throws Exception {
1 Enables both the container and 3scale traits, to expose the route via 3scale and limit the container memory.

All options that are available for the kamel run command can be specified as modeline options. The following is a partial list of useful options:

Table 1. Useful Modeline Options
Option Description


An external library that should be included, e.g. for Maven dependencies


Set an environment variable in the integration container, e.g. env=MY_VAR=my-value


Add a label to the integration pod, e.g.,


The integration name


Add an OpenAPI v2 spec (file path)


Trait profile used for deployment


Add a camel property


Bind a property file to the integration, e.g.


Add a resource


Configure a trait, e.g. trait=service.enabled=false