Chapter 4. The Visual Designer


Kaoto provides a powerful visual designer for building Apache Camel integrations without writing code. Whether you’re creating simple file processors or complex AI-powered workflows, the designer helps you to:

  1. Create and manage integrations visually using drag-and-drop components
  2. Configure components through intuitive forms instead of YAML syntax
  3. Build routes by connecting Camel components, Kamelets, and EIPs (Enterprise Integration Patterns)
  4. Test and run your integrations directly from VS Code

The designer supports all major Camel resource types including Routes, Kamelets, and Pipes, giving you the flexibility to build integrations that match your specific needs.

4.1. Managing Integrations

Managing integrations is a core part of working with Kaoto. This guide covers everything you need to know about creating, organizing, and managing integrations in your projects.

4.2. Understanding Resource Types

Kaoto supports three main resource types for building integrations, each determined by its file extension:

4.2.1. Camel Route (.camel.yaml | .camel.xml)

In Apache Camel, a route is a set of processing steps that are applied to a message as it travels from a source to a destination. A route typically consists of a series of processing steps that are connected in a linear sequence.

Key characteristics:

  • Supports multiple integrations per file (though single integration per file is recommended)
  • Full access to all Camel components and patterns
  • Ideal for complex integration scenarios

Learn more about Apache Camel Routes

4.2.2. Kamelet (.kamelet.yaml)

Kamelets are reusable integration templates that encapsulate integration logic. Think of them as pre-built, configurable integration components that you can use across multiple projects.

Key characteristics:

  • Single integration per file only
  • Designed for reusability and sharing

Learn more about Apache Camel Kamelets

4.2.3. Pipe (.pipe.yaml)

Pipes connect Kamelets together to create simple integration flows. They provide a declarative way to build integrations by connecting sources to sinks through Kamelets.

Key characteristics:

  • Single integration per file only
  • Simplified syntax for connecting Kamelets

Learn more about Apache Camel Pipes

4.3. Working with Camel Routes

4.3.1. Best Practice: Single Integration Per File

We strongly recommend organizing your Camel Routes with one integration per file. This approach provides several important benefits:

  • Better organization: Each file has a clear, single purpose
  • Easier version control: Changes to one integration don’t affect others
  • Clearer file structure: Project organization is more intuitive
  • Improved maintainability: Easier to find, update, and test individual integrations
  • Better collaboration: Reduces merge conflicts in team environments

When to use multi-integration files: - Legacy code that already uses this pattern - Tightly coupled integrations that must be deployed together - Very simple integrations that are logically grouped

For most projects, stick with single integration per file as your default approach.

4.4. Creating a New Integration

Note

Refer: Getting Started with Kaoto for a step-by-step guide on creating your first integration.

The integration name doesn’t need to match the file name.

You can add multiple integrations to the same file using the same workflow.

4.5. The Flows List

For Camel Routes, the flows list in the top toolbar is your central control panel for managing all integrations and entities in your current file. It provides quick access to:

  • Rename: Edit integration names inline
  • Visibility control: Show or hide integrations on the canvas
  • Delete: Remove integrations from the file
01 flow list

4.5.1. Renaming Integrations

To rename an existing integration:

  1. Locate the integration in the flows list
  2. Click on the pencil button

    01 rename click in the pencil
  3. Type the new name

    01 rename write the new name
  4. Press Enter or click in the accept button
  5. Save the file
Note
  • The file name does NOT automatically update when you rename an integration.
  • Only the integration ID inside the file changes.
  • An unsaved changes indicator will appear until you save.

4.5.2. Controlling Integration Visibility

When working with files containing multiple integrations, you can control which integrations are visible on the canvas:

  1. Locate the integration in the flows list
  2. Click the eye icon next to the integration name

    02 visibility button
  3. The integration toggles between visible and hidden on the canvas

    02 visibility hidden route

Hidden integrations remain in the file but don’t clutter your canvas, making it easier to focus on specific integrations in complex files.

4.5.3. Deleting Integrations

To delete an integration:

  1. Locate the integration in the flows list
  2. Click the delete icon next to the integration name

    03 delete button
  3. Confirm deletion in the dialog that appears

    03 delete confirmation modal
  4. The integration content is removed from the file
Note
  • The file itself is NOT deleted, only the integration content is removed.
  • For single-integration files, the file becomes empty after deletion.
  • For multi-integration files, a new demo integration is created.

4.6. Other Camel Entities in Kaoto

