You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/03/09 13:56:35 UTC

(camel) branch main updated: console in catalog (#13426)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 4a2b9c375ab console in catalog (#13426)
4a2b9c375ab is described below

commit 4a2b9c375abd8155f842d4c0cefb10e24504cfbb
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Mar 9 14:56:30 2024 +0100

    console in catalog (#13426)
    
    * CAMEL-20531: camel-console - Add metadata for camel-catalog about dev consoles
    * CAMEL-20531: Include dev-consoles into camel-catalog
---
 .../org/apache/camel/dev-console/catalog.json      |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../camel/catalog/console/CatalogConsole.java      |   4 +-
 .../apache/camel/catalog/dev-consoles.properties   |  41 +++++++
 .../camel/catalog/dev-consoles/aws-secrets.json    |  15 +++
 .../apache/camel/catalog/dev-consoles/aws2-s3.json |  15 +++
 .../camel/catalog/dev-consoles/azure-secrets.json  |  15 +++
 .../apache/camel/catalog/dev-consoles/bean.json    |  15 +++
 .../apache/camel/catalog/dev-consoles/blocked.json |  15 +++
 .../catalog/dev-consoles/circuit-breaker.json      |  15 +++
 .../camel/catalog/dev-consoles/consumer.json       |  15 +++
 .../apache/camel/catalog/dev-consoles/context.json |  15 +++
 .../apache/camel/catalog/dev-consoles/debug.json   |  15 +++
 .../camel/catalog/dev-consoles/endpoint.json       |  15 +++
 .../apache/camel/catalog/dev-consoles/event.json   |  15 +++
 .../catalog/dev-consoles/fault-tolerance.json      |  15 +++
 .../org/apache/camel/catalog/dev-consoles/gc.json  |  15 +++
 .../camel/catalog/dev-consoles/gcp-secrets.json    |  15 +++
 .../apache/camel/catalog/dev-consoles/health.json  |  15 +++
 .../camel/catalog/dev-consoles/inflight.json       |  15 +++
 .../camel/catalog/dev-consoles/java-security.json  |  15 +++
 .../org/apache/camel/catalog/dev-consoles/jvm.json |  15 +++
 .../org/apache/camel/catalog/dev-consoles/log.json |  15 +++
 .../apache/camel/catalog/dev-consoles/memory.json  |  15 +++
 .../camel/catalog/dev-consoles/micrometer.json     |  15 +++
 .../apache/camel/catalog/dev-consoles/mina.json    |  15 +++
 .../apache/camel/catalog/dev-consoles/mllp.json    |  15 +++
 .../apache/camel/catalog/dev-consoles/netty.json   |  15 +++
 .../camel/catalog/dev-consoles/platform-http.json  |  15 +++
 .../camel/catalog/dev-consoles/properties.json     |  15 +++
 .../apache/camel/catalog/dev-consoles/quartz.json  |  15 +++
 .../apache/camel/catalog/dev-consoles/reload.json  |  15 +++
 .../camel/catalog/dev-consoles/resilience4j.json   |  15 +++
 .../catalog/dev-consoles/route-controller.json     |  15 +++
 .../camel/catalog/dev-consoles/route-dump.json     |  15 +++
 .../apache/camel/catalog/dev-consoles/route.json   |  15 +++
 .../apache/camel/catalog/dev-consoles/source.json  |  15 +++
 .../catalog/dev-consoles/startup-recorder.json     |  15 +++
 .../apache/camel/catalog/dev-consoles/stub.json    |  15 +++
 .../apache/camel/catalog/dev-consoles/thread.json  |  15 +++
 .../org/apache/camel/catalog/dev-consoles/top.json |  15 +++
 .../apache/camel/catalog/dev-consoles/trace.json   |  15 +++
 .../camel/catalog/dev-consoles/transformers.json   |  15 +++
 .../catalog/dev-consoles/type-converters.json      |  15 +++
 .../camel/catalog/dev-consoles/variables.json      |  15 +++
 .../org/apache/camel/catalog/CamelCatalog.java     |  19 ++++
 .../catalog/CamelCatalogJSonSchemaResolver.java    |   7 ++
 .../apache/camel/catalog/DefaultCamelCatalog.java  |  33 ++++++
 .../camel/catalog/DefaultRuntimeProvider.java      |  28 +++++
 .../main/java/org/apache/camel/catalog/Kind.java   |   1 +
 .../org/apache/camel/catalog/RuntimeProvider.java  |  10 ++
 .../org/apache/camel/catalog/CamelCatalogTest.java |  24 +++++
 .../org/apache/camel/dev-console/aws-secrets.json  |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../aws/secretsmanager/SecretsDevConsole.java      |   2 +-
 .../org/apache/camel/dev-console/aws2-s3.json      |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../camel/component/aws2/s3/AWS2S3Console.java     |   2 +-
 .../apache/camel/dev-console/azure-secrets.json    |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../key/vault/AzureKeyVaultManagerDevConsole.java  |   2 +-
 .../org/apache/camel/dev-console/gcp-secrets.json  |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../manager/GoogleSecretManagerDevConsole.java     |   2 +-
 .../org/apache/camel/dev-console/knative.json      |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../component/knative/http/KnativeHttpConsole.java |   2 +-
 .../org/apache/camel/dev-console/micrometer.json   |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../component/micrometer/MicrometerConsole.java    |   2 +-
 .../apache/camel/dev-console/fault-tolerance.json  |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../faulttolerance/FaultToleranceConsole.java      |   5 +-
 .../org/apache/camel/dev-console/mina.json         |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../apache/camel/component/mina/MinaConsole.java   |   2 +-
 .../org/apache/camel/dev-console/mllp.json         |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../apache/camel/component/mllp/MllpConsole.java   |   2 +-
 .../org/apache/camel/dev-console/netty.json        |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../apache/camel/component/netty/NettyConsole.java |   2 +-
 .../apache/camel/dev-console/platform-http.json    |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../platform/http/PlatformHttpConsole.java         |   2 +-
 .../org/apache/camel/dev-console/quartz.json       |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../camel/component/quartz/QuartzConsole.java      |   2 +-
 .../org/apache/camel/dev-console/resilience4j.json |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../component/resilience4j/ResilienceConsole.java  |   3 +-
 .../org/apache/camel/dev-console/stub.json         |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../apache/camel/component/stub/StubConsole.java   |   4 +-
 .../apache/camel/spi/annotations/DevConsole.java   |  17 ++-
 .../java/org/apache/camel/CatalogCamelContext.java |   8 ++
 .../apache/camel/catalog/JSonSchemaResolver.java   |   8 ++
 .../camel/impl/engine/AbstractCamelContext.java    |  11 ++
 .../org/apache/camel/dev-console/bean.json         |  15 +++
 .../org/apache/camel/dev-console/blocked.json      |  15 +++
 .../apache/camel/dev-console/circuit-breaker.json  |  15 +++
 .../org/apache/camel/dev-console/consumer.json     |  15 +++
 .../org/apache/camel/dev-console/context.json      |  15 +++
 .../org/apache/camel/dev-console/debug.json        |  15 +++
 .../org/apache/camel/dev-console/endpoint.json     |  15 +++
 .../org/apache/camel/dev-console/event.json        |  15 +++
 .../META-INF/org/apache/camel/dev-console/gc.json  |  15 +++
 .../org/apache/camel/dev-console/health.json       |  15 +++
 .../org/apache/camel/dev-console/inflight.json     |  15 +++
 .../apache/camel/dev-console/java-security.json    |  15 +++
 .../META-INF/org/apache/camel/dev-console/jvm.json |  15 +++
 .../META-INF/org/apache/camel/dev-console/log.json |  15 +++
 .../org/apache/camel/dev-console/memory.json       |  15 +++
 .../org/apache/camel/dev-console/properties.json   |  15 +++
 .../org/apache/camel/dev-console/reload.json       |  15 +++
 .../apache/camel/dev-console/route-controller.json |  15 +++
 .../org/apache/camel/dev-console/route-dump.json   |  15 +++
 .../org/apache/camel/dev-console/route.json        |  15 +++
 .../org/apache/camel/dev-console/source.json       |  15 +++
 .../apache/camel/dev-console/startup-recorder.json |  15 +++
 .../org/apache/camel/dev-console/thread.json       |  15 +++
 .../META-INF/org/apache/camel/dev-console/top.json |  15 +++
 .../org/apache/camel/dev-console/trace.json        |  15 +++
 .../org/apache/camel/dev-console/transformers.json |  15 +++
 .../apache/camel/dev-console/type-converters.json  |  15 +++
 .../org/apache/camel/dev-console/variables.json    |  15 +++
 .../org/apache/camel/dev-console/circuit-breaker   |   2 +
 .../apache/camel/dev-console/route-circuit-breaker |   2 -
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../apache/camel/impl/console/BeanDevConsole.java  |   2 +-
 .../apache/camel/impl/console/BlockedConsole.java  |   2 +-
 ...vConsole.java => CircuitBreakerDevConsole.java} |   8 +-
 .../camel/impl/console/ConsumerDevConsole.java     |   2 +-
 .../camel/impl/console/ContextDevConsole.java      |   2 +-
 .../apache/camel/impl/console/DebugDevConsole.java |   2 +-
 .../impl/console/DefaultDevConsoleRegistry.java    |   2 +-
 .../camel/impl/console/EndpointDevConsole.java     |   2 +-
 .../apache/camel/impl/console/EventConsole.java    |   2 +-
 .../impl/console/GarbageCollectorDevConsole.java   |   2 +-
 .../camel/impl/console/HealthDevConsole.java       |   2 +-
 .../apache/camel/impl/console/InflightConsole.java |   2 +-
 .../camel/impl/console/JavaSecurityDevConsole.java |   2 +-
 .../apache/camel/impl/console/JvmDevConsole.java   |   2 +-
 .../apache/camel/impl/console/LogDevConsole.java   |   2 +-
 .../camel/impl/console/MemoryDevConsole.java       |   2 +-
 .../camel/impl/console/PropertiesDevConsole.java   |   2 +-
 .../camel/impl/console/ReloadDevConsole.java       |   2 +-
 .../camel/impl/console/RouteControllerConsole.java |   4 +-
 .../apache/camel/impl/console/RouteDevConsole.java |   2 +-
 .../camel/impl/console/RouteDumpDevConsole.java    |   4 +-
 .../camel/impl/console/SourceDevConsole.java       |   4 +-
 .../impl/console/StartupRecorderDevConsole.java    |   4 +-
 .../camel/impl/console/ThreadDevConsole.java       |   4 +-
 .../apache/camel/impl/console/TopDevConsole.java   |   4 +-
 .../apache/camel/impl/console/TraceDevConsole.java |   2 +-
 .../camel/impl/console/TransformerConsole.java     |   4 +-
 .../camel/impl/console/TypeConverterConsole.java   |   2 +-
 .../camel/impl/console/VariablesDevConsole.java    |   2 +-
 .../camel/catalog/impl/AbstractCamelCatalog.java   |  10 ++
 .../impl/CamelContextJSonSchemaResolver.java       |  10 ++
 .../camel/yaml/io/ModelJSonSchemaResolver.java     |   5 +
 .../ROOT/pages/camel-4x-upgrade-guide-4_5.adoc     |  20 ++++
 .../camel/cli/connector/LocalCliConnector.java     |   4 +-
 .../org/apache/camel/dev-console/jbang.json        |  15 +++
 .../org/apache/camel/dev-console/source-dir.json   |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../camel/jbang/console/JBangDevConsole.java       |   4 +-
 .../camel/jbang/console/SourceDirDevConsole.java   |   5 +-
 .../dsl/jbang/core/commands/CamelJBangMain.java    |   2 +
 .../core/commands/catalog/CatalogDevConsole.java   |  56 ++++++++++
 .../core/commands/process/ListCircuitBreaker.java  |   2 +-
 .../camel/dev-console/dependency-downloader.json   |  15 +++
 .../org/apache/camel/dev-consoles.properties       |   7 ++
 .../main/console/DependencyDownloaderConsole.java  |   5 +-
 .../camel/tooling/model/DevConsoleModel.java       |  32 ++++--
 .../org/apache/camel/tooling/model/JsonMapper.java |  32 ++++++
 .../maven/packaging/GenerateComponentMojo.java     |   2 +
 .../packaging/GenerateDataTypeTransformerMojo.java |  22 ++--
 ...formerMojo.java => GenerateDevConsoleMojo.java} | 120 ++++++++++-----------
 .../apache/camel/maven/packaging/GenerateMojo.java |   2 +
 .../apache/camel/maven/packaging/MojoHelper.java   |  18 ++++
 .../camel/maven/packaging/PrepareCatalogMojo.java  |  67 ++++++++++++
 .../camel/maven/packaging/SpiGeneratorMojo.java    |   2 +-
 .../apache/camel/spi/annotations/DevConsole.java   |  17 ++-
 184 files changed, 2037 insertions(+), 158 deletions(-)

