Serve a service catalog
A service catalog packages the routes and the dependencies of one or more systems as one versioned ZIP archive in Wanaku Barn. This page shows how CIC serves a catalog. To create a catalog and deploy it to Barn, see Build and deploy a service catalog in the Barn documentation.
Why use a service catalog
One update for routes and dependencies. With individual files, CIC can get a new route and old dependencies. A catalog changes both at the same time.
Reproducible deployments.
employee-system-v2always contains the same routes and dependencies.One reference. Two options select a catalog and a system:
bash--service-catalog employee-system-v2 \ --service-catalog-system employee-system
Use individual files during development, to change one route quickly. Use a catalog for versioned releases and for production.
Catalog structure
A catalog ZIP has an index.properties file at the root and one folder for each system:
hr-systems-v3.zip
├── index.properties
├── employee-system/
│ ├── routes.camel.yaml
│ └── dependencies.txt
└── payroll-system/
├── routes.camel.yaml
└── dependencies.txtcatalog.name in index.properties is the value of --service-catalog. Each system in catalog.services is a possible value of --service-catalog-system. For all the properties, see Service catalogs in the Barn documentation.
The routes in a catalog use the ai-tool: format, with a tags parameter that matches --mcp-tags. See Write and load routes.
Run CIC from a catalog
Give CIC the Barn base URL, the catalog name and the system name:
java -jar camel-integration-capability-main-*-jar-with-dependencies.jar \
--registration-url http://localhost:8180 \
--name employee-system \
--service-catalog employee-system-v2 \
--service-catalog-system employee-systemCIC does these steps:
- It downloads
employee-system-v2.zipfrom Barn. - It extracts the routes and the dependencies of
employee-system. - It loads the routes and starts the MCP server.
If the download fails, CIC tries again with exponential backoff, up to --retries times (default 12).
--service-catalog cannot be used with --routes-ref or --dependencies.
On Kubernetes, set spec.routes.serviceCatalog in a WanakuIntegration resource, or set SERVICE_CATALOG and SERVICE_CATALOG_SYSTEM in a Deployment. See Deploy on Kubernetes.
Serve a catalog with more than one system
One CIC instance serves one system. To serve all the systems of a catalog, start one instance for each system. All the instances download the same catalog and extract a different system:
java -jar camel-integration-capability-main-*-jar-with-dependencies.jar \
--registration-url http://localhost:8180 \
--name employee-system \
--service-catalog hr-systems-v3 \
--service-catalog-system employee-system
java -jar camel-integration-capability-main-*-jar-with-dependencies.jar \
--registration-url http://localhost:8180 \
--name payroll-system \
--mcp-port 9091 \
--service-catalog hr-systems-v3 \
--service-catalog-system payroll-systemVersion the catalogs
Do not change a catalog after you deploy it. employee-system-v2 must always contain the same routes and dependencies.
Use names that contain a version, for example:
employee-system-v2: version 2 of the employee system catalog.payroll-system-2026-01: the payroll catalog of the January 2026 release.hr-systems-prod-2.3.1: version 2.3.1 of the HR systems catalog for production.
Do not use generic names like latest or current.
Use these stages:
- Development: add a
-devor-snapshotsuffix. You can overwrite these catalogs. - Staging: promote the catalog to a release candidate, for example
v3-rc1. Do not change it. - Production: use the final version, for example
v3. Do not change it. Make a new version, for examplev4, for the next change.
Next steps
- Deploy on Kubernetes: serve a catalog with the Wanaku Operator.
- Troubleshooting: fix catalog download and extraction problems.
- CLI reference: all the options of CIC.