Beyond integrations, Kaoto supports additional Apache Camel entities for advanced integration patterns. All of these can be created via the "Add new" dropdown in the top toolbar.

04 new integration

4.6.1. RouteConfiguration

RouteConfiguration defines reusable configuration that can be applied to multiple integrations, such as error handlers, interceptors, and other cross-cutting concerns.

Use case: Centralize common integration behaviors across your integration, reducing duplication and ensuring consistency.

Learn more about RouteConfiguration

Intercept intercepts and processes all messages passing through the integration, regardless of their source or destination.

Learn more about Intercept

4.6.2.1. Intercept

Intercept is a simple Intercept that intercepts all messages passing through the integration.

Use case: Implement global error handling, logging, or metrics collection across your integrations.

Learn more about Intercept

4.6.2.2. InterceptSendToEndpoint

InterceptSendToEndpoint intercepts messages being sent to specific endpoints, allowing you to monitor or modify messages before they reach their destination.

Use case: Monitor, modify, or redirect messages going to particular destinations, useful for debugging or implementing conditional routing.

Learn more about InterceptSendToEndpoint

4.6.2.3. InterceptFrom

InterceptFrom intercepts messages coming from specific endpoints, allowing you to process or validate messages before they enter your integration logic.

Use case: Process or validate messages from particular sources before integration processing begins, ensuring data quality and consistency.

Learn more about InterceptFrom

4.6.3. ErrorHandler

ErrorHandler defines how errors are handled during message processing, including retry policies, dead letter channels, and error logging strategies.

Use case: Implement robust error handling strategies for your integrations, ensuring failures are handled gracefully and consistently.

Learn more about ErrorHandler

4.6.4. OnException

OnException catches specific exceptions and defines custom handling logic for different error types, allowing you to respond differently based on the type of error encountered.

Use case: Handle different exceptions differently - for example, retry network errors automatically but log validation errors for manual review.

Learn more about OnException

4.7. Working with Nodes

In this section we will cover the basic operations you can perform on the nodes in your integration. This includes adding, replacing, deleting and enabling / disabling steps as well as generating documentation for your integration.

4.7.1. Adding a step

Now lets add a new step between the Timer and the Log component to modify the message body.

There are two ways of adding a step to the route.

  1. You can either Right-Click on the step you want to insert before or after. This will bring up a context menu with the available actions to choose from.
  2. An easier alternative would be to hover over the connection between the two steps you want to insert between and then click on the + button that appears.
  3. Hover over the connection between the Timer and the Log steps now and click the + button to execute the Add step action.

    step actions
    Note

    When using the right-click context menu, the set of available actions depend on the selected step and can vary. There are actions for appending, prepending, replacing and deleting steps as well as some more specialized actions.

  4. This will open up the Camel Catalog where you can search the step you want to add.

    catalog
  5. As already mentioned we would like to modify the message body before sending it along to the Log component. To achieve that we need to add a Processor called setBody. Let’s enter this name into the filter text field on top of the Catalog.

    catalog setbody
  6. You can now select the setBody tile to add it to your route. Select the new added step now on the canvas to open the configuration form to the right.

    setbody step
  7. Let’s change the Expression text field to <code>Hello from Kaoto!</code>.
  8. Now the Log component will receive a <code>Hello from Kaoto!</code> message every second and logs it to the console.

    Note

    When using the right click context menu of a step, adding new steps is usually done with two actions.

    • Prepend can be used to add a step before the selected step
    • Append will add the new step after the selected step.

    However, on the first step of a flow and on steps that can have children, the Add Step action is used.

4.7.2. Replacing a step

  1. You can replace any step on the canvas by hovering over or by selecting the step. This will spawn a toolbar which contains a button for the Replace action.

    replace button
  2. Alternatively you can do that also by invoking the context menu on a step and selecting the item Replace. Both ways it will open up the Camel Catalog and you can choose the replacement from there.

4.7.3. Deleting a step

Warning

When invoking the Delete action on a step with children or on a container element containing children there will be a confirmation dialog because you are about to delete not just the single step or container but also all the contained children.

Be cautious!

  1. You can delete any step on the canvas by hovering over or by selecting the step. This will spawn a toolbar which contains a button for the Delete action.

    delete button
  2. Alternatively you can do that also by invoking the context menu on a step and selecting the item Delete. This will remove the step from your integration.

