[[traits]]
= Traits

Traits are high level named features of Camel K that can be enabled/disabled or configured to customize the
behavior of the final integration.

Camel K provide sensible defaults for all such traits, taking into account the details of the target platform where
the integration is going to run into. However, it's possible for a **expert user** to configure them in
order to obtain a different behavior.

== Configuration

Each trait has a unique ID that can be used to configure it using the command line tool.

E.g. in order to disable the creation of a Service for a integration, a user can execute:

```
kamel run --trait service.enabled=false file.groovy
```

The flag `--trait` can be also abbreviated with `-t`.

The `enabled` property is available on all traits and can be used to enable/disable them. All traits have their own
internal logic to determine if they need to be enabled when the user does not activate them explicitly.

Some traits share also a `auto` property that can be used to enable/disable auto-configuration of the trait based on the
environment. The auto-configuration mechanism is able to enable/disable the trait when the `enabled` property is not explicitly
set by the user and also change the trait configuration.

NOTE: Some traits are applicable only to specific platforms (see the "profiles" in the trait description page).

A trait may have additional properties that can be configured by the end user.

See the trait description pages for more information on a specific trait:

There are indexCount:[] traits.

indexList::[]