diff --git a/catalog/camel-catalog-console/src/generated/resources/META-INF/org/apache/camel/dev-console/catalog.json b/catalog/camel-catalog-console/src/generated/resources/META-INF/org/apache/camel/dev-console/catalog.json
new file mode 100644
index 00000000000..2a6c58aea19
--- /dev/null
+++ b/catalog/camel-catalog-console/src/generated/resources/META-INF/org/apache/camel/dev-console/catalog.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "catalog",
+    "title": "Catalog",
+    "description": "Information about used Camel artifacts",
+    "deprecated": false,
+    "javaType": "org.apache.camel.catalog.console.CatalogConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-catalog-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/catalog/camel-catalog-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..d50469997ee
--- /dev/null
+++ b/catalog/camel-catalog-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=catalog
+groupId=org.apache.camel
+artifactId=camel-catalog-console
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Catalog :: Console
+projectDescription=Camel Catalog Developer Console
diff --git a/catalog/camel-catalog-console/src/main/java/org/apache/camel/catalog/console/CatalogConsole.java b/catalog/camel-catalog-console/src/main/java/org/apache/camel/catalog/console/CatalogConsole.java
index 6b01274c834..97475eab8c6 100644
--- a/catalog/camel-catalog-console/src/main/java/org/apache/camel/catalog/console/CatalogConsole.java
+++ b/catalog/camel-catalog-console/src/main/java/org/apache/camel/catalog/console/CatalogConsole.java
@@ -29,14 +29,14 @@ import org.apache.camel.tooling.model.ArtifactModel;
 import org.apache.camel.tooling.model.OtherModel;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("catalog")