4.7.4. Enabling / Disabling a step

  1. You can enable or disable any step on the canvas by hovering over or by selecting the step. This will spawn a toolbar which contains a button for the Enable / Disable action.

    Note

    Disabling a step will instruct the Apache Camel runtime to ignore the step when executing the flow. This can be convenient when prototyping a new route.

    disable button
  2. Alternatively you can enable / disable any step in your route by invoking the context menu on a step and selecting the item Enable / Disable.

    disabled step
  3. In the picture above the Log component has been disabled. The icon is grayed out and there is a marker icon at the top right of the step to indicate it is disabled.

4.7.5. Generating Integration Documentation

  1. You can use the built-in documentation generating feature to create a Markdown file containing all the steps in your integration and all the changed parameters for these steps together with an image of your integration.

    generate docs button
  2. When you click the button it will open up a dialog with a preview of your integration documentation.

    generate documentation
  3. You can use the Visible Entities control in the top left of the dialog to control which routes are part of the documentation. You can either select all, just a subset or even just a single route.
  4. Once you have made your choice you can specify a file name in the top right and then hit the Download button to retrieve the file in ZIP format.

4.8. Reordering Nodes

Kaoto provides multiple ways to reorganize Apache Camel routes on the canvas. You can reorder steps using drag-and-drop, copy/paste nodes between routes, or use move-before/after operations for precise positioning.

Kaoto offers three primary methods for reordering nodes:

  1. Drag and Drop: Visually reorganize nodes by dragging them to new positions with real-time feedback
  2. Copy/Paste: Duplicate nodes within or across routes while preserving their configuration
  3. Move Before/After: Precisely reposition nodes using context menu actions

Each method serves different use cases and can be combined for efficient workflow design.

4.9. Drag and Drop

Kaoto’s drag-and-drop functionality allows you to reorganize Apache Camel routes directly on the canvas with real-time visual feedback. You can reorder steps within a route, move steps across routes, and reorganize container structures intuitively.

How it works:

  1. Click and hold on the node you want to move:

    • For regular steps: Click anywhere on the node
    • For container nodes: Click on the blue header/title bar of the container
    • The cursor changes to a grab icon when hovering over a draggable area
    • Once you click and start dragging, the cursor changes to a grabbing icon
  2. Drag it to the desired position on the canvas
  3. Visual indicators show valid drop zones:

    • Blue dashed outlines appear on all compatible drop targets
    • Green highlights appear when hovering over a specific valid target
    • No feedback means the location is not a valid drop zone
  4. Release the mouse to place the node in its new location

What you can drag:

Drag and drop works with various node types:

  1. Regular steps – Move individual processing steps within or across routes (e.g., log, transform, filter)
  2. Container nodes – Relocate entire containers with their nested content (e.g., choice, doTry)
  3. Sub-containers – Reorder branches within parent containers:

Drop targets:

You can drop nodes on different types of targets:

  1. Edges – Drop on the connector between two steps to insert the node between them
  2. Placeholders – Drop on placeholder nodes to append at the end of a sequence
  3. Compatible containers – Drop sub-containers onto other compatible containers to reorder them

Use cases:

  1. Reorder steps within a route to optimize processing flow
  2. Move steps between different routes for better organization
  3. Reorganize conditional branches within a choice processor
  4. Reposition exception handlers within a doTry block
  5. Move steps into or out of container nodes
  6. Transfer sub-containers between compatible parent containers
Note

Watch the visual feedback carefully - blue dashed outlines show all possible drop zones, while green highlights indicate where you’ll drop if you release. If you don’t see any feedback, the target is incompatible with what you’re dragging.

Important

To drag container nodes, you must click on their blue header/title bar. Clicking elsewhere on the container will not initiate a drag operation.

Note

For detailed examples with video demonstrations, see our Drag and Drop blog post.

4.10. Copy and Paste Nodes

Copy and paste functionality allows you to duplicate nodes within the same route or across different routes while preserving their complete configuration. The paste options are context-aware, appearing only where the copied node can be validly inserted.

How it works:

  1. Right-click on any node to open the context menu
  2. Select Copy to copy the node to the clipboard
  3. Navigate to the desired location (same route or different route)
  4. Right-click on a compatible target position
  5. Select the appropriate Paste option based on the context

Paste Options:

The paste option label varies depending on where you’re pasting. You may see up to three different paste options:

  1. Paste as next step – Pastes the copied step as the immediate next node in the sequence.

    01 paste as next step
  2. Paste as child – Available only on nodes that can contain children (e.g., from, doTry, multicast)

    01 paste as child
  3. Paste as special child – Appears only when pasting into special processors like doTry or choice, and only if the copied content is a special node like when or doCatch

    01 paste as special child
Note

You can copy any node, but paste options will only appear where it’s contextually valid. If no paste option appears, the copied node cannot be inserted at that location.

Use cases:

  1. Duplicate commonly used processing steps across multiple routes
  2. Quickly replicate complex node configurations without manual reconfiguration
  3. Build similar routes faster by copying and modifying existing nodes
  4. Rebuild complete routes from scratch by copying and pasting them on the canvas (or simply duplicate the route)
  5. Copy error handling blocks (like doCatch) to standardize exception handling across routes
Note

Copied nodes retain all their property configurations, making it easy to create consistent processing patterns across your integrations.

4.11. Move Before/After

The move-before/after functionality provides precise control over node positioning, ideal when you need exact placement without dragging. These operations are available through both the context menu and the floating toolbar that appears when you select a node.

How it works:

  1. Hover over the node you want to reposition (the floating toolbar will appear)
  2. Click Move Before or Move After buttons on the floating toolbar, or
  3. Right-click on the node and select Move Before or Move After from the context menu
  4. The node is repositioned relative to its previous position

What you can move:

Move-before/after works with all types of nodes, including:

  1. Regular step nodes (e.g., log, transform)

    02 move regular step nodes
  2. Container nodes (e.g., choice, doTry)

    02 move container nodes
  3. Sub-containers within special processors:

Use cases:

  1. Precisely reorder nodes when drag-and-drop is less convenient
  2. Reposition nodes in complex routes with many steps
  3. Reorder conditional branches within a choice processor
  4. Reorganize exception handlers within a doTry block
  5. Make fine adjustments to node order without visual dragging
  6. Quickly move nodes to specific positions in long sequences
Note

Move-before/after operations are particularly useful in routes with many nodes where scrolling and dragging might be cumbersome. Use the floating toolbar for quick access when a node is selected.

4.11.1. Best Practices

To get the most out of Kaoto’s node reordering capabilities:

  1. Choose the right method: Use drag-and-drop for visual reorganization, copy/paste for duplication, and move-before/after for precise positioning
  2. Plan before you reorganize: Think about the logical flow before moving or copying steps
  3. Use visual feedback: When dragging, pay attention to the visual indicators showing valid drop zones and compatible targets
  4. Test after reorganizing: Validate your routes after significant changes
  5. Leverage undo/redo: Don’t hesitate to experiment - you can always undo
  6. Combine methods: Use drag-and-drop, copy/paste, and move operations together for efficient workflow design
  7. Save frequently: While undo/redo is available, regular saves ensure you don’t lose your work

4.12. Runtime Selector

By default, every Kaoto release includes the latest Camel version available at the moment of the build, nevertheless, generating a different set of catalogs is possible.

4.12.1. Catalog generator CLI

Kaoto provides a Camel catalog generator CLI to ease this process, it supports the following runtimes:

  • Main
  • Quarkus
  • Spring Boot

How to use?

  1. Clone Kaoto Camel catalog project
  2. Navigate to the camel-catalog directory
  3. Install the project dependencies

    yarn install
  4. Build the default catalogs

    yarn build
  5. This will generate a Catalog library containing:

    • Camel Main versions
    • Camel extensions for Quarkus
    • Camel Spring boot
    • Camel Kamelets

      Note

      To check what specific versions are included, please visit the index file

  6. The resulting files will be in the catalog folder

    Note

    The latest catalog is version is available in the GitHub repository

  7. Providing that folder through a http server will make it available for using it in Kaoto
  1. In order to add multiple runtimes to the Catalog library, we can provide each runtime with its version using the following flags:

     -m,--main <version>               Camel Main version. If not specified,
                                       it will use the generator installed
                                       version
     -q,--quarkus <version>            Camel Extensions for Quarkus version
     -s,--springboot <version>         Camel SpringBoot version
  2. For instance, running the following command will create a Catalog library with Camel Main 4.15.0 and Camel extensions for Quarkus 3.27.0:

    ./mvnw package; java -jar ./target/catalog-generator-0.0.1-SNAPSHOT.jar -o ./dist/camel-catalog -k 4.15.0 -m 4.15.0 -q 3.27.0 -n "My Catalog"
  3. For a different Kamelets catalog version, the --kamelets or -k flag can be specified

    ./mvnw package; java -jar ./target/catalog-generator-0.0.1-SNAPSHOT.jar -o ./dist/camel-catalog -k 4.15.0 -m 4.15.0  -n "My Catalog"
  1. In VSCode, go to the settings page and look for "Kaoto"

    vscode kaoto settings
  2. In the TextField, provide the URL of the index.json file that specifies the location of the subsequent catalogs, for instance, the public Kaoto catalog can be used:

    setting kaoto catalog url
  3. Use the Kaoto editor status bar to select from a custom catalogs.

    runtime selector