+@DevConsole(name = "catalog", description = "Information about used Camel artifacts")
 public class CatalogConsole extends AbstractDevConsole {
 
     private static final String CP = System.getProperty("java.class.path");
     private final CamelCatalog catalog = new DefaultCamelCatalog(true);
 
     public CatalogConsole() {
-        super("camel", "catalog", "Catalog", "Lists all the used Camel Components");
+        super("camel", "catalog", "Catalog", "Information about used Camel artifacts");
     }
 
     @Override
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles.properties
new file mode 100644
index 00000000000..407203014fc
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles.properties
@@ -0,0 +1,41 @@
+aws-secrets
+aws2-s3
+azure-secrets
+bean
+blocked
+circuit-breaker
+consumer
+context
+debug
+endpoint
+event
+fault-tolerance
+gc
+gcp-secrets
+health
+inflight
+java-security
+jvm
+log
+memory
+micrometer
+mina
+mllp
+netty
+platform-http
+properties
+quartz
+reload
+resilience4j
+route
+route-controller
+route-dump
+source
+startup-recorder
+stub
+thread
+top
+trace
+transformers
+type-converters
+variables
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/aws-secrets.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/aws-secrets.json
new file mode 100644
index 00000000000..40eec35602f
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/aws-secrets.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "aws-secrets",
+    "title": "AWS Secrets",
+    "description": "AWS Secrets Manager",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-aws-secrets-manager",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/aws2-s3.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/aws2-s3.json
new file mode 100644
index 00000000000..c079f636c25
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/aws2-s3.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "aws2-s3",
+    "title": "AWS S3",
+    "description": "AWS S3 Consumer",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.aws2.s3.AWS2S3Console",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-aws2-s3",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/azure-secrets.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/azure-secrets.json
new file mode 100644
index 00000000000..76f4d498ac9
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/azure-secrets.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "azure-secrets",
+    "title": "Azure Key Vault Secrets",
+    "description": "Azure Key Vault Secret Manager",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.azure.key.vault.AzureKeyVaultManagerDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-azure-key-vault",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/bean.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/bean.json
new file mode 100644
index 00000000000..d7653bec27d
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/bean.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "bean",
+    "title": "Bean",
+    "description": "Displays Java beans from the registry",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.BeanDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/blocked.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/blocked.json
new file mode 100644
index 00000000000..81213ab7bc8
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/blocked.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "blocked",
+    "title": "Blocked Exchanges",
+    "description": "Display blocked exchanges",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.BlockedConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/circuit-breaker.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/circuit-breaker.json
new file mode 100644
index 00000000000..6caa284f69a
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/circuit-breaker.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "circuit-breaker",
+    "title": "Circuit Breaker",
+    "description": "Display circuit breaker information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.CircuitBreakerDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/consumer.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/consumer.json
new file mode 100644
index 00000000000..5cf8731b25e
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/consumer.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "consumer",
+    "title": "Consumers",
+    "description": "Display information about Camel consumers",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.ConsumerDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/context.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/context.json
new file mode 100644
index 00000000000..a6ef2bbaafc
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/context.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "context",
+    "title": "CamelContext",
+    "description": "Overall information about the CamelContext",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.ContextDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/debug.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/debug.json
new file mode 100644
index 00000000000..31f2c2565b0
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/debug.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "debug",
+    "title": "Debug",
+    "description": "Camel route debugger",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.DebugDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/endpoint.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/endpoint.json
new file mode 100644
index 00000000000..1c009d5db68
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/endpoint.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "endpoint",
+    "title": "Endpoints",
+    "description": "Endpoint Registry information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.EndpointDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/event.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/event.json
new file mode 100644
index 00000000000..08c68178984
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/event.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "event",
+    "title": "Camel Events",
+    "description": "The most recent Camel events",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.EventConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/fault-tolerance.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/fault-tolerance.json
new file mode 100644
index 00000000000..7ac2091fbf0
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/fault-tolerance.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "fault-tolerance",
+    "title": "MicroProfile Circuit Breaker",
+    "description": "Display circuit breaker information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.microprofile.faulttolerance.FaultToleranceConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-microprofile-fault-tolerance",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/gc.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/gc.json
new file mode 100644
index 00000000000..1d9ec216984
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/gc.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "gc",
+    "title": "Garbage Collector",
+    "description": "Displays Garbage Collector information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.GarbageCollectorDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/gcp-secrets.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/gcp-secrets.json
new file mode 100644
index 00000000000..74ebae13b00
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/gcp-secrets.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "gcp-secrets",
+    "title": "GCP Secrets",
+    "description": "GCP Secret Manager",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.google.secret.manager.GoogleSecretManagerDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-google-secret-manager",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/health.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/health.json
new file mode 100644
index 00000000000..7135acdc3f0
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/health.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "health",
+    "title": "Health Check",
+    "description": "Health Check Status",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.HealthDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/inflight.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/inflight.json
new file mode 100644
index 00000000000..3f1ed7f85c0
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/inflight.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "inflight",
+    "title": "Inflight Exchanges",
+    "description": "Display inflight exchanges",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.InflightConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/java-security.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/java-security.json
new file mode 100644
index 00000000000..8f78ece00b9
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/java-security.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "java-security",
+    "title": "Java Security",
+    "description": "Displays Java Security (JSSE) information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.JavaSecurityDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/jvm.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/jvm.json
new file mode 100644
index 00000000000..2dddb0a85cf
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/jvm.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "jvm",
+    "title": "JVM",
+    "description": "Displays JVM information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.JvmDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/log.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/log.json
new file mode 100644
index 00000000000..5b6b4fb82d1
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/log.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "log",
+    "title": "Log",
+    "description": "Logging framework",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.LogDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/memory.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/memory.json
new file mode 100644
index 00000000000..21b73f22d48
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/memory.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "memory",
+    "title": "JVM Memory",
+    "description": "Displays JVM memory information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.MemoryDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/micrometer.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/micrometer.json
new file mode 100644
index 00000000000..3e223a870a0
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/micrometer.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "micrometer",
+    "title": "Micrometer",
+    "description": "Display runtime metrics",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.micrometer.MicrometerConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-micrometer",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/mina.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/mina.json
new file mode 100644
index 00000000000..98c2481468f
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/mina.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "mina",
+    "title": "Mina",
+    "description": "Embedded Mina Server",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.mina.MinaConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-mina",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/mllp.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/mllp.json
new file mode 100644
index 00000000000..05624328434
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/mllp.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "mllp",
+    "title": "MLLP",
+    "description": "Embedded MLLP Server",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.mllp.MllpConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-mllp",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/netty.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/netty.json
new file mode 100644
index 00000000000..f30f3adceec
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/netty.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "netty",
+    "title": "Netty",
+    "description": "Embedded Netty Server",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.netty.NettyConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-netty",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/platform-http.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/platform-http.json
new file mode 100644
index 00000000000..c5ef30c9fdb
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/platform-http.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "platform-http",
+    "title": "Platform HTTP",
+    "description": "Embedded HTTP Server",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.platform.http.PlatformHttpConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-platform-http",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/properties.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/properties.json
new file mode 100644
index 00000000000..ecc93c54e74
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/properties.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "properties",
+    "title": "Properties",
+    "description": "Displays the properties loaded by Camel",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.PropertiesDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/quartz.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/quartz.json
new file mode 100644
index 00000000000..251f7f0a9c7
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/quartz.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "quartz",
+    "title": "Quartz",
+    "description": "Quartz Scheduler",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.quartz.QuartzConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-quartz",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/reload.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/reload.json
new file mode 100644
index 00000000000..1ff61b72ade
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/reload.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "reload",
+    "title": "Reload",
+    "description": "Console for reloading running Camel",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.ReloadDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/resilience4j.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/resilience4j.json
new file mode 100644
index 00000000000..2a5c089c335
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/resilience4j.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "resilience4j",
+    "title": "Resilience Circuit Breaker",
+    "description": "Display circuit breaker information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.resilience4j.ResilienceConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-resilience4j",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/route-controller.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/route-controller.json
new file mode 100644
index 00000000000..75668138496
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/route-controller.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "route-controller",
+    "title": "Route Controller",
+    "description": "Route controller information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.RouteControllerConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/route-dump.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/route-dump.json
new file mode 100644
index 00000000000..d5a7fff4006
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/route-dump.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "route-dump",
+    "title": "Route Dump",
+    "description": "Dump route in XML or YAML format",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.RouteDumpDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/route.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/route.json
new file mode 100644
index 00000000000..ad9ca12f312
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/route.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "route",
+    "title": "Route",
+    "description": "Route information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.RouteDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/source.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/source.json
new file mode 100644
index 00000000000..e919ccc1394
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/source.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "source",
+    "title": "Source",
+    "description": "Dump route source code",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.SourceDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/startup-recorder.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/startup-recorder.json
new file mode 100644
index 00000000000..73761bdc3e3
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/startup-recorder.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "startup-recorder",
+    "title": "Startup Recorder",
+    "description": "Starting recording information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.StartupRecorderDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/stub.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/stub.json
new file mode 100644
index 00000000000..f95c4375e13
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/stub.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "stub",
+    "title": "Stub",
+    "description": "Browse messages on stub endpoints",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.stub.StubConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-stub",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/thread.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/thread.json
new file mode 100644
index 00000000000..66374a265db
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/thread.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "thread",
+    "title": "Thread",
+    "description": "Displays JVM Threads information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.ThreadDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/top.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/top.json
new file mode 100644
index 00000000000..98ec18bb1d9
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/top.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "top",
+    "title": "Top Routes",
+    "description": "Display the top routes",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.TopDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/trace.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/trace.json
new file mode 100644
index 00000000000..5fa13493f46
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/trace.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "trace",
+    "title": "Camel Tracing",
+    "description": "Trace routed messages",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.TraceDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/transformers.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/transformers.json
new file mode 100644
index 00000000000..b2b59833d78
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/transformers.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "transformers",
+    "title": "Data Type Transformers",
+    "description": "Data-type transformer information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.TransformerConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/type-converters.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/type-converters.json
new file mode 100644
index 00000000000..6663487da5b
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/type-converters.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "type-converters",
+    "title": "Type Converters",
+    "description": "Camel Type Converter information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.TypeConverterConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/variables.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/variables.json
new file mode 100644
index 00000000000..2af11b40b66
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/variables.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "variables",
+    "title": "Variables",
+    "description": "Displays variables",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.VariablesDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
index ec167d2490e..9ac41f70363 100644
--- a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
+++ b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
@@ -26,6 +26,7 @@ import org.apache.camel.tooling.model.ArtifactModel;
 import org.apache.camel.tooling.model.BaseModel;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.DataFormatModel;
+import org.apache.camel.tooling.model.DevConsoleModel;
 import org.apache.camel.tooling.model.EipModel;
 import org.apache.camel.tooling.model.LanguageModel;
 import org.apache.camel.tooling.model.MainModel;
@@ -198,6 +199,11 @@ public interface CamelCatalog {
      */
     List<String> findTransformerNames();
 
+    /**
+     * Find all the dev-console names from the Camel catalog
+     */
+    List<String> findDevConsoleNames();
+
     /**
      * Find all the model names from the Camel catalog
      */
@@ -508,6 +514,11 @@ public interface CamelCatalog {
      */
     String listTransformersAsJson();
 
+    /**
+     * Lists all the dev-consoles summary details in JSon
+     */
+    String listDevConsolesAsJson();
+
     /**
      * Lists all the models (EIPs) summary details in JSon
      */
@@ -547,6 +558,12 @@ public interface CamelCatalog {
      */
     TransformerModel transformerModel(String name);
 
+    /**
+     * @param  name the dev-console name to look up
+     * @return      the requested dev-console or {@code null} in case it is not available in this {@link CamelCatalog}
+     */
+    DevConsoleModel devConsoleModel(String name);
+
     /**
      * @param  name the other name to look up
      * @return      the requested other or {@code null} in case it is not available in this {@link CamelCatalog}
@@ -581,6 +598,8 @@ public interface CamelCatalog {
                 return languageModel(name);
             case transformer:
                 return transformerModel(name);
+            case console:
+                return devConsoleModel(name);
             case other:
                 return otherModel(name);
             case eip:
diff --git a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
index 52285d31c11..c5251125a2c 100644
--- a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
+++ b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
@@ -113,6 +113,13 @@ public class CamelCatalogJSonSchemaResolver implements JSonSchemaResolver {
         return loadResourceFromVersionManager(file);
     }
 
+    @Override
+    public String getDevConsoleJSonSchema(String name) {
+        name = sanitizeFileName(name);
+        final String file = camelCatalog.getRuntimeProvider().getDevConsoleJSonSchemaDirectory() + "/" + name + EXTENSION;
+        return loadResourceFromVersionManager(file);
+    }
+
     @Override
     public String getModelJSonSchema(String name) {
         final String file = MODEL_DIR + "/" + name + EXTENSION;
diff --git a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
index 3fbca05ec17..adc5e84aa8e 100644
--- a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
+++ b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
@@ -38,6 +38,7 @@ import org.apache.camel.tooling.model.ArtifactModel;
 import org.apache.camel.tooling.model.BaseModel;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.DataFormatModel;
+import org.apache.camel.tooling.model.DevConsoleModel;
 import org.apache.camel.tooling.model.EipModel;
 import org.apache.camel.tooling.model.JsonMapper;
 import org.apache.camel.tooling.model.LanguageModel;
@@ -64,8 +65,10 @@ public class DefaultCamelCatalog extends AbstractCamelCatalog implements CamelCa
     public static final String LIST_DATA_FORMATS_AS_JSON = "listDataFormatsAsJson";
     public static final String FIND_LANGUAGE_NAMES = "findLanguageNames";
     public static final String FIND_TRANSFORMER_NAMES = "findTransformerNames";
+    public static final String FIND_CONSOLE_NAMES = "findConsoleNames";
     public static final String LIST_LANGUAGES_AS_JSON = "listLanguagesAsJson";
     public static final String LIST_TRANSFORMERS_AS_JSON = "listTransformersAsJson";
+    public static final String LIST_CONSOLES_AS_JSON = "listConsolesAsJson";
 
     private final VersionHelper version = new VersionHelper();
 
@@ -231,6 +234,11 @@ public class DefaultCamelCatalog extends AbstractCamelCatalog implements CamelCa
         return cache(FIND_TRANSFORMER_NAMES, runtimeProvider::findTransformerNames);
     }
 
+    @Override
+    public List<String> findDevConsoleNames() {
+        return cache(FIND_CONSOLE_NAMES, runtimeProvider::findDevConsoleNames);
+    }
+
     @Override
     public List<String> findModelNames() {
         return cache("findModelNames", () -> {
@@ -341,6 +349,11 @@ public class DefaultCamelCatalog extends AbstractCamelCatalog implements CamelCa
         return cache("transformer-" + name, name, super::transformerJSonSchema);
     }
 
+    @Override
+    public String devConsoleJSonSchema(String name) {
+        return cache("dev-console-" + name, name, super::devConsoleJSonSchema);
+    }
+
     @Override
     public LanguageModel languageModel(String name) {
         return cache("language-model-" + name, name, super::languageModel);
@@ -351,6 +364,11 @@ public class DefaultCamelCatalog extends AbstractCamelCatalog implements CamelCa
         return cache("transformer-model-" + name, name, super::transformerModel);
     }
 
+    @Override
+    public DevConsoleModel devConsoleModel(String name) {
+        return cache("dev-console-model-" + name, name, super::devConsoleModel);
+    }
+
     @Override
     public String otherJSonSchema(String name) {
         return cache("other-" + name, name, super::otherJSonSchema);
@@ -456,6 +474,15 @@ public class DefaultCamelCatalog extends AbstractCamelCatalog implements CamelCa
                 .toList()));
     }
 
+    @Override
+    public String listDevConsolesAsJson() {
+        return cache(LIST_CONSOLES_AS_JSON, () -> JsonMapper.serialize(findDevConsoleNames().stream()
+                .map(this::devConsoleJSonSchema)
+                .map(JsonMapper::deserialize)
+                .map(o -> o.get("console"))
+                .toList()));
+    }
+
     @Override
     public String listModelsAsJson() {
         return cache("listModelsAsJson", () -> JsonMapper.serialize(findModelNames().stream()
@@ -520,6 +547,12 @@ public class DefaultCamelCatalog extends AbstractCamelCatalog implements CamelCa
                 return am;
             }
         }
+        for (String name : findDevConsoleNames()) {
+            ArtifactModel<?> am = devConsoleModel(name);
+            if (matchArtifact(am, groupId, artifactId, version)) {
+                return am;
+            }
+        }
         return null;
     }
 
diff --git a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java
index 308b0de64f9..caebf7098ea 100644
--- a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java
+++ b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultRuntimeProvider.java
@@ -29,11 +29,13 @@ public class DefaultRuntimeProvider implements RuntimeProvider {
     private static final String DATAFORMAT_DIR = "org/apache/camel/catalog/dataformats";
     private static final String LANGUAGE_DIR = "org/apache/camel/catalog/languages";
     private static final String TRANSFORMER_DIR = "org/apache/camel/catalog/transformers";
+    private static final String CONSOLE_DIR = "org/apache/camel/catalog/dev-consoles";
     private static final String OTHER_DIR = "org/apache/camel/catalog/others";
     private static final String COMPONENTS_CATALOG = "org/apache/camel/catalog/components.properties";
     private static final String DATA_FORMATS_CATALOG = "org/apache/camel/catalog/dataformats.properties";
     private static final String LANGUAGE_CATALOG = "org/apache/camel/catalog/languages.properties";
     private static final String TRANSFORMER_CATALOG = "org/apache/camel/catalog/transformers.properties";
+    private static final String CONSOLE_CATALOG = "org/apache/camel/catalog/dev-consoles.properties";
     private static final String OTHER_CATALOG = "org/apache/camel/catalog/others.properties";
 
     private CamelCatalog camelCatalog;
@@ -90,6 +92,11 @@ public class DefaultRuntimeProvider implements RuntimeProvider {
         return TRANSFORMER_DIR;
     }
 
+    @Override
+    public String getDevConsoleJSonSchemaDirectory() {
+        return CONSOLE_DIR;
+    }
+
     @Override
     public String getOtherJSonSchemaDirectory() {
         return OTHER_DIR;
@@ -111,6 +118,10 @@ public class DefaultRuntimeProvider implements RuntimeProvider {
         return TRANSFORMER_CATALOG;
     }
 
+    protected String getDevConsoleCatalog() {
+        return CONSOLE_CATALOG;
+    }
+
     protected String getOtherCatalog() {
         return OTHER_CATALOG;
     }
@@ -183,6 +194,23 @@ public class DefaultRuntimeProvider implements RuntimeProvider {
         return names;
     }
 
+    @Override
+    public List<String> findDevConsoleNames() {
+        List<String> names = new ArrayList<>();
+        try (InputStream is = getCamelCatalog().getVersionManager().getResourceAsStream(getDevConsoleCatalog())) {
+            if (is != null) {
+                try {
+                    CatalogHelper.loadLines(is, names);
+                } catch (IOException e) {
+                    // ignore
+                }
+            }
+        } catch (IOException e1) {
+            // ignore
+        }
+        return names;
+    }
+
     @Override
     public List<String> findOtherNames() {
         List<String> names = new ArrayList<>();
diff --git a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
index 6ca4c43b5ad..c1f589d02ea 100644
--- a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
+++ b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
@@ -24,6 +24,7 @@ public enum Kind {
     dataformat,
     language,
     transformer,
+    console,
     other,
     eip
 }
diff --git a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java
index 2122773f5dc..3731dce8815 100644
--- a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java
+++ b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/RuntimeProvider.java
@@ -70,6 +70,11 @@ public interface RuntimeProvider {
      */
     String getTransformerJSonSchemaDirectory();
 
+    /**
+     * Gets the directory where the dev-console json files are stored in the catalog JAR file
+     */
+    String getDevConsoleJSonSchemaDirectory();
+
     /**
      * Gets the directory where the other (miscellaneous) json files are stored in the catalog JAR file
      */
@@ -95,6 +100,11 @@ public interface RuntimeProvider {
      */
     List<String> findTransformerNames();
 
+    /**
+     * Find all the dev console names from the Camel catalog supported by the provider
+     */
+    List<String> findDevConsoleNames();
+
     /**
      * Find all the other (miscellaneous) names from the Camel catalog supported by the provider
      */
diff --git a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index bfe80389805..a4c168436a4 100644
--- a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -138,6 +138,19 @@ public class CamelCatalogTest {
         assertTrue(names.contains("http-application-cloudevents"));
     }
 
+    @Test
+    public void testFindDevConsoleNames() {
+        List<String> names = catalog.findDevConsoleNames();
+
+        assertTrue(names.contains("aws2-s3"));
+        assertTrue(names.contains("aws-secrets"));
+        assertTrue(names.contains("gc"));
+        assertTrue(names.contains("inflight"));
+        assertTrue(names.contains("mina"));
+        assertTrue(names.contains("platform-http"));
+        assertTrue(names.contains("variables"));
+    }
+
     @Test
     public void testFindModelNames() {
         List<String> names = catalog.findModelNames();
@@ -890,6 +903,17 @@ public class CamelCatalogTest {
         assertNotNull(tree);
     }
 
+    @Test
+    public void testListDevConsolesAsJson() throws Exception {
+        String json = catalog.listDevConsolesAsJson();
+        assertNotNull(json);
+
+        // validate we can parse the json
+        ObjectMapper mapper = new ObjectMapper();
+        JsonNode tree = mapper.readTree(json);
+        assertNotNull(tree);
+    }
+
     @Test
     public void testListModelsAsJson() throws Exception {
         String json = catalog.listModelsAsJson();
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/aws-secrets.json b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/aws-secrets.json
new file mode 100644
index 00000000000..40eec35602f
--- /dev/null
+++ b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/aws-secrets.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "aws-secrets",
+    "title": "AWS Secrets",
+    "description": "AWS Secrets Manager",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.aws.secretsmanager.SecretsDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-aws-secrets-manager",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..00362fb7a40
--- /dev/null
+++ b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=aws-secrets
+groupId=org.apache.camel
+artifactId=camel-aws-secrets-manager
+version=4.5.0-SNAPSHOT
+projectName=Camel :: AWS2 Secrets Manager
+projectDescription=Execute different operations on Amazon Secrets Manager service
diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
index a3c64de24a5..b37baabc967 100644
--- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
+++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsDevConsole.java
@@ -33,7 +33,7 @@ import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.vault.AwsVaultConfiguration;
 
-@DevConsole("aws-secrets")
+@DevConsole(name = "aws-secrets", displayName = "AWS Secrets", description = "AWS Secrets Manager")
 public class SecretsDevConsole extends AbstractDevConsole {
 
     private SecretsManagerPropertiesFunction propertiesFunction;
diff --git a/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/org/apache/camel/dev-console/aws2-s3.json b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/org/apache/camel/dev-console/aws2-s3.json
new file mode 100644
index 00000000000..c079f636c25
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/org/apache/camel/dev-console/aws2-s3.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "aws2-s3",
+    "title": "AWS S3",
+    "description": "AWS S3 Consumer",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.aws2.s3.AWS2S3Console",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-aws2-s3",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..47f679f968e
--- /dev/null
+++ b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=aws2-s3
+groupId=org.apache.camel
+artifactId=camel-aws2-s3
+version=4.5.0-SNAPSHOT
+projectName=Camel :: AWS2 S3
+projectDescription=Consume files and upload files through AWS S3 Service
diff --git a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Console.java b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Console.java
index 50711ad24ee..b205d40a25e 100644
--- a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Console.java
+++ b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Console.java
@@ -27,7 +27,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("aws2-s3")
+@DevConsole(name = "aws2-s3", displayName = "AWS S3", description = "AWS S3 Consumer")
 public class AWS2S3Console extends AbstractDevConsole {
 
     public AWS2S3Console() {
diff --git a/components/camel-azure/camel-azure-key-vault/src/generated/resources/META-INF/org/apache/camel/dev-console/azure-secrets.json b/components/camel-azure/camel-azure-key-vault/src/generated/resources/META-INF/org/apache/camel/dev-console/azure-secrets.json
new file mode 100644
index 00000000000..76f4d498ac9
--- /dev/null
+++ b/components/camel-azure/camel-azure-key-vault/src/generated/resources/META-INF/org/apache/camel/dev-console/azure-secrets.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "azure-secrets",
+    "title": "Azure Key Vault Secrets",
+    "description": "Azure Key Vault Secret Manager",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.azure.key.vault.AzureKeyVaultManagerDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-azure-key-vault",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-azure/camel-azure-key-vault/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-azure/camel-azure-key-vault/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..6a83993de78
--- /dev/null
+++ b/components/camel-azure/camel-azure-key-vault/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=azure-secrets
+groupId=org.apache.camel
+artifactId=camel-azure-key-vault
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Azure :: Key Vault
+projectDescription=Camel Azure Key Vault Component
diff --git a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java
index e995b197927..733efdcb62e 100644
--- a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java
+++ b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/AzureKeyVaultManagerDevConsole.java
@@ -32,7 +32,7 @@ import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.vault.AzureVaultConfiguration;
 
-@DevConsole("azure-secrets")
+@DevConsole(name = "azure-secrets", displayName = "Azure Key Vault Secrets", description = "Azure Key Vault Secret Manager")
 public class AzureKeyVaultManagerDevConsole extends AbstractDevConsole {
 
     private KeyVaultPropertiesFunction propertiesFunction;
diff --git a/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/gcp-secrets.json b/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/gcp-secrets.json
new file mode 100644
index 00000000000..74ebae13b00
--- /dev/null
+++ b/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/gcp-secrets.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "gcp-secrets",
+    "title": "GCP Secrets",
+    "description": "GCP Secret Manager",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.google.secret.manager.GoogleSecretManagerDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-google-secret-manager",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..0f10f96cded
--- /dev/null
+++ b/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=gcp-secrets
+groupId=org.apache.camel
+artifactId=camel-google-secret-manager
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Google :: Secret Manager
+projectDescription=Camel Component for Google Cloud Platform Secrets Manager
diff --git a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java
index 89072482f2f..34fbe100861 100644
--- a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java
+++ b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerDevConsole.java
@@ -33,7 +33,7 @@ import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.vault.GcpVaultConfiguration;
 
-@DevConsole("gcp-secrets")
+@DevConsole(name = "gcp-secrets", displayName = "GCP Secrets", description = "GCP Secret Manager")
 public class GoogleSecretManagerDevConsole extends AbstractDevConsole {
 
     private GoogleSecretManagerPropertiesFunction propertiesFunction;
diff --git a/components/camel-knative/camel-knative-http/src/generated/resources/META-INF/org/apache/camel/dev-console/knative.json b/components/camel-knative/camel-knative-http/src/generated/resources/META-INF/org/apache/camel/dev-console/knative.json
new file mode 100644
index 00000000000..7cd4a695aa4
--- /dev/null
+++ b/components/camel-knative/camel-knative-http/src/generated/resources/META-INF/org/apache/camel/dev-console/knative.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "knative",
+    "title": "Knative",
+    "description": "Knative HTTP Service",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.knative.http.KnativeHttpConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-knative-http",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-knative/camel-knative-http/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-knative/camel-knative-http/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..cdf1bfd1b7f
--- /dev/null
+++ b/components/camel-knative/camel-knative-http/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=knative
+groupId=org.apache.camel
+artifactId=camel-knative-http
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Knative HTTP
+projectDescription=Camel Knative HTTP
diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsole.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsole.java
index 324d6745586..457c6a12c3f 100644
--- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsole.java
+++ b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsole.java
@@ -32,7 +32,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("knative")
+@DevConsole(name = "knative", displayName = "Knative", description = "Knative HTTP Service")
 public class KnativeHttpConsole extends AbstractDevConsole {
 
     public KnativeHttpConsole() {
diff --git a/components/camel-micrometer/src/generated/resources/META-INF/org/apache/camel/dev-console/micrometer.json b/components/camel-micrometer/src/generated/resources/META-INF/org/apache/camel/dev-console/micrometer.json
new file mode 100644
index 00000000000..3e223a870a0
--- /dev/null
+++ b/components/camel-micrometer/src/generated/resources/META-INF/org/apache/camel/dev-console/micrometer.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "micrometer",
+    "title": "Micrometer",
+    "description": "Display runtime metrics",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.micrometer.MicrometerConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-micrometer",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-micrometer/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-micrometer/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..29f9ce7fd2e
--- /dev/null
+++ b/components/camel-micrometer/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=micrometer
+groupId=org.apache.camel
+artifactId=camel-micrometer
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Micrometer
+projectDescription=Camel Micrometer based monitoring component
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConsole.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConsole.java
index a4c869a6275..699b6b7faec 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConsole.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerConsole.java
@@ -34,7 +34,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("micrometer")
+@DevConsole(name = "micrometer", description = "Display runtime metrics")
 public class MicrometerConsole extends AbstractDevConsole {
 
     /**
diff --git a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/generated/resources/META-INF/org/apache/camel/dev-console/fault-tolerance.json b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/generated/resources/META-INF/org/apache/camel/dev-console/fault-tolerance.json
new file mode 100644
index 00000000000..7ac2091fbf0
--- /dev/null
+++ b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/generated/resources/META-INF/org/apache/camel/dev-console/fault-tolerance.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "fault-tolerance",
+    "title": "MicroProfile Circuit Breaker",
+    "description": "Display circuit breaker information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.microprofile.faulttolerance.FaultToleranceConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-microprofile-fault-tolerance",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..46ad2a3ef8e
--- /dev/null
+++ b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=fault-tolerance
+groupId=org.apache.camel
+artifactId=camel-microprofile-fault-tolerance
+version=4.5.0-SNAPSHOT
+projectName=Camel :: MicroProfile :: Fault Tolerance
+projectDescription=Circuit Breaker EIP using MicroProfile Fault Tolerance
diff --git a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceConsole.java b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceConsole.java
index 1713376d79f..ec0aa6b4ac0 100644
--- a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceConsole.java
+++ b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/main/java/org/apache/camel/component/microprofile/faulttolerance/FaultToleranceConsole.java
@@ -27,11 +27,12 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("fault-tolerance")
+@DevConsole(name = "fault-tolerance", displayName = "MicroProfile Circuit Breaker",
+            description = "Display circuit breaker information")
 public class FaultToleranceConsole extends AbstractDevConsole {
 
     public FaultToleranceConsole() {
-        super("camel", "fault-tolerance", "MicroProfile Fault Tolerance Circuit Breaker",
+        super("camel", "fault-tolerance", "MicroProfile Circuit Breaker",
               "Display circuit breaker information");
     }
 
diff --git a/components/camel-mina/src/generated/resources/META-INF/org/apache/camel/dev-console/mina.json b/components/camel-mina/src/generated/resources/META-INF/org/apache/camel/dev-console/mina.json
new file mode 100644
index 00000000000..98c2481468f
--- /dev/null
+++ b/components/camel-mina/src/generated/resources/META-INF/org/apache/camel/dev-console/mina.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "mina",
+    "title": "Mina",
+    "description": "Embedded Mina Server",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.mina.MinaConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-mina",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-mina/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-mina/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..1eedff9d192
--- /dev/null
+++ b/components/camel-mina/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=mina
+groupId=org.apache.camel
+artifactId=camel-mina
+version=4.5.0-SNAPSHOT
+projectName=Camel :: MINA
+projectDescription=Camel MINA support
diff --git a/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsole.java b/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsole.java
index 7a240b03bc5..cafde44205e 100644
--- a/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsole.java
+++ b/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsole.java
@@ -27,7 +27,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("mina")
+@DevConsole(name = "mina", description = "Embedded Mina Server")
 public class MinaConsole extends AbstractDevConsole {
 
     public MinaConsole() {
diff --git a/components/camel-mllp/src/generated/resources/META-INF/org/apache/camel/dev-console/mllp.json b/components/camel-mllp/src/generated/resources/META-INF/org/apache/camel/dev-console/mllp.json
new file mode 100644
index 00000000000..05624328434
--- /dev/null
+++ b/components/camel-mllp/src/generated/resources/META-INF/org/apache/camel/dev-console/mllp.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "mllp",
+    "title": "MLLP",
+    "description": "Embedded MLLP Server",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.mllp.MllpConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-mllp",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-mllp/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-mllp/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..6eedebd2efa
--- /dev/null
+++ b/components/camel-mllp/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=mllp
+groupId=org.apache.camel
+artifactId=camel-mllp
+version=4.5.0-SNAPSHOT
+projectName=Camel :: MLLP
+projectDescription=Camel MLLP Component
diff --git a/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpConsole.java b/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpConsole.java
index 456c46d2196..d3beedc2423 100644
--- a/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpConsole.java
+++ b/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpConsole.java
@@ -27,7 +27,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("mllp")
+@DevConsole(name = "mllp", displayName = "MLLP", description = "Embedded MLLP Server")
 public class MllpConsole extends AbstractDevConsole {
 
     public MllpConsole() {
diff --git a/components/camel-netty/src/generated/resources/META-INF/org/apache/camel/dev-console/netty.json b/components/camel-netty/src/generated/resources/META-INF/org/apache/camel/dev-console/netty.json
new file mode 100644
index 00000000000..f30f3adceec
--- /dev/null
+++ b/components/camel-netty/src/generated/resources/META-INF/org/apache/camel/dev-console/netty.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "netty",
+    "title": "Netty",
+    "description": "Embedded Netty Server",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.netty.NettyConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-netty",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-netty/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-netty/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..0e7b5cc4e42
--- /dev/null
+++ b/components/camel-netty/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=netty
+groupId=org.apache.camel
+artifactId=camel-netty
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Netty
+projectDescription=Camel Netty NIO based socket communication component
diff --git a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConsole.java b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConsole.java
index fe042f77f2b..c99c2357adf 100644
--- a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConsole.java
+++ b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConsole.java
@@ -27,7 +27,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("netty")
+@DevConsole(name = "netty", description = "Embedded Netty Server")
 public class NettyConsole extends AbstractDevConsole {
 
     public NettyConsole() {
diff --git a/components/camel-platform-http/src/generated/resources/META-INF/org/apache/camel/dev-console/platform-http.json b/components/camel-platform-http/src/generated/resources/META-INF/org/apache/camel/dev-console/platform-http.json
new file mode 100644
index 00000000000..c5ef30c9fdb
--- /dev/null
+++ b/components/camel-platform-http/src/generated/resources/META-INF/org/apache/camel/dev-console/platform-http.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "platform-http",
+    "title": "Platform HTTP",
+    "description": "Embedded HTTP Server",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.platform.http.PlatformHttpConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-platform-http",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-platform-http/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-platform-http/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..bc59635699a
--- /dev/null
+++ b/components/camel-platform-http/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=platform-http
+groupId=org.apache.camel
+artifactId=camel-platform-http
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Platform HTTP
+projectDescription=HTTP service leveraging existing runtime platform HTTP server
diff --git a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpConsole.java b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpConsole.java
index e4c47ba15b7..3263348f505 100644
--- a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpConsole.java
+++ b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpConsole.java
@@ -25,7 +25,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("platform-http")
+@DevConsole(name = "platform-http", displayName = "Platform HTTP", description = "Embedded HTTP Server")
 public class PlatformHttpConsole extends AbstractDevConsole {
 
     public PlatformHttpConsole() {
diff --git a/components/camel-quartz/src/generated/resources/META-INF/org/apache/camel/dev-console/quartz.json b/components/camel-quartz/src/generated/resources/META-INF/org/apache/camel/dev-console/quartz.json
new file mode 100644
index 00000000000..251f7f0a9c7
--- /dev/null
+++ b/components/camel-quartz/src/generated/resources/META-INF/org/apache/camel/dev-console/quartz.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "quartz",
+    "title": "Quartz",
+    "description": "Quartz Scheduler",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.quartz.QuartzConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-quartz",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-quartz/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-quartz/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..53b1d4ad186
--- /dev/null
+++ b/components/camel-quartz/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=quartz
+groupId=org.apache.camel
+artifactId=camel-quartz
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Quartz
+projectDescription=Camel Quartz support
diff --git a/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzConsole.java b/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzConsole.java
index 3fdbcfcf97c..a02280551ce 100644
--- a/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzConsole.java
+++ b/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzConsole.java
@@ -29,7 +29,7 @@ import org.quartz.JobExecutionContext;
 import org.quartz.Scheduler;
 import org.quartz.SchedulerMetaData;
 
-@DevConsole("quartz")
+@DevConsole(name = "quartz", description = "Quartz Scheduler")
 public class QuartzConsole extends AbstractDevConsole {
 
     public QuartzConsole() {
diff --git a/components/camel-resilience4j/src/generated/resources/META-INF/org/apache/camel/dev-console/resilience4j.json b/components/camel-resilience4j/src/generated/resources/META-INF/org/apache/camel/dev-console/resilience4j.json
new file mode 100644
index 00000000000..2a5c089c335
--- /dev/null
+++ b/components/camel-resilience4j/src/generated/resources/META-INF/org/apache/camel/dev-console/resilience4j.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "resilience4j",
+    "title": "Resilience Circuit Breaker",
+    "description": "Display circuit breaker information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.resilience4j.ResilienceConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-resilience4j",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-resilience4j/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-resilience4j/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..e22a5035d9f
--- /dev/null
+++ b/components/camel-resilience4j/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=resilience4j
+groupId=org.apache.camel
+artifactId=camel-resilience4j
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Resilience4j
+projectDescription=Circuit Breaker EIP using Resilience4j
diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceConsole.java b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceConsole.java
index f74485b52a0..9e3c45c2ccc 100644
--- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceConsole.java
+++ b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceConsole.java
@@ -27,7 +27,8 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("resilience4j")
+@DevConsole(name = "resilience4j", displayName = "Resilience Circuit Breaker",
+            description = "Display circuit breaker information")
 public class ResilienceConsole extends AbstractDevConsole {
 
     public ResilienceConsole() {
diff --git a/components/camel-stub/src/generated/resources/META-INF/org/apache/camel/dev-console/stub.json b/components/camel-stub/src/generated/resources/META-INF/org/apache/camel/dev-console/stub.json
new file mode 100644
index 00000000000..f95c4375e13
--- /dev/null
+++ b/components/camel-stub/src/generated/resources/META-INF/org/apache/camel/dev-console/stub.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "stub",
+    "title": "Stub",
+    "description": "Browse messages on stub endpoints",
+    "deprecated": false,
+    "javaType": "org.apache.camel.component.stub.StubConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-stub",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/components/camel-stub/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/components/camel-stub/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..dd9967c1aed
--- /dev/null
+++ b/components/camel-stub/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=stub
+groupId=org.apache.camel
+artifactId=camel-stub
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Stub
+projectDescription=Camel Stub component
diff --git a/components/camel-stub/src/main/java/org/apache/camel/component/stub/StubConsole.java b/components/camel-stub/src/main/java/org/apache/camel/component/stub/StubConsole.java
index 8a645f414b1..b05d66e24f7 100644
--- a/components/camel-stub/src/main/java/org/apache/camel/component/stub/StubConsole.java
+++ b/components/camel-stub/src/main/java/org/apache/camel/component/stub/StubConsole.java
@@ -31,7 +31,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("stub")
+@DevConsole(name = "stub", description = "Browse messages on stub endpoints")
 public class StubConsole extends AbstractDevConsole {
 
     /**
@@ -55,7 +55,7 @@ public class StubConsole extends AbstractDevConsole {
     public static final String BROWSE = "browse";
 
     public StubConsole() {
-        super("camel", "stub", "Stub", "Browse messages on stub");
+        super("camel", "stub", "Stub", "Browse messages on stub endpoints");
     }
 
     @Override
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/DevConsole.java b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/DevConsole.java
index f504ea000b2..337360203da 100644
--- a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/DevConsole.java
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/DevConsole.java
@@ -31,9 +31,24 @@ import java.lang.annotation.Target;
 @ServiceFactory("dev-console")
 public @interface DevConsole {
 
+    /**
+     * The group of the dev console
+     */
+    String group() default "camel";
+
     /**
      * The ID of the dev console.
      */
-    String value();
+    String name();
+
+    /**
+     * Display name (title)
+     */
+    String displayName() default "";
+
+    /**
+     * Description of the console
+     */
+    String description();
 
 }
diff --git a/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java
index 7b2e7ffdd69..c2f8c1b3b40 100644
--- a/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/CatalogCamelContext.java
@@ -55,6 +55,14 @@ public interface CatalogCamelContext extends CamelContext {
      */
     String getTransformerParameterJsonSchema(String transformerName) throws IOException;
 
+    /**
+     * Returns the JSON schema representation of the {@link org.apache.camel.spi.annotations.DevConsole} parameters for
+     * the given dev-console name.
+     *
+     * @return the json or <tt>null</tt> if the dev-console does not exist
+     */
+    String getDevConsoleParameterJsonSchema(String devConsoleName) throws IOException;
+
     /**
      * Returns the JSON schema representation of the EIP parameters for the given EIP name.
      *
diff --git a/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java b/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
index 788fc9b96b6..7d04305e0f2 100644
--- a/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
+++ b/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
@@ -58,6 +58,14 @@ public interface JSonSchemaResolver {
      */
     String getTransformerJSonSchema(String name);
 
+    /**
+     * Returns the dev console information as JSON format.
+     *
+     * @param  name the dev console name
+     * @return      dev console details in JSon
+     */
+    String getDevConsoleJSonSchema(String name);
+
     /**
      * Returns the other (miscellaneous) information as JSON format.
      *
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index d9e9f236e1c..0bd5970c301 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -1480,6 +1480,17 @@ public abstract class AbstractCamelContext extends BaseService
         return null;
     }
 
+    @Override
+    public String getDevConsoleParameterJsonSchema(String devConsoleName) throws IOException {
+        String name = sanitizeFileName(devConsoleName) + ".json";
+        String path = DefaultDevConsoleResolver.DEV_CONSOLE_RESOURCE_PATH + name;
+        String inputStream = doLoadResource(devConsoleName, path, "console");
+        if (inputStream != null) {
+            return inputStream;
+        }
+        return null;
+    }
+
     // Helper methods
     // -----------------------------------------------------------------------
 
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/bean.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/bean.json
new file mode 100644
index 00000000000..d7653bec27d
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/bean.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "bean",
+    "title": "Bean",
+    "description": "Displays Java beans from the registry",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.BeanDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/blocked.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/blocked.json
new file mode 100644
index 00000000000..81213ab7bc8
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/blocked.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "blocked",
+    "title": "Blocked Exchanges",
+    "description": "Display blocked exchanges",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.BlockedConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/circuit-breaker.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/circuit-breaker.json
new file mode 100644
index 00000000000..6caa284f69a
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/circuit-breaker.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "circuit-breaker",
+    "title": "Circuit Breaker",
+    "description": "Display circuit breaker information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.CircuitBreakerDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/consumer.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/consumer.json
new file mode 100644
index 00000000000..5cf8731b25e
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/consumer.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "consumer",
+    "title": "Consumers",
+    "description": "Display information about Camel consumers",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.ConsumerDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/context.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/context.json
new file mode 100644
index 00000000000..a6ef2bbaafc
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/context.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "context",
+    "title": "CamelContext",
+    "description": "Overall information about the CamelContext",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.ContextDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/debug.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/debug.json
new file mode 100644
index 00000000000..31f2c2565b0
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/debug.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "debug",
+    "title": "Debug",
+    "description": "Camel route debugger",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.DebugDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/endpoint.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/endpoint.json
new file mode 100644
index 00000000000..1c009d5db68
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/endpoint.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "endpoint",
+    "title": "Endpoints",
+    "description": "Endpoint Registry information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.EndpointDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/event.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/event.json
new file mode 100644
index 00000000000..08c68178984
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/event.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "event",
+    "title": "Camel Events",
+    "description": "The most recent Camel events",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.EventConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/gc.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/gc.json
new file mode 100644
index 00000000000..1d9ec216984
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/gc.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "gc",
+    "title": "Garbage Collector",
+    "description": "Displays Garbage Collector information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.GarbageCollectorDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/health.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/health.json
new file mode 100644
index 00000000000..7135acdc3f0
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/health.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "health",
+    "title": "Health Check",
+    "description": "Health Check Status",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.HealthDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/inflight.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/inflight.json
new file mode 100644
index 00000000000..3f1ed7f85c0
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/inflight.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "inflight",
+    "title": "Inflight Exchanges",
+    "description": "Display inflight exchanges",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.InflightConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/java-security.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/java-security.json
new file mode 100644
index 00000000000..8f78ece00b9
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/java-security.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "java-security",
+    "title": "Java Security",
+    "description": "Displays Java Security (JSSE) information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.JavaSecurityDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jvm.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jvm.json
new file mode 100644
index 00000000000..2dddb0a85cf
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jvm.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "jvm",
+    "title": "JVM",
+    "description": "Displays JVM information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.JvmDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/log.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/log.json
new file mode 100644
index 00000000000..5b6b4fb82d1
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/log.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "log",
+    "title": "Log",
+    "description": "Logging framework",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.LogDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/memory.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/memory.json
new file mode 100644
index 00000000000..21b73f22d48
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/memory.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "memory",
+    "title": "JVM Memory",
+    "description": "Displays JVM memory information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.MemoryDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/properties.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/properties.json
new file mode 100644
index 00000000000..ecc93c54e74
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/properties.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "properties",
+    "title": "Properties",
+    "description": "Displays the properties loaded by Camel",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.PropertiesDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/reload.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/reload.json
new file mode 100644
index 00000000000..1ff61b72ade
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/reload.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "reload",
+    "title": "Reload",
+    "description": "Console for reloading running Camel",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.ReloadDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-controller.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-controller.json
new file mode 100644
index 00000000000..75668138496
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-controller.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "route-controller",
+    "title": "Route Controller",
+    "description": "Route controller information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.RouteControllerConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-dump.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-dump.json
new file mode 100644
index 00000000000..d5a7fff4006
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-dump.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "route-dump",
+    "title": "Route Dump",
+    "description": "Dump route in XML or YAML format",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.RouteDumpDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route.json
new file mode 100644
index 00000000000..ad9ca12f312
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "route",
+    "title": "Route",
+    "description": "Route information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.RouteDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source.json
new file mode 100644
index 00000000000..e919ccc1394
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "source",
+    "title": "Source",
+    "description": "Dump route source code",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.SourceDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/startup-recorder.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/startup-recorder.json
new file mode 100644
index 00000000000..73761bdc3e3
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/startup-recorder.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "startup-recorder",
+    "title": "Startup Recorder",
+    "description": "Starting recording information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.StartupRecorderDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/thread.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/thread.json
new file mode 100644
index 00000000000..66374a265db
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/thread.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "thread",
+    "title": "Thread",
+    "description": "Displays JVM Threads information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.ThreadDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/top.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/top.json
new file mode 100644
index 00000000000..98ec18bb1d9
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/top.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "top",
+    "title": "Top Routes",
+    "description": "Display the top routes",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.TopDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/trace.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/trace.json
new file mode 100644
index 00000000000..5fa13493f46
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/trace.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "trace",
+    "title": "Camel Tracing",
+    "description": "Trace routed messages",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.TraceDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/transformers.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/transformers.json
new file mode 100644
index 00000000000..b2b59833d78
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/transformers.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "transformers",
+    "title": "Data Type Transformers",
+    "description": "Data-type transformer information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.TransformerConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/type-converters.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/type-converters.json
new file mode 100644
index 00000000000..6663487da5b
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/type-converters.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "type-converters",
+    "title": "Type Converters",
+    "description": "Camel Type Converter information",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.TypeConverterConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/variables.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/variables.json
new file mode 100644
index 00000000000..2af11b40b66
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/variables.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel",
+    "name": "variables",
+    "title": "Variables",
+    "description": "Displays variables",
+    "deprecated": false,
+    "javaType": "org.apache.camel.impl.console.VariablesDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/circuit-breaker b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/circuit-breaker
new file mode 100644
index 00000000000..62c91276e87
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/circuit-breaker
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.impl.console.CircuitBreakerDevConsole
diff --git a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/route-circuit-breaker b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/route-circuit-breaker
deleted file mode 100644
index 8500cb624bb..00000000000
--- a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/route-circuit-breaker
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.impl.console.RouteCircuitBreakerDevConsole
diff --git a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..946daf1a1ce
--- /dev/null
+++ b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=bean blocked circuit-breaker consumer context debug endpoint event gc health inflight java-security jvm log memory properties reload route route-controller route-dump source startup-recorder thread top trace transformers type-converters variables
+groupId=org.apache.camel
+artifactId=camel-console
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Console
+projectDescription=Camel Developer Console
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/BeanDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/BeanDevConsole.java
index f94dd336421..ad74cb0c332 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/BeanDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/BeanDevConsole.java
@@ -23,7 +23,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("bean")
+@DevConsole(name = "bean", description = "Displays Java beans from the registry")
 public class BeanDevConsole extends AbstractDevConsole {
 
     public BeanDevConsole() {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java
index 8c897dc9b93..b641ade3012 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java
@@ -27,7 +27,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("blocked")
+@DevConsole(name = "blocked", displayName = "Blocked Exchanges", description = "Display blocked exchanges")
 public class BlockedConsole extends AbstractDevConsole {
 
     public BlockedConsole() {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteCircuitBreakerDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/CircuitBreakerDevConsole.java
similarity index 90%
rename from core/camel-console/src/main/java/org/apache/camel/impl/console/RouteCircuitBreakerDevConsole.java
rename to core/camel-console/src/main/java/org/apache/camel/impl/console/CircuitBreakerDevConsole.java
index ce0ec6061b6..27f5a0dfda1 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteCircuitBreakerDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/CircuitBreakerDevConsole.java
@@ -28,11 +28,11 @@ import org.apache.camel.throttling.ThrottlingExceptionRoutePolicy;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("route-circuit-breaker")
-public class RouteCircuitBreakerDevConsole extends AbstractDevConsole {
+@DevConsole(name = "circuit-breaker", description = "Display circuit breaker information")
+public class CircuitBreakerDevConsole extends AbstractDevConsole {
 
-    public RouteCircuitBreakerDevConsole() {
-        super("camel", "route-circuit-breaker", "Route Circuit Breaker", "Display circuit breaker information");
+    public CircuitBreakerDevConsole() {
+        super("camel", "circuit-breaker", "Circuit Breaker", "Display circuit breaker information");
     }
 
     @Override
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java
index a75ea58d2fb..1fa40f79cb8 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java
@@ -34,7 +34,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("consumer")
+@DevConsole(name = "consumer", displayName = "Consumers", description = "Display information about Camel consumers")
 public class ConsumerDevConsole extends AbstractDevConsole {
 
     public ConsumerDevConsole() {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
index 3b332b769ee..0f80a08d782 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
@@ -29,7 +29,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("context")
+@DevConsole(name = "context", displayName = "CamelContext", description = "Overall information about the CamelContext")
 public class ContextDevConsole extends AbstractDevConsole {
 
     public ContextDevConsole() {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java
index 72100c0295a..2d1a542747c 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java
@@ -39,7 +39,7 @@ import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
 
-@DevConsole("debug")
+@DevConsole(name = "debug", description = "Camel route debugger")
 public class DebugDevConsole extends AbstractDevConsole {
 
     public static final String COMMAND = "command";
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
index 159590ed284..8b6c2b882c3 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Default {@link org.apache.camel.console.DevConsoleRegistry}.
  */
-@org.apache.camel.spi.annotations.DevConsole(DevConsoleRegistry.NAME)
+@org.apache.camel.spi.annotations.DevConsole(name = DevConsoleRegistry.NAME, description = "Default Console Registry")
 @DeferredContextBinding
 public class DefaultDevConsoleRegistry extends ServiceSupport implements DevConsoleRegistry {
 
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java
index d5180306d91..a6343a7070a 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java
@@ -29,7 +29,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("endpoint")
+@DevConsole(name = "endpoint", displayName = "Endpoints", description = "Endpoint Registry information")
 public class EndpointDevConsole extends AbstractDevConsole {
 
     public EndpointDevConsole() {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java
index 1415ec7ccc5..106472c9416 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/EventConsole.java
@@ -30,7 +30,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("event")
+@DevConsole(name = "event", displayName = "Camel Events", description = "The most recent Camel events")
 @Configurer(bootstrap = true)
 public class EventConsole extends AbstractDevConsole {
 
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/GarbageCollectorDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/GarbageCollectorDevConsole.java
index cd7ebb7a01d..3a4252f7239 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/GarbageCollectorDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/GarbageCollectorDevConsole.java
@@ -28,7 +28,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("gc")
+@DevConsole(name = "gc", displayName = "Garbage Collector", description = "Displays Garbage Collector information")
 @Configurer(bootstrap = true)
 public class GarbageCollectorDevConsole extends AbstractDevConsole {
 
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/HealthDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/HealthDevConsole.java
index 75aca65610a..b71b44322e6 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/HealthDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/HealthDevConsole.java
@@ -30,7 +30,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("health")
+@DevConsole(name = "health", displayName = "Health Check", description = "Health Check Status")
 public class HealthDevConsole extends AbstractDevConsole {
 
     public HealthDevConsole() {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/InflightConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/InflightConsole.java
index bc4adeea440..3ad4d5f2583 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/InflightConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/InflightConsole.java
@@ -26,7 +26,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("inflight")
+@DevConsole(name = "inflight", displayName = "Inflight Exchanges", description = "Display inflight exchanges")
 public class InflightConsole extends AbstractDevConsole {
 
     /**
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/JavaSecurityDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/JavaSecurityDevConsole.java
index b4aa19e2ff5..8feb6c7637b 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/JavaSecurityDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/JavaSecurityDevConsole.java
@@ -27,7 +27,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("java-security")
+@DevConsole(name = "java-security", description = "Displays Java Security (JSSE) information")
 @Configurer(bootstrap = true)
 public class JavaSecurityDevConsole extends AbstractDevConsole {
 
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/JvmDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/JvmDevConsole.java
index 22a991a98cb..a89fa7c7e5b 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/JvmDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/JvmDevConsole.java
@@ -27,7 +27,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("jvm")
+@DevConsole(name = "jvm", displayName = "JVM", description = "Displays JVM information")
 @Configurer(bootstrap = true)
 public class JvmDevConsole extends AbstractDevConsole {
 
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/LogDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/LogDevConsole.java
index a4ba2053d5b..3e90ae12ff5 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/LogDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/LogDevConsole.java
@@ -28,7 +28,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("log")
+@DevConsole(name = "log", description = "Logging framework")
 public class LogDevConsole extends AbstractDevConsole {
 
     // log4j support
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/MemoryDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/MemoryDevConsole.java
index f5007abdce3..f02708dfb80 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/MemoryDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/MemoryDevConsole.java
@@ -27,7 +27,7 @@ import org.apache.camel.util.json.JsonObject;
 
 import static org.apache.camel.util.UnitUtils.printUnitFromBytesDot;
 
-@DevConsole("memory")
+@DevConsole(name = "memory", displayName = "JVM Memory", description = "Displays JVM memory information")
 @Configurer(bootstrap = true)
 public class MemoryDevConsole extends AbstractDevConsole {
 
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/PropertiesDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/PropertiesDevConsole.java
index abde673d4eb..a539b893036 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/PropertiesDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/PropertiesDevConsole.java
@@ -23,7 +23,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("properties")
+@DevConsole(name = "properties", description = "Displays the properties loaded by Camel")
 public class PropertiesDevConsole extends AbstractDevConsole {
 
     public PropertiesDevConsole() {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ReloadDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ReloadDevConsole.java
index 83057664c3d..8d82525d202 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ReloadDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ReloadDevConsole.java
@@ -26,7 +26,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("reload")
+@DevConsole(name = "reload", description = "Console for reloading running Camel")
 public class ReloadDevConsole extends AbstractDevConsole {
 
     /**
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java
index f727cdd5e38..5a9264857a4 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java
@@ -38,14 +38,14 @@ import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
 
-@DevConsole("route-controller")
+@DevConsole(name = "route-controller", description = "Route controller information")
 public class RouteControllerConsole extends AbstractDevConsole {
 
     public static final String STACKTRACE = "stacktrace";
     public static final String ERROR = "error";
 
     public RouteControllerConsole() {
-        super("camel", "route-controller", "Route Controller", "Route startup information");
+        super("camel", "route-controller", "Route Controller", "Route controller information");
     }
 
     @Override
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
index a289c96982e..3f53ba6a20d 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
@@ -40,7 +40,7 @@ import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
 
-@DevConsole("route")
+@DevConsole(name = "route", description = "Route information")
 public class RouteDevConsole extends AbstractDevConsole {
 
     /**
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java
index 63c127b0d82..65b46aeb838 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java
@@ -33,7 +33,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("route-dump")
+@DevConsole(name = "route-dump", description = "Dump route in XML or YAML format")
 public class RouteDumpDevConsole extends AbstractDevConsole {
 
     /**
@@ -57,7 +57,7 @@ public class RouteDumpDevConsole extends AbstractDevConsole {
     public static final String URI_AS_PARAMETERS = "uriAsParameters";
 
     public RouteDumpDevConsole() {
-        super("camel", "route-dump", "Route Dump", "Dump route structure in XML or YAML format");
+        super("camel", "route-dump", "Route Dump", "Dump route in XML or YAML format");
     }
 
     @Override
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
index ba7faf6e3d5..82c7f57fbee 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
@@ -37,7 +37,7 @@ import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("source")
+@DevConsole(name = "source", description = "Dump route source code")
 public class SourceDevConsole extends AbstractDevConsole {
 
     /**
@@ -51,7 +51,7 @@ public class SourceDevConsole extends AbstractDevConsole {
     public static final String LIMIT = "limit";
 
     public SourceDevConsole() {
-        super("camel", "source", "Source", "Display route source code");
+        super("camel", "source", "Source", "Dump route source code");
     }
 
     @Override
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/StartupRecorderDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/StartupRecorderDevConsole.java
index c67b8499fc6..e2130cb157a 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/StartupRecorderDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/StartupRecorderDevConsole.java
@@ -27,11 +27,11 @@ import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("startup-recorder")
+@DevConsole(name = "startup-recorder", description = "Starting recording information")
 public class StartupRecorderDevConsole extends AbstractDevConsole {
 
     public StartupRecorderDevConsole() {
-        super("camel", "startup-recorder", "Startup Recorder", "Display startup recording");
+        super("camel", "startup-recorder", "Startup Recorder", "Starting recording information");
     }
 
     @Override
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ThreadDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ThreadDevConsole.java
index 3deb5a82bcb..8f7680392f3 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ThreadDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ThreadDevConsole.java
@@ -28,12 +28,12 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("thread")
+@DevConsole(name = "thread", description = "Displays JVM Threads information")
 @Configurer(bootstrap = true)
 public class ThreadDevConsole extends AbstractDevConsole {
 
     public ThreadDevConsole() {
-        super("jvm", "thread", "Thread", "Displays Threads information");
+        super("jvm", "thread", "Thread", "Displays JVM Threads information");
     }
 
     @Override
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
index 54358b71059..f17264715b3 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
@@ -42,7 +42,7 @@ import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
 
-@DevConsole("top")
+@DevConsole(name = "top", displayName = "Top Routes", description = "Display the top routes")
 public class TopDevConsole extends AbstractDevConsole {
 
     /**
@@ -56,7 +56,7 @@ public class TopDevConsole extends AbstractDevConsole {
     public static final String LIMIT = "limit";
 
     public TopDevConsole() {
-        super("camel", "top", "Top", "Display the top routes");
+        super("camel", "top", "Top Routes", "Display the top routes");
     }
 
     @Override
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java
index 771c472dda6..8fea16ac83a 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java
@@ -29,7 +29,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("trace")
+@DevConsole(name = "trace", displayName = "Camel Tracing", description = "Trace routed messages")
 @Configurer(bootstrap = true)
 public class TraceDevConsole extends AbstractDevConsole {
 
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/TransformerConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/TransformerConsole.java
index ebb6e65b18c..d400f81fc5d 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/TransformerConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/TransformerConsole.java
@@ -25,11 +25,11 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("transformers")
+@DevConsole(name = "transformers", displayName = "Data Type Transformers", description = "Data-type transformer information")
 public class TransformerConsole extends AbstractDevConsole {
 
     public TransformerConsole() {
-        super("camel", "transformers", "Data Type Transformers", "Camel Data Type Transformer information");
+        super("camel", "transformers", "Data Type Transformers", "Data-type transformer information");
     }
 
     @Override
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/TypeConverterConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/TypeConverterConsole.java
index dd28b9b3d10..c13365853c9 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/TypeConverterConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/TypeConverterConsole.java
@@ -23,7 +23,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("type-converters")
+@DevConsole(name = "type-converters", description = "Camel Type Converter information")
 public class TypeConverterConsole extends AbstractDevConsole {
 
     public TypeConverterConsole() {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/VariablesDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/VariablesDevConsole.java
index 3769cd57a8e..26f0599ade0 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/VariablesDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/VariablesDevConsole.java
@@ -26,7 +26,7 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("variables")
+@DevConsole(name = "variables", description = "Displays variables")
 public class VariablesDevConsole extends AbstractDevConsole {
 
     public VariablesDevConsole() {
diff --git a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
index 89255902142..534ea288a17 100644
--- a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
+++ b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
@@ -48,6 +48,7 @@ import org.apache.camel.tooling.model.BaseModel;
 import org.apache.camel.tooling.model.BaseOptionModel;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.DataFormatModel;
+import org.apache.camel.tooling.model.DevConsoleModel;
 import org.apache.camel.tooling.model.EipModel;
 import org.apache.camel.tooling.model.JsonMapper;
 import org.apache.camel.tooling.model.LanguageModel;
@@ -122,6 +123,15 @@ public abstract class AbstractCamelCatalog {
         return json != null ? JsonMapper.generateTransformerModel(json) : null;
     }
 
+    public String devConsoleJSonSchema(String name) {
+        return getJSonSchemaResolver().getDevConsoleJSonSchema(name);
+    }
+
+    public DevConsoleModel devConsoleModel(String name) {
+        String json = devConsoleJSonSchema(name);
+        return json != null ? JsonMapper.generateDevConsoleModel(json) : null;
+    }
+
     public String otherJSonSchema(String name) {
         return getJSonSchemaResolver().getOtherJSonSchema(name);
     }
diff --git a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
index bf427a042c4..8d32943cb44 100644
--- a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
+++ b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
@@ -82,6 +82,16 @@ public class CamelContextJSonSchemaResolver implements JSonSchemaResolver {
         return null;
     }
 
+    @Override
+    public String getDevConsoleJSonSchema(String name) {
+        try {
+            return camelContext.getDevConsoleParameterJsonSchema(name);
+        } catch (IOException e) {
+            // ignore
+        }
+        return null;
+    }
+
     @Override
     public String getOtherJSonSchema(String name) {
         // not supported
diff --git a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
index 300ec9535d0..f9496c19c95 100644
--- a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
+++ b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
@@ -54,6 +54,11 @@ class ModelJSonSchemaResolver implements JSonSchemaResolver {
         throw new UnsupportedOperationException("Only getModelJSonSchema is in use");
     }
 
+    @Override
+    public String getDevConsoleJSonSchema(String name) {
+        throw new UnsupportedOperationException("Only getModelJSonSchema is in use");
+    }
+
     @Override
     public String getOtherJSonSchema(String name) {
         throw new UnsupportedOperationException("Only getModelJSonSchema is in use");
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_5.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_5.adoc
index 7b204466ca6..98e2921388b 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_5.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_5.adoc
@@ -139,6 +139,26 @@ moved into a new group `camel.debug` with more options to configure the backlog
 
 To enable backlog tracing you should now set `camel.trace.enabled=true` instead of `camel.main.backlogTracing=true`.
 
+=== camel-console
+
+The `@DevConsole` annotation has been enhanced to include more information.
+
+Migrate from
+
+[source,java]
+----
+@DevConsole("stub")
+----
+
+To
+
+[source,java]
+----
+@DevConsole(name = "stub", description = "Browse messages on stub endpoints")
+----
+
+We also renamed the `route-curcuit-breaker` console to `circuit-breaker`.
+
 === camel-jsonpath
 
 The `camel-jsonpath` will now work more similar as `camel-jq` when you specify a `resultType` and have a list of entities.
diff --git a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
index 593f8369f71..069dd3946ca 100644
--- a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
+++ b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
@@ -899,11 +899,11 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
                         root.put("fault-tolerance", json);
                     }
                 }
-                DevConsole dc12a = dcr.resolveById("route-circuit-breaker");
+                DevConsole dc12a = dcr.resolveById("circuit-breaker");
                 if (dc12a != null) {
                     JsonObject json = (JsonObject) dc12a.call(DevConsole.MediaType.JSON);
                     if (json != null && !json.isEmpty()) {
-                        root.put("route-circuit-breaker", json);
+                        root.put("circuit-breaker", json);
                     }
                 }
                 DevConsole dc12 = camelContext.getCamelContextExtension().getContextPlugin(DevConsoleRegistry.class)
diff --git a/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jbang.json b/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jbang.json
new file mode 100644
index 00000000000..b4b21ac3464
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jbang.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel-jbang",
+    "name": "jbang",
+    "title": "Camel JBang",
+    "description": "Information about Camel JBang",
+    "deprecated": false,
+    "javaType": "org.apache.camel.jbang.console.JBangDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-jbang-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source-dir.json b/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source-dir.json
new file mode 100644
index 00000000000..fc8fe37e06d
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source-dir.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel-jbang",
+    "name": "source-dir",
+    "title": "Source Directory",
+    "description": "Information about Camel JBang source files",
+    "deprecated": false,
+    "javaType": "org.apache.camel.jbang.console.SourceDirDevConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-jbang-console",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..0aa1d1696ca
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=jbang source-dir
+groupId=org.apache.camel
+artifactId=camel-jbang-console
+version=4.5.0-SNAPSHOT
+projectName=Camel :: JBang :: Console
+projectDescription=Camel JBang Console
diff --git a/dsl/camel-jbang/camel-jbang-console/src/main/java/org/apache/camel/jbang/console/JBangDevConsole.java b/dsl/camel-jbang/camel-jbang-console/src/main/java/org/apache/camel/jbang/console/JBangDevConsole.java
index 9645b901540..b81f10c14d1 100644
--- a/dsl/camel-jbang/camel-jbang-console/src/main/java/org/apache/camel/jbang/console/JBangDevConsole.java
+++ b/dsl/camel-jbang/camel-jbang-console/src/main/java/org/apache/camel/jbang/console/JBangDevConsole.java
@@ -22,11 +22,11 @@ import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("jbang")
+@DevConsole(name = "jbang", group = "camel-jbang", displayName = "Camel JBang", description = "Information about Camel JBang")
 public class JBangDevConsole extends AbstractDevConsole {
 
     public JBangDevConsole() {
-        super("camel", "jbang", "Camel JBang", "Information about Camel JBang");
+        super("camel-jbang", "jbang", "Camel JBang", "Information about Camel JBang");
     }
 
     @Override
diff --git a/dsl/camel-jbang/camel-jbang-console/src/main/java/org/apache/camel/jbang/console/SourceDirDevConsole.java b/dsl/camel-jbang/camel-jbang-console/src/main/java/org/apache/camel/jbang/console/SourceDirDevConsole.java
index 87e2bf48ba3..6ad7a2b9e6a 100644
--- a/dsl/camel-jbang/camel-jbang-console/src/main/java/org/apache/camel/jbang/console/SourceDirDevConsole.java
+++ b/dsl/camel-jbang/camel-jbang-console/src/main/java/org/apache/camel/jbang/console/SourceDirDevConsole.java
@@ -35,7 +35,8 @@ import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("source-dir")
+@DevConsole(name = "source-dir", group = "camel-jbang", displayName = "Source Directory",
+            description = "Information about Camel JBang source files")
 public class SourceDirDevConsole extends AbstractDevConsole {
 
     /**
@@ -44,7 +45,7 @@ public class SourceDirDevConsole extends AbstractDevConsole {
     public static final String SOURCE = "source";
 
     public SourceDirDevConsole() {
-        super("camel", "source-dir", "Source Directory", "Information about Camel JBang source files");
+        super("camel-jbang", "source-dir", "Source Directory", "Information about Camel JBang source files");
     }
 
     @Override
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
index da0b6af9cca..89ef4cdd0fe 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
@@ -24,6 +24,7 @@ import org.apache.camel.dsl.jbang.core.commands.action.*;
 import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogCommand;
 import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogComponent;
 import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDataFormat;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDevConsole;
 import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDoc;
 import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogKamelet;
 import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogLanguage;
@@ -127,6 +128,7 @@ public class CamelJBangMain implements Callable<Integer> {
                         .addSubcommand("dataformat", new CommandLine(new CatalogDataFormat(main)))
                         .addSubcommand("language", new CommandLine(new CatalogLanguage(main)))
                         .addSubcommand("transformer", new CommandLine(new CatalogTransformer(main)))
+                        .addSubcommand("dev-console", new CommandLine(new CatalogDevConsole(main)))
                         .addSubcommand("other", new CommandLine(new CatalogOther(main)))
                         .addSubcommand("kamelet", new CommandLine(new CatalogKamelet(main))))
                 .addSubcommand("doc", new CommandLine(new CatalogDoc(main)))
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDevConsole.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDevConsole.java
new file mode 100644
index 00000000000..afdf4ebd278
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDevConsole.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.commands.catalog;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.tooling.model.DevConsoleModel;
+import picocli.CommandLine;
+
+@CommandLine.Command(name = "dev-console",
+                     description = "List dev-consoles from the Camel Catalog", sortOptions = false)
+public class CatalogDevConsole extends CatalogBaseCommand {
+
+    public CatalogDevConsole(CamelJBangMain main) {
+        super(main);
+    }
+
+    @Override
+    List<Row> collectRows() {
+        List<Row> rows = new ArrayList<>();
+        for (String name : catalog.findDevConsoleNames()) {
+            DevConsoleModel model = catalog.devConsoleModel(name);
+            if (model != null) {
+                Row row = new Row();
+                row.name = model.getName();
+                row.title = model.getTitle();
+                row.level = model.getSupportLevel().name();
+                row.since = fixQuarkusSince(model.getFirstVersionShort());
+                row.description = model.getDescription();
+                row.label = model.getLabel() != null ? model.getLabel() : "";
+                row.deprecated = model.isDeprecated();
+                row.nativeSupported = model.isNativeSupported();
+                row.gav = getGAV(model);
+                rows.add(row);
+            }
+        }
+        return rows;
+    }
+
+}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java
index 7f81185d02a..7d86cb9552d 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java
@@ -108,7 +108,7 @@ public class ListCircuitBreaker extends ProcessWatchCommand {
                                 }
                             }
                         }
-                        mo = (JsonObject) root.get("route-circuit-breaker");
+                        mo = (JsonObject) root.get("circuit-breaker");
                         if (mo != null) {
                             JsonArray arr = (JsonArray) mo.get("circuitBreakers");
                             if (arr != null) {
diff --git a/dsl/camel-kamelet-main/src/generated/resources/META-INF/org/apache/camel/dev-console/dependency-downloader.json b/dsl/camel-kamelet-main/src/generated/resources/META-INF/org/apache/camel/dev-console/dependency-downloader.json
new file mode 100644
index 00000000000..2bc8b5863ec
--- /dev/null
+++ b/dsl/camel-kamelet-main/src/generated/resources/META-INF/org/apache/camel/dev-console/dependency-downloader.json
@@ -0,0 +1,15 @@
+{
+  "console": {
+    "kind": "console",
+    "group": "camel-jbang",
+    "name": "dependency-downloader",
+    "title": "Maven Dependency Downloader",
+    "description": "Displays information about dependencies downloaded at runtime",
+    "deprecated": false,
+    "javaType": "org.apache.camel.main.console.DependencyDownloaderConsole",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-kamelet-main",
+    "version": "4.5.0-SNAPSHOT"
+  }
+}
+
diff --git a/dsl/camel-kamelet-main/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/dsl/camel-kamelet-main/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
new file mode 100644
index 00000000000..06c80a54be0
--- /dev/null
+++ b/dsl/camel-kamelet-main/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+dev-consoles=dependency-downloader
+groupId=org.apache.camel
+artifactId=camel-kamelet-main
+version=4.5.0-SNAPSHOT
+projectName=Camel :: Kamelet Main
+projectDescription=Main to run Kamelet standalone
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/console/DependencyDownloaderConsole.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/console/DependencyDownloaderConsole.java
index e08afe95620..7cee7322700 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/console/DependencyDownloaderConsole.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/console/DependencyDownloaderConsole.java
@@ -27,11 +27,12 @@ import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole("dependency-downloader")
+@DevConsole(name = "dependency-downloader", group = "camel-jbang", displayName = "Maven Dependency Downloader",
+            description = "Displays information about dependencies downloaded at runtime")
 public class DependencyDownloaderConsole extends AbstractDevConsole {
 
     public DependencyDownloaderConsole() {
-        super("jvm", "dependency-downloader", "Maven Dependency Downloader",
+        super("camel-jbang", "dependency-downloader", "Maven Dependency Downloader",
               "Displays information about dependencies downloaded at runtime");
     }
 
diff --git a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/DevConsoleModel.java
similarity index 67%
copy from catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
copy to tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/DevConsoleModel.java
index 6ca4c43b5ad..214b958a40d 100644
--- a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/Kind.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/DevConsoleModel.java
@@ -14,16 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.catalog;
+package org.apache.camel.tooling.model;
+
+public class DevConsoleModel extends ArtifactModel<BaseOptionModel> {
+
+    protected String group;
+
+    public DevConsoleModel() {
+    }
+
+    public String getGroup() {
+        return group;
+    }
+
+    public void setGroup(String group) {
+        this.group = group;
+    }
+
+    @Override
+    public String getKind() {
+        return "console";
+    }
 
-/**
- * Kind of a Camel part, such as component, dataformat, language, etc.
- */
-public enum Kind {
-    component,
-    dataformat,
-    language,
-    transformer,
-    other,
-    eip
 }
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
index 7dbd3b3c493..2cda577d491 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
@@ -65,6 +65,8 @@ public final class JsonMapper {
             return generateDataFormatModel(obj);
         } else if (obj.containsKey("transformer")) {
             return generateTransformerModel(obj);
+        } else if (obj.containsKey("console")) {
+            return generateDevConsoleModel(obj);
         } else if (obj.containsKey("other")) {
             return generateOtherModel(obj);
         } else if (obj.containsKey("model")) {
@@ -406,6 +408,36 @@ public final class JsonMapper {
         return wrapper;
     }
 
+    public static DevConsoleModel generateDevConsoleModel(String json) {
+        JsonObject obj = deserialize(json);
+        return generateDevConsoleModel(obj);
+    }
+
+    public static DevConsoleModel generateDevConsoleModel(JsonObject obj) {
+        JsonObject mobj = (JsonObject) obj.get("console");
+        DevConsoleModel model = new DevConsoleModel();
+        parseModel(mobj, model);
+        model.setGroup(mobj.getString("group"));
+        parseArtifact(mobj, model);
+        return model;
+    }
+
+    public static String createParameterJsonSchema(DevConsoleModel model) {
+        JsonObject wrapper = asJsonObject(model);
+        return serialize(wrapper);
+    }
+
+    public static JsonObject asJsonObject(DevConsoleModel model) {
+        JsonObject obj = new JsonObject();
+        baseToJson(model, obj);
+        artifactToJson(model, obj);
+        obj.put("group", model.getGroup());
+        obj.entrySet().removeIf(e -> e.getValue() == null);
+        JsonObject wrapper = new JsonObject();
+        wrapper.put("console", obj);
+        return wrapper;
+    }
+
     public static OtherModel generateOtherModel(String json) {
         JsonObject obj = deserialize(json);
         return generateOtherModel(obj);
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateComponentMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateComponentMojo.java
index 39e69a47d0a..54e8563c891 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateComponentMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateComponentMojo.java
@@ -50,6 +50,8 @@ public class GenerateComponentMojo extends AbstractGenerateMojo {
         invoke(GenerateInvokeOnHeaderMojo.class);
         // generate data-type-transformer
         invoke(GenerateDataTypeTransformerMojo.class);
+        // generate dev-console
+        invoke(GenerateDevConsoleMojo.class);
         // prepare-components
         invoke(PrepareComponentMojo.class);
         // validate-components
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDataTypeTransformerMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDataTypeTransformerMojo.java
index bf93e9984c2..39525ac332c 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDataTypeTransformerMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDataTypeTransformerMojo.java
@@ -37,6 +37,8 @@ import org.jboss.jandex.AnnotationInstance;
 import org.jboss.jandex.DotName;
 import org.jboss.jandex.Index;
 
+import static org.apache.camel.maven.packaging.MojoHelper.annotationValue;
+
 /**
  * Factory for generating code for @DataTypeTransformer.
  */
@@ -143,22 +145,10 @@ public class GenerateDataTypeTransformerMojo extends AbstractGeneratorMojo {
                     = a.target().asClass().hasAnnotation(Deprecated.class) || project.getName().contains("(deprecated)");
             model.setClassName(currentClass);
             model.setDeprecated(deprecated);
-            var name = a.value("name");
-            if (name != null) {
-                model.setName(name.value().toString());
-            }
-            var from = a.value("from");
-            if (from != null) {
-                model.setFrom(from.value().toString());
-            }
-            var to = a.value("to");
-            if (to != null) {
-                model.setFrom(to.value().toString());
-            }
-            var desc = a.value("description");
-            if (desc != null) {
-                model.setDescription(desc.value().toString());
-            }
+            model.setName(annotationValue(a, "name"));
+            model.setFrom(annotationValue(a, "from"));
+            model.setTo(annotationValue(a, "to"));
+            model.setDescription(annotationValue(a, "description"));
             models.add(model);
         });
         models.sort(Comparator.comparing(DataTypeTransformerModel::getName));
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDataTypeTransformerMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDevConsoleMojo.java
similarity index 67%
copy from tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDataTypeTransformerMojo.java
copy to tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDevConsoleMojo.java
index bf93e9984c2..97a063fe5b2 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDataTypeTransformerMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDevConsoleMojo.java
@@ -37,15 +37,20 @@ import org.jboss.jandex.AnnotationInstance;
 import org.jboss.jandex.DotName;
 import org.jboss.jandex.Index;
 
+import static org.apache.camel.maven.packaging.MojoHelper.annotationValue;
+
 /**
- * Factory for generating code for @DataTypeTransformer.
+ * Factory for generating metadata for @DevConsole.
+ *
+ * This mojo will only generate json metadata with details of the dev consoles. The general spi-generator will generate
+ * the marker files
  */
-@Mojo(name = "generate-data-type-transformer", threadSafe = true, defaultPhase = LifecyclePhase.PROCESS_CLASSES,
+@Mojo(name = "generate-dev-console", threadSafe = true, defaultPhase = LifecyclePhase.PROCESS_CLASSES,
       requiresDependencyCollection = ResolutionScope.COMPILE,
       requiresDependencyResolution = ResolutionScope.COMPILE)
-public class GenerateDataTypeTransformerMojo extends AbstractGeneratorMojo {
+public class GenerateDevConsoleMojo extends AbstractGeneratorMojo {
 
-    public static final DotName DATA_TYPE_ANNOTATION = DotName.createSimple("org.apache.camel.spi.DataTypeTransformer");
+    public static final DotName DEV_CONSOLE_ANNOTATION = DotName.createSimple("org.apache.camel.spi.annotations.DevConsole");
 
     /**
      * The project build directory
@@ -56,11 +61,11 @@ public class GenerateDataTypeTransformerMojo extends AbstractGeneratorMojo {
     @Parameter(defaultValue = "${project.basedir}/src/generated/resources")
     protected File resourcesOutputDir;
 
-    private static class DataTypeTransformerModel {
+    private static class DevConsoleModel {
         private String className;
+        private String group;
         private String name;
-        private String from;
-        private String to;
+        private String displayName;
         private String description;
         private boolean deprecated;
 
@@ -72,28 +77,28 @@ public class GenerateDataTypeTransformerMojo extends AbstractGeneratorMojo {
             this.className = className;
         }
 
-        public String getName() {
-            return name;
+        public String getGroup() {
+            return group;
         }
 
-        public void setName(String name) {
-            this.name = name;
+        public void setGroup(String group) {
+            this.group = group;
         }
 
-        public String getFrom() {
-            return from;
+        public String getName() {
+            return name;
         }
 
-        public void setFrom(String from) {
-            this.from = from;
+        public void setName(String name) {
+            this.name = name;
         }
 
-        public String getTo() {
-            return to;
+        public String getDisplayName() {
+            return displayName;
         }
 
-        public void setTo(String to) {
-            this.to = to;
+        public void setDisplayName(String displayName) {
+            this.displayName = displayName;
         }
 
         public String getDescription() {
@@ -113,7 +118,7 @@ public class GenerateDataTypeTransformerMojo extends AbstractGeneratorMojo {
         }
     }
 
-    public GenerateDataTypeTransformerMojo() {
+    public GenerateDevConsoleMojo() {
     }
 
     @Override
@@ -133,89 +138,84 @@ public class GenerateDataTypeTransformerMojo extends AbstractGeneratorMojo {
             return;
         }
 
-        List<DataTypeTransformerModel> models = new ArrayList<>();
-        List<AnnotationInstance> annotations = index.getAnnotations(DATA_TYPE_ANNOTATION);
+        List<DevConsoleModel> models = new ArrayList<>();
+        List<AnnotationInstance> annotations = index.getAnnotations(DEV_CONSOLE_ANNOTATION);
         annotations.forEach(a -> {
-            DataTypeTransformerModel model = new DataTypeTransformerModel();
+            DevConsoleModel model = new DevConsoleModel();
 
             String currentClass = a.target().asClass().name().toString();
             boolean deprecated
                     = a.target().asClass().hasAnnotation(Deprecated.class) || project.getName().contains("(deprecated)");
             model.setClassName(currentClass);
             model.setDeprecated(deprecated);
-            var name = a.value("name");
-            if (name != null) {
-                model.setName(name.value().toString());
-            }
-            var from = a.value("from");
-            if (from != null) {
-                model.setFrom(from.value().toString());
-            }
-            var to = a.value("to");
-            if (to != null) {
-                model.setFrom(to.value().toString());
-            }
-            var desc = a.value("description");
-            if (desc != null) {
-                model.setDescription(desc.value().toString());
+            model.setGroup(annotationValue(a, "group"));
+            model.setName(annotationValue(a, "name"));
+            model.setDisplayName(annotationValue(a, "displayName"));
+            model.setDescription(annotationValue(a, "description"));
+            // skip default registry
+            boolean skip = "default-registry".equals(model.getName());
+            if (!skip) {
+                models.add(model);
             }
-            models.add(model);
         });
-        models.sort(Comparator.comparing(DataTypeTransformerModel::getName));
+        models.sort(Comparator.comparing(DevConsoleModel::getName));
+
+        // remove default-registry as it's special
 
         if (!models.isEmpty()) {
             try {
-                StringJoiner names = new StringJoiner(" ");
+                StringJoiner ids = new StringJoiner(" ");
                 for (var model : models) {
-                    names.add(model.getName());
+                    ids.add(model.getName());
 
                     JsonObject jo = asJsonObject(model);
                     String json = jo.toJson();
                     json = Jsoner.prettyPrint(json, 2);
                     String fn = sanitizeFileName(model.getName()) + PackageHelper.JSON_SUFIX;
                     boolean updated = updateResource(resourcesOutputDir.toPath(),
-                            "META-INF/services/org/apache/camel/transformer/" + fn,
+                            "META-INF/org/apache/camel/dev-console/" + fn,
                             json + NL);
                     if (updated) {
-                        getLog().info("Updated transformer json: " + model.getName());
+                        getLog().info("Updated dev-console json: " + model.getName());
                     }
                 }
 
                 // generate marker file
                 File camelMetaDir = new File(resourcesOutputDir, "META-INF/services/org/apache/camel/");
                 int count = models.size();
-                String properties = createProperties(project, "transformers", names.toString());
-                updateResource(camelMetaDir.toPath(), "transformer.properties", properties);
-                getLog().info("Generated transformer.properties containing " + count + " Camel "
-                              + (count > 1 ? "transformers: " : "transformer: ") + names);
+                String properties = createProperties(project, "dev-consoles", ids.toString());
+                updateResource(camelMetaDir.toPath(), "dev-consoles.properties", properties);
+                getLog().info("Generated dev-consoles.properties containing " + count + " Camel "
+                              + (count > 1 ? "consoles: " : "console: ") + ids);
             } catch (Exception e) {
                 throw new MojoExecutionException(e);
             }
         }
     }
 
-    private JsonObject asJsonObject(DataTypeTransformerModel model) {
+    private JsonObject asJsonObject(DevConsoleModel model) {
         JsonObject jo = new JsonObject();
         // we need to know the maven GAV also
-        jo.put("kind", "transformer");
+        jo.put("kind", "console");
+        if (model.group != null) {
+            jo.put("group", model.getGroup());
+        } else {
+            jo.put("group", "camel");
+        }
         jo.put("name", model.getName());
-        jo.put("title", asTitle(model.getName()));
-        if (model.getDescription() != null) {
-            jo.put("description", model.getDescription());
+        if (model.getDisplayName() != null) {
+            jo.put("title", asTitle(model.getDisplayName()));
+        } else {
+            jo.put("title", asTitle(model.getName()));
         }
+        jo.put("description", model.getDescription());
         jo.put("deprecated", model.isDeprecated());
         jo.put("javaType", model.getClassName());
-        if (model.getFrom() != null) {
-            jo.put("from", model.getFrom());
-        }
-        if (model.getTo() != null) {
-            jo.put("to", model.getTo());
-        }
         jo.put("groupId", project.getGroupId());
         jo.put("artifactId", project.getArtifactId());
         jo.put("version", project.getVersion());
         JsonObject root = new JsonObject();
-        root.put("transformer", jo);
+        root.put("console", jo);
         return root;
     }
 
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
index b93ce0826ce..982f872be20 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
@@ -52,6 +52,8 @@ public class GenerateMojo extends AbstractGenerateMojo {
         invoke(GenerateInvokeOnHeaderMojo.class);
         // generate data-type-transformer
         invoke(GenerateDataTypeTransformerMojo.class);
+        // generate dev-console
+        invoke(GenerateDevConsoleMojo.class);
         // prepare-components
         invoke(PrepareComponentMojo.class);
         // prepare-main
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
index a2f85b5f116..f4b742e9985 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
@@ -21,6 +21,8 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
+import org.jboss.jandex.AnnotationInstance;
+
 public final class MojoHelper {
 
     private MojoHelper() {
@@ -113,4 +115,20 @@ public final class MojoHelper {
         }
     }
 
+    public static String annotationValue(AnnotationInstance ann, String key) {
+        if (ann == null) {
+            return null;
+        }
+        var v = ann.value(key);
+        if (v == null) {
+            return null;
+        }
+        var o = v.value();
+        if (o == null) {
+            return null;
+        }
+        var s = o.toString();
+        return s == null || s.isBlank() ? null : s;
+    }
+
 }
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
index 41007dda5f9..fa2fce2ff38 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
@@ -44,6 +44,7 @@ import org.apache.camel.tooling.model.BaseModel;
 import org.apache.camel.tooling.model.BaseOptionModel;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.DataFormatModel;
+import org.apache.camel.tooling.model.DevConsoleModel;
 import org.apache.camel.tooling.model.EipModel;
 import org.apache.camel.tooling.model.JsonMapper;
 import org.apache.camel.tooling.model.LanguageModel;
@@ -118,6 +119,12 @@ public class PrepareCatalogMojo extends AbstractMojo {
     @Parameter(defaultValue = "${project.basedir}/src/generated/resources/org/apache/camel/catalog/transformers")
     protected File transformersOutDir;
 
+    /**
+     * The output directory for dev-consoles catalog
+     */
+    @Parameter(defaultValue = "${project.basedir}/src/generated/resources/org/apache/camel/catalog/dev-consoles")
+    protected File consolesOutDir;
+
     /**
      * The output directory for others catalog
      */
@@ -374,6 +381,7 @@ public class PrepareCatalogMojo extends AbstractMojo {
             Set<String> dataformats = executeDataFormats();
             Set<String> languages = executeLanguages();
             Set<String> transformers = executeTransformers();
+            Set<String> consoles = executeDevConsoles();
             Set<String> others = executeOthers();
             executeDocuments(components, dataformats, languages, others);
             executeXmlSchemas();
@@ -763,6 +771,48 @@ public class PrepareCatalogMojo extends AbstractMojo {
         return transformerNames;
     }
 
+    protected Set<String> executeDevConsoles() throws Exception {
+        Path consolesOutDir = this.consolesOutDir.toPath();
+
+        getLog().info("Copying all Camel dev-consoles json descriptors");
+
+        // lets use sorted set/maps
+        Set<Path> jsonFiles;
+        Set<Path> duplicateJsonFiles;
+        Set<Path> consoleFiles;
+
+        // find all consoles from the components directory
+        consoleFiles = allPropertiesFiles.stream().filter(p -> p.endsWith("dev-console.properties"))
+                .collect(Collectors.toCollection(TreeSet::new));
+        jsonFiles = allJsonFiles.stream().filter(p -> allModels.get(p) instanceof DevConsoleModel)
+                .collect(Collectors.toCollection(TreeSet::new));
+
+        getLog().info("Found " + consoleFiles.size() + " dev-console.properties files");
+        getLog().info("Found " + jsonFiles.size() + " dev-console json files");
+
+        // make sure to create out dir
+        Files.createDirectories(consolesOutDir);
+
+        // Check duplicates
+        duplicateJsonFiles = getDuplicates(jsonFiles);
+
+        // Copy all descriptors
+        Map<Path, Path> newJsons = map(jsonFiles, p -> p, p -> consolesOutDir.resolve(p.getFileName()));
+        try (Stream<Path> stream = list(consolesOutDir).filter(p -> !newJsons.containsValue(p))) {
+            stream.forEach(this::delete);
+        }
+        newJsons.forEach(this::copy);
+
+        Path all = consolesOutDir.resolve("../dev-consoles.properties");
+        Set<String> consoleNames
+                = jsonFiles.stream().map(PrepareCatalogMojo::asComponentName).collect(Collectors.toCollection(TreeSet::new));
+        FileUtil.updateFile(all, String.join("\n", consoleNames) + "\n");
+
+        printConsolesReport(jsonFiles, duplicateJsonFiles);
+
+        return consoleNames;
+    }
+
     private Set<String> executeOthers() throws Exception {
         Path othersOutDir = this.othersOutDir.toPath();
 
@@ -1222,6 +1272,23 @@ public class PrepareCatalogMojo extends AbstractMojo {
         getLog().info(SEPARATOR);
     }
 
+    private void printConsolesReport(
+            Set<Path> json, Set<Path> duplicate) {
+        getLog().info(SEPARATOR);
+        getLog().info("");
+        getLog().info("Camel dev-console catalog report");
+        getLog().info("");
+        getLog().info("\tConsoles found: " + json.size());
+        printComponentDebug(json);
+        if (!duplicate.isEmpty()) {
+            getLog().info("");
+            getLog().warn("\tDuplicate console detected: " + duplicate.size());
+            printComponentWarning(duplicate);
+        }
+        getLog().info("");
+        getLog().info(SEPARATOR);
+    }
+
     private void printOthersReport(
             Set<Path> json, Set<Path> duplicate, Map<String, Set<String>> usedLabels, Set<Path> missingFirstVersions) {
         getLog().info(SEPARATOR);
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java
index 8dee2695138..1b5e953ef5d 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java
@@ -135,7 +135,7 @@ public class SpiGeneratorMojo extends AbstractGeneratorMojo {
                     continue;
                 }
                 String pvals;
-                // @DataTypeTransformer uses name instead of value
+                // @DataTypeTransformer/@DevConsole uses name instead of value
                 if (annotation.value() == null) {
                     pvals = annotation.values().stream()
                             .filter(annotationValue -> "name".equals(annotationValue.name()))
diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/DevConsole.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/DevConsole.java
index f504ea000b2..337360203da 100644
--- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/DevConsole.java
+++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/DevConsole.java
@@ -31,9 +31,24 @@ import java.lang.annotation.Target;
 @ServiceFactory("dev-console")
 public @interface DevConsole {
 
+    /**
+     * The group of the dev console
+     */
+    String group() default "camel";
+
     /**
      * The ID of the dev console.
      */
-    String value();
+    String name();
+
+    /**
+     * Display name (title)
+     */
+    String displayName() default "";
+
+    /**
+     * Description of the console
+     */
+    String description();
 
 }