4.13. Executing Integrations

Kaoto makes it easy to run and test your Apache Camel integrations directly from VS Code. You can execute a single integration file, all integrations in a folder, or your entire workspace with just a click. This guide covers everything you need to know about running integrations locally using Kaoto’s built-in execution capabilities.

4.13.1. Prerequisites

Before running integrations in Kaoto, ensure you have completed the installation process. Visit the Installation Guide for detailed setup instructions.

4.13.2. Selecting an executor

Starting with Kaoto 2.11, there’s a new setting to select the runtime executor, which can be either jbang (default) or camel-launcher (experimental). This setting can be found in the same settings page as the Catalog library URL.

setting executor selection
Warning

At the moment, the camel-launcher executor is experimental and may not work with all Apache Camel versions.

4.14. Understanding Execution Scopes

Kaoto provides three execution scopes to match your workflow:

4.14.1. Single Integration Execution

Run a specific .camel.yaml or .camel.xml file to test individual integrations in isolation.

play single route

Use when:

  • Testing a specific integration
  • Debugging a single integration
  • Developing a new integration

4.14.2. Folder Execution

Run all Camel integration files within a specific folder.

play folder

Use when:

  • Testing related integrations together
  • Running a module or feature set
  • Verifying folder-level integration

4.14.3. Workspace Execution

Run all Camel integration files in your entire workspace.

play workspace

Use when:

  • Testing the complete application
  • Running all integrations together
  • Verifying end-to-end integration flows

4.15. Creating Your First Integration

Before executing integrations, you need to create one. Let’s create a simple integration to demonstrate execution.

Refer: Quickstart Guide

4.16. Running a Single Integration

To run a single integration file:

  1. Open the Kaoto perspective in VS Code
  2. In the Integrations panel, locate your integration file (e.g., demo.camel.yaml)
  3. Click the Play button (▶️) next to the integration file name

    play single route
  4. A new terminal will open showing Camel JBang starting your integration

Expected Output:

INFO 26484 --- [           main] e.camel.impl.engine.AbstractCamelContext : Routes startup (total:1)
INFO 26484 --- [           main] e.camel.impl.engine.AbstractCamelContext :     Started route-3169 (timer://template)
INFO 26484 --- [           main] e.camel.impl.engine.AbstractCamelContext : Apache Camel 4.18.0 (demo) started in 276ms (build:0ms init:0ms start:276ms boot:275ms)

The integration is now running and will continue until you stop it.

Note

Configuration Files: If an application-dev.properties file exists in the same directory as your integration file, Kaoto will automatically load it to configure your integration. This is useful for development-specific settings like connection strings, ports, or feature flags.

4.16.1. Stopping a Running Integration

You have two options to stop a running integration:

Option 1: Using the Deployments Panel

  1. Navigate to the Deployments panel and click the Terminate button (🚫) next to your running integration:

    stop route

Option 2: Using the Terminal

  1. Go to the terminal where Camel is running
  2. Press Ctrl + C (or Cmd + C on macOS)

4.17. Running a Folder

To run all integrations within a specific folder:

  1. In the Integrations panel, locate the folder containing your integrations
  2. Ensure the folder contains one or more .camel.yaml or .camel.xml files
  3. Click the Play button (▶️) next to the folder name

    play folder
  4. Kaoto will start all integration files within that folder in a single Camel context
  5. A new terminal opens showing all integrations starting together
Note

Classpath Behavior: When running a folder, all files in that folder are automatically added to the classpath. This includes:

  • application.properties and application-dev.properties for configuration
  • .jar files for custom dependencies
  • Resource files needed by your integrations

This makes it easy to organize related integrations with their configuration and dependencies in a single folder.

4.18. Running the Workspace

To run all integrations in your entire workspace:

  1. In the Integrations panel, locate the workspace root or "Integrations" label
  2. Look for the Play button (▶️) at the workspace level

    play workspace
  3. Click the Play button (▶️) next to "Integrations" or the workspace root
  4. Kaoto will discover and start all integration files in your workspace
  5. A new terminal opens showing all integrations starting together
Note

Workspace Execution Benefits:

  • Ideal for testing how all your integrations work together in a complete application context
  • All workspace files are added to the classpath, including properties files, JARs, and resources
  • Configuration files like application.properties at the workspace root apply to all integrations

4.19. Common Execution Patterns

4.19.1. Development Workflow

  1. Create an integration in Kaoto’s visual designer
  2. Run** the single integration to test basic functionality
  3. Modify the integration based on test results
  4. Run the folder to test with related integrations
  5. Run the workspace to verify complete integration

4.19.2. Testing Strategy

  1. Unit testing: Run single integrations in isolation
  2. Integration testing: Run folders with related integrations
  3. System testing: Run the entire workspace

4.19.3. Debugging Approach

  1. Start with single integration execution to isolate issues
  2. Add log processors to track message flow
  3. Use the terminal output to identify problems
  4. Make incremental changes and re-run

4.20. Troubleshooting

4.20.1. Integration Won’t Start

Problem: Clicking the play button does nothing or shows an error.

Solutions:

  • Verify JBang is installed by running: jbang version
  • Check Java is installed by running: java -version (Java 17 or later required)
  • Look for error messages in the VS Code

Output panel (View Output)

  • Check the Terminal panel for startup errors
  • Ensure your integration file has valid YAML/XML syntax

4.20.2. Port Already in Use

Problem: Error message indicating port 8080 (or another port) is already in use.

Solutions:

  • Stop other running integrations using the Deployments panel
  • Check for other applications using the same port
  • Configure a different port in your integration or application properties
  • Kill the process using the port: lsof -ti:8080 | xargs kill -9 (macOS/Linux)

4.20.3. Integration Starts But Doesn’t Work

Problem: Integration starts successfully but doesn’t process messages.

Solutions:

  • Check component configuration (URIs, parameters)
  • Verify file paths and directories exist
  • Add log processors to track message flow
  • Review terminal output for warnings

4.20.4. Multiple Integrations Conflict

Problem: Integrations interfere with each other when running together.

Solutions:

  • Check for duplicate endpoint URIs
  • Verify integrations don’t compete for the same resources
  • Use unique IDs for all integrations and components
  • Consider running integrations in separate folders

4.21. Best Practices

4.21.1. Integration Organization

  1. Group related integrations: Keep related integrations in the same folder for easier management
  2. Use meaningful names: Name files descriptively (e.g., order-processing.camel.yaml, customer-sync.camel.yaml)
  3. One integration per file: Recommended approach for better organization, testing, and version control
  4. Separate concerns: Use different folders for different modules, features, or business domains
  5. Consistent naming: Follow a naming convention across your project (e.g., domain-action.camel.yaml)

4.21.2. Execution Strategy

  1. Test incrementally: Start with single integrations, then folders, then workspace
  2. Use workspace settings: Configure Kaoto settings at workspace level (.vscode/settings.json), not globally
  3. Monitor output: Keep the terminal visible during development to catch errors early
  4. Stop when done: Always stop integrations when finished testing to free up resources
  5. Clean restarts: Stop all integrations before making significant changes
  6. Use logs effectively: Add log processors at key points for debugging

4.21.3. Configuration Management

4.21.3.1. Understanding Property Files

Kaoto supports two types of property files for configuring your integrations:

application.properties

  • Base configuration file for all environments
  • Contains common settings shared across development, testing, and production
  • Always loaded when present in the integration directory
  • Example use cases: component URIs, timeout values, retry policies

application-dev.properties

  • Development-specific configuration file
  • Automatically loaded by Kaoto when running integrations locally
  • Overrides values from application.properties when both exist
  • Perfect for: local database connections, debug settings, development API keys
  • Not deployed to production environments

Priority Order:

When both files exist, application-dev.properties takes precedence over application.properties for any overlapping properties.

Example Setup:

# application.properties (shared settings)
api.timeout=30000
# application-dev.properties (development overrides)
api.debug=true

Best Practices

  1. Use property files: Store configuration in application.properties for shared settings
  2. Development overrides: Use application-dev.properties for local development settings
  3. Environment-specific settings: Create separate property files for test/prod environments
  4. Secure credentials: Never hardcode sensitive data in integrations or commit secrets to version control
  5. Document settings: Add comments to property files explaining each configuration value
  6. Version control: Commit application.properties but consider excluding application-dev.properties if it contains sensitive local settings
Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat Documentation

Legal Notice

Theme

© 2026 Red Hat
Back to top