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

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

commit aa7f4df7e04755c76e86bbfd48bdd23de66ab35b
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Thu Feb 8 13:47:18 2024 -0500

    First try for #1115
---
 karavan-web/karavan-app/pom.xml                    |   4 +-
 .../org/apache/camel/karavan/api/AuthResource.java |   5 +-
 .../apache/camel/karavan/api/BuildResource.java    |   6 +-
 .../camel/karavan/api/ContainerResource.java       |  20 +-
 .../apache/camel/karavan/api/DevModeResource.java  |  16 +-
 .../camel/karavan/api/InfrastructureResource.java  |  24 +-
 .../apache/camel/karavan/api/KameletResources.java |  16 +-
 .../camel/karavan/api/ProjectFileResource.java     |  22 +-
 .../camel/karavan/api/ProjectGitResource.java      |   2 +-
 .../apache/camel/karavan/api/ProjectResource.java  |  24 +-
 .../apache/camel/karavan/api/StatusResource.java   |  32 +-
 .../camel/karavan/cache/KaravanCacheService.java   | 322 +++++++++++++++++
 .../{infinispan => cache}/model/CamelStatus.java   |  11 +-
 .../model/CamelStatusValue.java                    |  25 +-
 .../{infinispan => cache}/model/ContainerPort.java |   9 +-
 .../model/ContainerStatus.java                     |  47 +--
 .../model/DeploymentStatus.java                    |  13 +-
 .../{infinispan => cache}/model/GroupedKey.java    |  10 +-
 .../{infinispan => cache}/model/Project.java       |  22 +-
 .../{infinispan => cache}/model/ProjectFile.java   |  12 +-
 .../{infinispan => cache}/model/ServiceStatus.java |  14 +-
 .../org/apache/camel/karavan/code/CodeService.java |  26 +-
 .../camel/karavan/docker/DockerEventListener.java  |  18 +-
 .../camel/karavan/docker/DockerForGitea.java       |   2 +-
 .../camel/karavan/docker/DockerForInfinispan.java  |  57 ---
 .../camel/karavan/docker/DockerForKaravan.java     |   4 +-
 .../camel/karavan/docker/DockerForRegistry.java    |   2 +-
 .../apache/camel/karavan/docker/DockerService.java |   2 +-
 .../camel/karavan/docker/DockerServiceUtils.java   |   4 +-
 .../org/apache/camel/karavan/git/GitService.java   |   4 +-
 .../karavan/infinispan/InfinispanService.java      | 401 ---------------------
 .../karavan/infinispan/model/KaravanSchema.java    |  45 ---
 .../karavan/kubernetes/DeploymentEventHandler.java |  18 +-
 .../karavan/kubernetes/KubernetesService.java      |  14 +-
 .../camel/karavan/kubernetes/PodEventHandler.java  |  14 +-
 .../karavan/kubernetes/ServiceEventHandler.java    |  16 +-
 .../apache/camel/karavan/service/CamelService.java |  18 +-
 .../karavan/service/ContainerStatusService.java    |  26 +-
 .../camel/karavan/service/KaravanService.java      |  10 +-
 .../camel/karavan/service/ProjectService.java      |  78 ++--
 .../project/ProjectFileCreateValidator.java        |  12 +-
 .../validation/project/ProjectModifyValidator.java |  12 +-
 .../src/main/resources/application.properties      |   8 -
 .../src/main/resources/cache/data-cache-config.xml |  23 --
 .../karavan-app/src/main/resources/hazelcast.xml   |  21 ++
 .../src/main/resources/services/internal.yaml      |   6 -
 46 files changed, 596 insertions(+), 901 deletions(-)

diff --git a/karavan-web/karavan-app/pom.xml b/karavan-web/karavan-app/pom.xml
index 4481d289..589669b6 100644
--- a/karavan-web/karavan-app/pom.xml
+++ b/karavan-web/karavan-app/pom.xml
@@ -90,8 +90,8 @@
             <artifactId>smallrye-mutiny-vertx-web-client</artifactId>
         </dependency>
         <dependency>
-            <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-infinispan-client</artifactId>
+            <groupId>com.hazelcast</groupId>
+            <artifactId>quarkus-hazelcast-client</artifactId>
         </dependency>
         <dependency>
             <groupId>io.quarkus</groupId>
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/AuthResource.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/AuthResource.java
index 2c2ca0f7..fa44e8eb 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/AuthResource.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/AuthResource.java
@@ -22,7 +22,7 @@ import jakarta.ws.rs.Path;
 import jakarta.ws.rs.Produces;
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
-import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.cache.KaravanCacheService;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
 import org.apache.camel.karavan.service.AuthService;
 import org.apache.camel.karavan.service.ProjectService;
@@ -45,7 +45,7 @@ public class AuthResource {
     KubernetesService kubernetesService;
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @GET
     @Path("/auth")
@@ -66,7 +66,6 @@ public class AuthResource {
     @Produces(MediaType.APPLICATION_JSON)
     public Response getConfiguration() throws Exception {
         List<HealthCheckResponse> list = List.of(
-                infinispanService.call(),
                 kubernetesService.call(),
                 projectService.call()
         );
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/BuildResource.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/BuildResource.java
index ace9fa8c..17ce3ad9 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/BuildResource.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/BuildResource.java
@@ -23,15 +23,15 @@ import jakarta.ws.rs.Path;
 import jakarta.ws.rs.Produces;
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
+import org.apache.camel.karavan.cache.KaravanCacheService;
 import org.apache.camel.karavan.code.CodeService;
-import org.apache.camel.karavan.infinispan.InfinispanService;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
 
 @Path("/api/build")
 public class BuildResource {
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     KubernetesService kubernetesService;
@@ -44,7 +44,7 @@ public class BuildResource {
     @Consumes(MediaType.APPLICATION_JSON)
     @Path("/update-config-map")
     public Response updateConfigMaps() {
-        if (infinispanService.isReady()) {
+        if (karavanCacheService.isReady()) {
             String script = codeService.getBuilderScript();
             kubernetesService.createBuildScriptConfigmap(script, true);
             return Response.ok().build();
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ContainerResource.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ContainerResource.java
index bfcae002..1ad6fd5b 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ContainerResource.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ContainerResource.java
@@ -24,11 +24,11 @@ import jakarta.inject.Inject;
 import jakarta.ws.rs.*;
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
 import org.apache.camel.karavan.code.DockerComposeConverter;
 import org.apache.camel.karavan.code.model.DockerComposeService;
 import org.apache.camel.karavan.docker.DockerService;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
 import org.apache.camel.karavan.service.ConfigService;
 import org.apache.camel.karavan.service.ProjectService;
@@ -48,7 +48,7 @@ public class ContainerResource {
     EventBus eventBus;
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     KubernetesService kubernetesService;
@@ -67,8 +67,8 @@ public class ContainerResource {
     @GET
     @Produces(MediaType.APPLICATION_JSON)
     public List<ContainerStatus> getAllContainerStatuses() throws Exception {
-        if (infinispanService.isReady()) {
-            return infinispanService.getContainerStatuses().stream()
+        if (karavanCacheService.isReady()) {
+            return karavanCacheService.getContainerStatuses().stream()
                     
.sorted(Comparator.comparing(ContainerStatus::getProjectId))
                     .collect(Collectors.toList());
         } else {
@@ -82,7 +82,7 @@ public class ContainerResource {
     @Path("/{projectId}/{type}/{name}")
     public Response manageContainer(@PathParam("projectId") String projectId, 
@PathParam("type") String type, @PathParam("name") String name, JsonObject 
command) {
         try {
-            if (infinispanService.isReady()) {
+            if (karavanCacheService.isReady()) {
                 if (ConfigService.inKubernetes()) {
                     if 
(command.getString("command").equalsIgnoreCase("delete")) {
                         kubernetesService.deletePod(name);
@@ -151,7 +151,7 @@ public class ContainerResource {
     }
 
     private void setContainerStatusTransit(String projectId, String name, 
String type) {
-        ContainerStatus status = 
infinispanService.getContainerStatus(projectId, environment, name);
+        ContainerStatus status = 
karavanCacheService.getContainerStatus(projectId, environment, name);
         if (status == null) {
             status = ContainerStatus.createByType(projectId, environment, 
ContainerStatus.ContainerType.valueOf(type));
         }
@@ -163,7 +163,7 @@ public class ContainerResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/{env}")
     public List<ContainerStatus> getContainerStatusesByEnv(@PathParam("env") 
String env) throws Exception {
-        return infinispanService.getContainerStatuses(env).stream()
+        return karavanCacheService.getContainerStatuses(env).stream()
                 .sorted(Comparator.comparing(ContainerStatus::getProjectId))
                 .collect(Collectors.toList());
     }
@@ -172,7 +172,7 @@ public class ContainerResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/{projectId}/{env}")
     public List<ContainerStatus> 
getContainerStatusesByProjectAndEnv(@PathParam("projectId") String projectId, 
@PathParam("env") String env) throws Exception {
-        return infinispanService.getContainerStatuses(projectId, env).stream()
+        return karavanCacheService.getContainerStatuses(projectId, 
env).stream()
                 .filter(podStatus -> Objects.equals(podStatus.getType(), 
ContainerStatus.ContainerType.project))
                 
.sorted(Comparator.comparing(ContainerStatus::getContainerName))
                 .collect(Collectors.toList());
@@ -183,7 +183,7 @@ public class ContainerResource {
     @Consumes(MediaType.APPLICATION_JSON)
     @Path("/{projectId}/{type}/{name}")
     public Response deleteContainer(@PathParam("projectId") String projectId, 
@PathParam("type") String type, @PathParam("name") String name) {
-        if (infinispanService.isReady()) {
+        if (karavanCacheService.isReady()) {
             // set container statuses
             setContainerStatusTransit(projectId, name, type);
             try {
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java
index 09fb6c49..226cc894 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java
@@ -22,10 +22,10 @@ import jakarta.inject.Inject;
 import jakarta.ws.rs.*;
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
+import org.apache.camel.karavan.cache.model.Project;
 import org.apache.camel.karavan.docker.DockerService;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
-import org.apache.camel.karavan.infinispan.model.Project;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
 import org.apache.camel.karavan.service.CamelService;
 import org.apache.camel.karavan.service.ConfigService;
@@ -47,7 +47,7 @@ public class DevModeResource {
     CamelService camelService;
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     KubernetesService kubernetesService;
@@ -90,7 +90,7 @@ public class DevModeResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/reload/{projectId}")
     public Response reload(@PathParam("projectId") String projectId) {
-        if (infinispanService.isReady()) {
+        if (karavanCacheService.isReady()) {
             camelService.reloadProjectCode(projectId);
             return Response.ok().build();
         } else {
@@ -113,7 +113,7 @@ public class DevModeResource {
     }
 
     private void setContainerStatusTransit(String name, String type) {
-        ContainerStatus status = infinispanService.getContainerStatus(name, 
environment, name);
+        ContainerStatus status = karavanCacheService.getContainerStatus(name, 
environment, name);
         if (status == null) {
             status = ContainerStatus.createByType(name, environment, 
ContainerStatus.ContainerType.valueOf(type));
         }
@@ -125,8 +125,8 @@ public class DevModeResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/container/{projectId}")
     public Response getPodStatus(@PathParam("projectId") String projectId) 
throws RuntimeException {
-        if (infinispanService.isReady()) {
-            ContainerStatus cs = 
infinispanService.getDevModeContainerStatus(projectId, environment);
+        if (karavanCacheService.isReady()) {
+            ContainerStatus cs = 
karavanCacheService.getDevModeContainerStatus(projectId, environment);
             if (cs != null) {
                 return Response.ok(cs).build();
             } else {
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java
index dd78fd78..d8b407f4 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java
@@ -20,9 +20,9 @@ import jakarta.inject.Inject;
 import jakarta.ws.rs.*;
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.DeploymentStatus;
-import org.apache.camel.karavan.infinispan.model.ServiceStatus;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.DeploymentStatus;
+import org.apache.camel.karavan.cache.model.ServiceStatus;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
 import org.apache.camel.karavan.service.ConfigService;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
@@ -36,7 +36,7 @@ import java.util.stream.Collectors;
 public class InfrastructureResource {
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     KubernetesService kubernetesService;
@@ -50,8 +50,8 @@ public class InfrastructureResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/deployment")
     public List<DeploymentStatus> getAllDeploymentStatuses() throws Exception {
-        if (infinispanService.isReady()) {
-            return infinispanService.getDeploymentStatuses().stream()
+        if (karavanCacheService.isReady()) {
+            return karavanCacheService.getDeploymentStatuses().stream()
                     
.sorted(Comparator.comparing(DeploymentStatus::getProjectId))
                     .collect(Collectors.toList());
         } else {
@@ -63,8 +63,8 @@ public class InfrastructureResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/deployment/{env}")
     public List<DeploymentStatus> getDeploymentStatusesByEnv(@PathParam("env") 
String env) throws Exception {
-        if (infinispanService.isReady()) {
-        return infinispanService.getDeploymentStatuses(env).stream()
+        if (karavanCacheService.isReady()) {
+        return karavanCacheService.getDeploymentStatuses(env).stream()
                 .sorted(Comparator.comparing(DeploymentStatus::getProjectId))
                 .collect(Collectors.toList());
         } else {
@@ -93,8 +93,8 @@ public class InfrastructureResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/service")
     public List<ServiceStatus> getAllServiceStatuses() throws Exception {
-        if (infinispanService.isReady()) {
-            return infinispanService.getServiceStatuses().stream()
+        if (karavanCacheService.isReady()) {
+            return karavanCacheService.getServiceStatuses().stream()
                     .sorted(Comparator.comparing(ServiceStatus::getProjectId))
                     .collect(Collectors.toList());
         } else {
@@ -135,11 +135,11 @@ public class InfrastructureResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/services")
     public Response getServices() throws Exception {
-        if (infinispanService.isReady()) {
+        if (karavanCacheService.isReady()) {
             if (ConfigService.inKubernetes()) {
                 return 
Response.ok(kubernetesService.getServices(kubernetesService.getNamespace())).build();
             } else {
-                List<String> list = 
infinispanService.getContainerStatuses(environment).stream()
+                List<String> list = 
karavanCacheService.getContainerStatuses(environment).stream()
                         .filter(ci -> !ci.getPorts().isEmpty())
                         .map(ci -> ci.getPorts().stream().map(i -> 
ci.getContainerName() + "|" + ci.getContainerName() + ":" + 
i.getPrivatePort()).collect(Collectors.toList()))
                         .flatMap(List::stream).collect(Collectors.toList());
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java
index 6ae78b87..39552860 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java
@@ -21,10 +21,10 @@ import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.Produces;
 import jakarta.ws.rs.core.MediaType;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.Project;
+import org.apache.camel.karavan.cache.model.ProjectFile;
 import org.apache.camel.karavan.code.CodeService;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.Project;
-import org.apache.camel.karavan.infinispan.model.ProjectFile;
 import org.yaml.snakeyaml.Yaml;
 
 import java.util.List;
@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
 public class KameletResources {
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     CodeService codeService;
@@ -43,8 +43,8 @@ public class KameletResources {
     @Produces(MediaType.TEXT_PLAIN)
     public String getKamelets() {
         StringBuilder kamelets = new 
StringBuilder(codeService.getResourceFile("/kamelets/kamelets.yaml"));
-        if (infinispanService.isReady()) {
-            List<ProjectFile> custom = 
infinispanService.getProjectFiles(Project.Type.kamelets.name());
+        if (karavanCacheService.isReady()) {
+            List<ProjectFile> custom = 
karavanCacheService.getProjectFiles(Project.Type.kamelets.name());
             if (!custom.isEmpty()) {
                 kamelets.append("\n---\n");
                 kamelets.append(custom.stream()
@@ -59,9 +59,9 @@ public class KameletResources {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/names")
     public List<String> getCustomNames() {
-        if (infinispanService.isReady()) {
+        if (karavanCacheService.isReady()) {
             Yaml yaml = new Yaml();
-            return 
infinispanService.getProjectFiles(Project.Type.kamelets.name()).stream()
+            return 
karavanCacheService.getProjectFiles(Project.Type.kamelets.name()).stream()
                     .map(projectFile -> 
projectFile.getName().replace(".kamelet.yaml", ""))
                     .collect(Collectors.toList());
         } else {
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java
index 41b78850..8f5b5322 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java
@@ -20,9 +20,9 @@ import jakarta.inject.Inject;
 import jakarta.ws.rs.*;
 import jakarta.ws.rs.core.MediaType;
 import org.apache.camel.karavan.code.CodeService;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.Project;
-import org.apache.camel.karavan.infinispan.model.ProjectFile;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.Project;
+import org.apache.camel.karavan.cache.model.ProjectFile;
 import org.apache.camel.karavan.validation.project.ProjectFileCreateValidator;
 
 import java.net.URLDecoder;
@@ -36,7 +36,7 @@ import java.util.stream.Collectors;
 public class ProjectFileResource {
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     CodeService codeService;
@@ -48,7 +48,7 @@ public class ProjectFileResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/{projectId}")
     public List<ProjectFile> get(@PathParam("projectId") String projectId) 
throws Exception {
-        return infinispanService.getProjectFiles(projectId).stream()
+        return karavanCacheService.getProjectFiles(projectId).stream()
                 .sorted(Comparator.comparing(ProjectFile::getName))
                 .collect(Collectors.toList());
     }
@@ -58,7 +58,7 @@ public class ProjectFileResource {
     @Path("/templates/beans")
     public List<ProjectFile> getBeanTemplates() throws Exception {
         return  codeService.getBeanTemplateNames().stream()
-                .map(s -> 
infinispanService.getProjectFile(Project.Type.templates.name(), s))
+                .map(s -> 
karavanCacheService.getProjectFile(Project.Type.templates.name(), s))
                 .toList();
     }
 
@@ -68,7 +68,7 @@ public class ProjectFileResource {
     public ProjectFile create(ProjectFile file) throws Exception {
         file.setLastUpdate(Instant.now().toEpochMilli());
         projectFileCreateValidator.validate(file).failOnError();
-        infinispanService.saveProjectFile(file);
+        karavanCacheService.saveProjectFile(file);
         return file;
     }
 
@@ -77,7 +77,7 @@ public class ProjectFileResource {
     @Consumes(MediaType.APPLICATION_JSON)
     public ProjectFile update(ProjectFile file) throws Exception {
         file.setLastUpdate(Instant.now().toEpochMilli());
-        infinispanService.saveProjectFile(file);
+        karavanCacheService.saveProjectFile(file);
         return file;
     }
 
@@ -87,7 +87,7 @@ public class ProjectFileResource {
     public void delete(@HeaderParam("username") String username,
                        @PathParam("project") String project,
                        @PathParam("filename") String filename) throws 
Exception {
-        infinispanService.deleteProjectFile(
+        karavanCacheService.deleteProjectFile(
                 URLDecoder.decode(project, StandardCharsets.UTF_8.toString()),
                 URLDecoder.decode(filename, StandardCharsets.UTF_8.toString())
         );
@@ -101,11 +101,11 @@ public class ProjectFileResource {
                                    @PathParam("integrationName") String 
integrationName,
                                    @PathParam("generateRest") boolean 
generateRest,
                                    @PathParam("generateRoutes") boolean 
generateRoutes, ProjectFile file) throws Exception {
-        infinispanService.saveProjectFile(file);
+        karavanCacheService.saveProjectFile(file);
         if (generateRest) {
             String yaml = codeService.generate(file.getName(), file.getCode(), 
generateRoutes);
             ProjectFile integration = new ProjectFile(integrationName, yaml, 
file.getProjectId(), Instant.now().toEpochMilli());
-            infinispanService.saveProjectFile(integration);
+            karavanCacheService.saveProjectFile(integration);
             return file;
         }
         return file;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectGitResource.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectGitResource.java
index efcdfbff..aea987ea 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectGitResource.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectGitResource.java
@@ -20,7 +20,7 @@ import jakarta.inject.Inject;
 import jakarta.ws.rs.*;
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
-import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.cache.model.Project;
 import org.apache.camel.karavan.service.ProjectService;
 import org.jboss.logging.Logger;
 
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java
index d9d95f66..08ab2132 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java
@@ -22,11 +22,11 @@ import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 import org.apache.camel.karavan.docker.DockerService;
 import org.apache.camel.karavan.git.GitService;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.CamelStatus;
-import org.apache.camel.karavan.infinispan.model.CamelStatusValue;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
-import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.CamelStatus;
+import org.apache.camel.karavan.cache.model.CamelStatusValue;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
+import org.apache.camel.karavan.cache.model.Project;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
 import org.apache.camel.karavan.service.ConfigService;
 import org.apache.camel.karavan.service.ProjectService;
@@ -42,7 +42,7 @@ public class ProjectResource {
     private static final Logger LOGGER = 
Logger.getLogger(ProjectResource.class.getName());
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     KubernetesService kubernetesService;
@@ -75,7 +75,7 @@ public class ProjectResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/{project}")
     public Project get(@PathParam("project") String project) throws Exception {
-        return infinispanService.getProject(project);
+        return karavanCacheService.getProject(project);
     }
 
     @POST
@@ -98,9 +98,9 @@ public class ProjectResource {
             LOGGER.info("Deleting deployments");
             Response res4 = infrastructureResource.deleteDeployment(null, 
projectId);
         }
-        gitService.deleteProject(projectId, 
infinispanService.getProjectFiles(projectId));
-        infinispanService.getProjectFiles(projectId).forEach(file -> 
infinispanService.deleteProjectFile(projectId, file.getName()));
-        infinispanService.deleteProject(projectId);
+        gitService.deleteProject(projectId, 
karavanCacheService.getProjectFiles(projectId));
+        karavanCacheService.getProjectFiles(projectId).forEach(file -> 
karavanCacheService.deleteProjectFile(projectId, file.getName()));
+        karavanCacheService.deleteProject(projectId);
         LOGGER.info("Project deleted");
     }
 
@@ -136,7 +136,7 @@ public class ProjectResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/status/camel/{projectId}/{env}")
     public Response getCamelStatusForProjectAndEnv(@PathParam("projectId") 
String projectId, @PathParam("env") String env) {
-        List<CamelStatus> statuses = 
infinispanService.getCamelStatusesByProjectAndEnv(projectId, env)
+        List<CamelStatus> statuses = 
karavanCacheService.getCamelStatusesByProjectAndEnv(projectId, env)
                 .stream().map(camelStatus -> {
                     var stats = camelStatus.getStatuses().stream().filter(s -> 
!Objects.equals(s.getName(), CamelStatusValue.Name.trace)).toList();
                     camelStatus.setStatuses(stats);
@@ -153,7 +153,7 @@ public class ProjectResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/traces/{projectId}/{env}")
     public Response getCamelTracesForProjectAndEnv(@PathParam("projectId") 
String projectId, @PathParam("env") String env) {
-        List<CamelStatus> statuses = 
infinispanService.getCamelStatusesByProjectAndEnv(projectId, env)
+        List<CamelStatus> statuses = 
karavanCacheService.getCamelStatusesByProjectAndEnv(projectId, env)
                 .stream().map(camelStatus -> {
                     var stats = camelStatus.getStatuses().stream().filter(s -> 
Objects.equals(s.getName(), CamelStatusValue.Name.trace)).toList();
                     camelStatus.setStatuses(stats);
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java
index ce779e13..a7b5867c 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java
@@ -20,10 +20,10 @@ import jakarta.inject.Inject;
 import jakarta.ws.rs.*;
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.CamelStatus;
-import org.apache.camel.karavan.infinispan.model.CamelStatusValue;
-import org.apache.camel.karavan.infinispan.model.DeploymentStatus;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.CamelStatus;
+import org.apache.camel.karavan.cache.model.CamelStatusValue;
+import org.apache.camel.karavan.cache.model.DeploymentStatus;
 import org.jboss.logging.Logger;
 
 import java.util.List;
@@ -34,13 +34,13 @@ public class StatusResource {
     private static final Logger LOGGER = 
Logger.getLogger(StatusResource.class.getName());
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @GET
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/deployment/{name}/{env}")
     public Response getDeploymentStatus(@PathParam("name") String name, 
@PathParam("env") String env) {
-        DeploymentStatus status = infinispanService.getDeploymentStatus(name, 
env);
+        DeploymentStatus status = 
karavanCacheService.getDeploymentStatus(name, env);
         if (status != null) {
             return Response.ok(status).build();
         }
@@ -51,8 +51,8 @@ public class StatusResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/camel/context")
     public List<CamelStatus> getCamelContextStatusByEnv() {
-        if (infinispanService.isReady()) {
-            return 
infinispanService.getCamelStatusesByEnv(CamelStatusValue.Name.context);
+        if (karavanCacheService.isReady()) {
+            return 
karavanCacheService.getCamelStatusesByEnv(CamelStatusValue.Name.context);
         } else {
             return List.of();
         }
@@ -62,8 +62,8 @@ public class StatusResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/deployment")
     public Response deleteDeploymentStatuses() {
-        if (infinispanService.isReady()) {
-            infinispanService.deleteAllDeploymentsStatuses();
+        if (karavanCacheService.isReady()) {
+            karavanCacheService.deleteAllDeploymentsStatuses();
             return Response.ok().build();
         } else {
             return Response.noContent().build();
@@ -74,8 +74,8 @@ public class StatusResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/container")
     public Response deleteContainerStatuses() {
-        if (infinispanService.isReady()) {
-            infinispanService.deleteAllContainersStatuses();
+        if (karavanCacheService.isReady()) {
+            karavanCacheService.deleteAllContainersStatuses();
             return Response.ok().build();
         } else {
             return Response.noContent().build();
@@ -86,8 +86,8 @@ public class StatusResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/camel")
     public Response deleteCamelStatuses() {
-        if (infinispanService.isReady()) {
-            infinispanService.deleteAllCamelStatuses();
+        if (karavanCacheService.isReady()) {
+            karavanCacheService.deleteAllCamelStatuses();
             return Response.ok().build();
         } else {
             return Response.noContent().build();
@@ -98,8 +98,8 @@ public class StatusResource {
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/all")
     public Response deleteAllStatuses() {
-        if (infinispanService.isReady()) {
-            infinispanService.clearAllStatuses();
+        if (karavanCacheService.isReady()) {
+            karavanCacheService.clearAllStatuses();
             return Response.ok().build();
         } else {
             return Response.noContent().build();
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/KaravanCacheService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/KaravanCacheService.java
new file mode 100644
index 00000000..6e62ba11
--- /dev/null
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/KaravanCacheService.java
@@ -0,0 +1,322 @@
+/*
+ * 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.karavan.cache;
+
+import com.hazelcast.config.ClasspathXmlConfig;
+import com.hazelcast.config.Config;
+import com.hazelcast.core.Hazelcast;
+import com.hazelcast.core.HazelcastInstance;
+import com.hazelcast.map.IMap;
+import com.hazelcast.query.Predicate;
+import com.hazelcast.query.Predicates;
+import io.quarkus.runtime.ShutdownEvent;
+import io.quarkus.runtime.StartupEvent;
+import jakarta.enterprise.event.Observes;
+import jakarta.enterprise.inject.Default;
+import jakarta.inject.Singleton;
+import org.apache.camel.karavan.cache.model.*;
+import org.eclipse.microprofile.health.Readiness;
+import org.jboss.logging.Logger;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.time.Instant;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
+
+@Default
+@Readiness
+@Singleton
+public class KaravanCacheService {
+
+    Config config = new ClasspathXmlConfig("hazelcast.xml");
+    HazelcastInstance hz = Hazelcast.getOrCreateHazelcastInstance(config);
+
+    private final IMap<GroupedKey, Project> projects = 
hz.getMap(Project.CACHE);
+    private final IMap<GroupedKey, ProjectFile> files = 
hz.getMap(ProjectFile.CACHE);
+    private final IMap<GroupedKey, DeploymentStatus> deploymentStatuses = 
hz.getMap(DeploymentStatus.CACHE);
+    private final IMap<GroupedKey, ContainerStatus> containerStatuses = 
hz.getMap(ContainerStatus.CACHE);
+    private final IMap<GroupedKey, Boolean> transits = hz.getMap("transits");
+    private final IMap<GroupedKey, ServiceStatus> serviceStatuses = 
hz.getMap(ServiceStatus.CACHE);
+    private final IMap<GroupedKey, CamelStatus> camelStatuses = 
hz.getMap(CamelStatus.CACHE);
+
+    private final AtomicBoolean ready = new AtomicBoolean(false);
+    private static final Logger LOGGER = 
Logger.getLogger(KaravanCacheService.class.getName());
+
+    private static final String DEFAULT_ENVIRONMENT = "dev";
+
+    void onStart(@Observes StartupEvent ev) {
+        LOGGER.info("The application is starting...");
+        ready.set(true);
+    }
+
+    void onStop(@Observes ShutdownEvent ev) {
+        LOGGER.info("The application is stopping...");
+        ready.set(false);
+    }
+
+    public List<Project> getProjects() {
+        return projects.values().stream().collect(Collectors.toList());
+    }
+
+    public void saveProject(Project project) {
+        GroupedKey key = GroupedKey.create(project.getProjectId(), 
DEFAULT_ENVIRONMENT, project.getProjectId());
+        projects.put(key, project);
+        projects.put(key, project);
+    }
+
+    public List<ProjectFile> getProjectFiles(String projectId) {
+        Predicate<GroupedKey, ProjectFile> predicate = 
Predicates.equal("projectId", projectId);
+        return files.values(predicate).stream().toList();
+    }
+
+    public Map<GroupedKey, ProjectFile> getProjectFilesMap(String projectId) {
+        Predicate<GroupedKey, ProjectFile> predicate = 
Predicates.equal("projectId", projectId);
+        return files.entrySet(predicate).stream()
+                .collect(Collectors.toMap(Map.Entry::getKey, 
Map.Entry::getValue));
+    }
+
+    public ProjectFile getProjectFile(String projectId, String filename) {
+        Predicate<GroupedKey, ProjectFile> predicate = Predicates.and(
+                        Predicates.equal("name", filename),
+                        Predicates.equal("projectId", projectId)
+                );
+        List<ProjectFile> list = files.values(predicate).stream().toList();
+        return !list.isEmpty() ? list.get(0) : null;
+    }
+
+    public List<ProjectFile> getProjectFilesByName(String filename) {
+        Predicate<GroupedKey, ProjectFile> predicate = 
Predicates.equal("name", filename);
+        return files.values(predicate).stream().toList();
+    }
+
+    public void saveProjectFile(ProjectFile file) {
+        files.put(GroupedKey.create(file.getProjectId(), DEFAULT_ENVIRONMENT, 
file.getName()), file);
+    }
+
+    public void saveProjectFiles(Map<GroupedKey, ProjectFile> filesToSave) {
+        long lastUpdate = Instant.now().toEpochMilli();
+        filesToSave.forEach((groupedKey, projectFile) -> 
projectFile.setLastUpdate(lastUpdate));
+        files.putAll(filesToSave);
+    }
+
+    public void deleteProject(String projectId) {
+        projects.remove(GroupedKey.create(projectId, DEFAULT_ENVIRONMENT, 
projectId));
+    }
+
+    public void deleteProjectFile(String projectId, String filename) {
+        files.remove(GroupedKey.create(projectId, DEFAULT_ENVIRONMENT, 
filename));
+    }
+
+    public Project getProject(String projectId) {
+        return projects.get(GroupedKey.create(projectId, DEFAULT_ENVIRONMENT, 
projectId));
+    }
+
+    public DeploymentStatus getDeploymentStatus(String projectId, String 
environment) {
+        return deploymentStatuses.get(GroupedKey.create(projectId, 
environment, projectId));
+    }
+
+    public void saveDeploymentStatus(DeploymentStatus status) {
+        deploymentStatuses.put(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getProjectId()), status);
+    }
+
+    public void deleteDeploymentStatus(DeploymentStatus status) {
+        deploymentStatuses.remove(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getProjectId()));
+    }
+
+    public List<DeploymentStatus> getDeploymentStatuses() {
+        return new ArrayList<>(deploymentStatuses.values());
+    }
+
+    public List<DeploymentStatus> getDeploymentStatuses(String env) {
+        Predicate<GroupedKey, DeploymentStatus> predicate = 
Predicates.equal("env", env);
+        return deploymentStatuses.values(predicate).stream().toList();
+    }
+
+    public void deleteAllDeploymentsStatuses() {
+        deploymentStatuses.clear();
+    }
+
+    public void saveServiceStatus(ServiceStatus status) {
+        serviceStatuses.put(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getProjectId()), status);
+    }
+
+    public void deleteServiceStatus(ServiceStatus status) {
+        serviceStatuses.remove(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getProjectId()));
+    }
+
+    public List<ServiceStatus> getServiceStatuses() {
+        return new ArrayList<>(serviceStatuses.values());
+    }
+
+    public List<Boolean> getTransits() {
+        return new ArrayList<>(transits.values());
+    }
+
+    public Boolean getTransit(String projectId, String env, String 
containerName) {
+        return transits.get(GroupedKey.create(projectId, env, containerName));
+    }
+
+    public void setTransit(String projectId, String env, String containerName) 
{
+        transits.put(GroupedKey.create(projectId, env, containerName), true);
+    }
+
+    public List<ContainerStatus> getContainerStatuses() {
+        return new ArrayList<>(containerStatuses.values());
+    }
+
+    public List<ContainerStatus> getContainerStatuses(String projectId, String 
env) {
+        Predicate<GroupedKey, ContainerStatus> predicate = Predicates.and(
+                Predicates.equal("projectId", projectId),
+                Predicates.equal("env", env)
+        );
+        return containerStatuses.values(predicate).stream().toList();
+    }
+
+    public ContainerStatus getContainerStatus(String projectId, String env, 
String containerName) {
+        return getContainerStatus(GroupedKey.create(projectId, env, 
containerName));
+    }
+
+    public ContainerStatus getContainerStatus(GroupedKey key) {
+        return containerStatuses.get(key);
+    }
+
+    public ContainerStatus getDevModeContainerStatus(String projectId, String 
env) {
+        return containerStatuses.get(GroupedKey.create(projectId, env, 
projectId));
+    }
+
+    public List<ContainerStatus> getContainerStatuses(String env) {
+        Predicate<GroupedKey, ContainerStatus> predicate = Predicates.and(
+                Predicates.equal("env", env)
+        );
+        return containerStatuses.values(predicate).stream().toList();
+    }
+
+    public List<ContainerStatus> getAllContainerStatuses() {
+        return new ArrayList<>(containerStatuses.values());
+    }
+
+    public void saveContainerStatus(ContainerStatus status) {
+        containerStatuses.put(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getContainerName()), status);
+    }
+
+    public void deleteContainerStatus(ContainerStatus status) {
+        containerStatuses.remove(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getContainerName()));
+    }
+
+    public void deleteAllContainersStatuses() {
+        containerStatuses.clear();
+    }
+
+    public void deleteContainerStatus(String projectId, String env, String 
containerName) {
+        containerStatuses.remove(GroupedKey.create(projectId, env, 
containerName));
+    }
+
+    public CamelStatus getCamelStatus(String projectId, String env, String 
containerName) {
+        GroupedKey key = GroupedKey.create(projectId, env, containerName);
+        return camelStatuses.get(key);
+    }
+
+    public CamelStatus getCamelStatus(GroupedKey key) {
+        return camelStatuses.get(key);
+    }
+
+    public List<CamelStatus> getCamelStatusesByEnv(CamelStatusValue.Name name) 
{
+        return camelStatuses.values().stream().map(cs -> {
+            var values = cs.getStatuses();
+            cs.setStatuses(values.stream().filter(v -> 
Objects.equals(v.getName(), name)).toList());
+            return cs;
+        }).toList();
+    }
+
+    public List<CamelStatus> getCamelStatusesByProjectAndEnv(String projectId, 
String env) {
+        Predicate<GroupedKey, CamelStatus> predicate = Predicates.and(
+                Predicates.equal("projectId", projectId),
+                Predicates.equal("env", env)
+        );
+        return camelStatuses.values(predicate).stream().toList();
+    }
+
+    public void saveCamelStatus(CamelStatus status) {
+        GroupedKey key = GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getContainerName());
+        camelStatuses.put(key, status);
+    }
+
+    public void deleteCamelStatus(String projectId, String name, String env) {
+        GroupedKey key = GroupedKey.create(projectId, env, name);
+        camelStatuses.remove(key);
+    }
+
+    public void deleteCamelStatuses(String projectId, String env) {
+        Predicate<GroupedKey, CamelStatus> predicate = Predicates.and(
+                Predicates.equal("projectId", projectId),
+                Predicates.equal("env", env)
+        );
+        camelStatuses.values(predicate).forEach(s -> {
+            GroupedKey key = GroupedKey.create(projectId, env, 
s.getContainerName());
+            camelStatuses.remove(key);
+        });
+    }
+
+    public void deleteAllCamelStatuses() {
+        camelStatuses.clear();
+    }
+
+    public List<ContainerStatus> getLoadedDevModeStatuses() {
+        Predicate<GroupedKey, ContainerStatus> predicate = Predicates.and(
+                Predicates.equal("type", 
ContainerStatus.ContainerType.devmode),
+                Predicates.equal("codeLoaded", true)
+        );
+        return containerStatuses.values(predicate).stream().toList();
+    }
+
+    public List<ContainerStatus> getDevModeStatuses() {
+        Predicate<GroupedKey, ContainerStatus> predicate = Predicates.and(
+                Predicates.equal("type", ContainerStatus.ContainerType.devmode)
+        );
+        return containerStatuses.values(predicate).stream().toList();
+    }
+
+    public List<ContainerStatus> getContainerStatusByEnv(String env) {
+        Predicate<GroupedKey, ContainerStatus> predicate = Predicates.and(
+                Predicates.equal("env", env)
+        );
+        return containerStatuses.values(predicate).stream().toList();
+    }
+
+    public void clearAllStatuses() {
+        deploymentStatuses.clear();
+        containerStatuses.clear();
+        camelStatuses.clear();
+    }
+
+    private String getResourceFile(String path) {
+        try {
+            InputStream inputStream = 
KaravanCacheService.class.getResourceAsStream(path);
+            return new BufferedReader(new InputStreamReader(inputStream))
+                    
.lines().collect(Collectors.joining(System.getProperty("line.separator")));
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    public boolean isReady() {
+        return ready.get();
+    }
+}
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatus.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatus.java
similarity index 83%
rename from 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatus.java
rename to 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatus.java
index db7cf54b..de2e1b96 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatus.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatus.java
@@ -15,27 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.camel.karavan.infinispan.model;
+package org.apache.camel.karavan.cache.model;
 
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
-
-import java.util.ArrayList;
 import java.util.List;
 
 public class CamelStatus {
 
     public static final String CACHE = "camel_statuses";
-    @ProtoField(number = 1)
     String projectId;
-    @ProtoField(number = 2)
     String containerName;
-    @ProtoField(number = 3, collectionImplementation = ArrayList.class)
     List<CamelStatusValue> statuses;
-    @ProtoField(number = 4)
     String env;
 
-    @ProtoFactory
     public CamelStatus(String projectId, String containerName, 
List<CamelStatusValue> statuses, String env) {
         this.projectId = projectId;
         this.containerName = containerName;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatusValue.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatusValue.java
similarity index 61%
rename from 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatusValue.java
rename to 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatusValue.java
index 1a60dfbd..59cf946f 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatusValue.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatusValue.java
@@ -15,32 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.camel.karavan.infinispan.model;
-
-import org.infinispan.protostream.annotations.ProtoEnumValue;
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
+package org.apache.camel.karavan.cache.model;
 
 public class CamelStatusValue {
 
     public enum Name {
 
-        @ProtoEnumValue(number = 0, name = "context") context,
-        @ProtoEnumValue (number = 1, name = "inflight") inflight,
-        @ProtoEnumValue (number = 2, name = "memory") memory,
-        @ProtoEnumValue (number = 3, name = "properties") properties,
-        @ProtoEnumValue (number = 4, name = "route") route,
-        @ProtoEnumValue (number = 5, name = "trace") trace,
-        @ProtoEnumValue (number = 6, name = "jvm") jvm,
-        @ProtoEnumValue (number = 7, name = "source") source
+        context,
+        inflight,
+        memory,
+        properties,
+        route,
+        trace,
+        jvm,
+        source
     }
 
-    @ProtoField(number = 1)
     Name name;
-    @ProtoField(number = 2)
     String status;
 
-    @ProtoFactory
     public CamelStatusValue(Name name, String status) {
         this.name = name;
         this.status = status;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ContainerPort.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerPort.java
similarity index 85%
rename from 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ContainerPort.java
rename to 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerPort.java
index af8cebf9..c9e97589 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ContainerPort.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerPort.java
@@ -15,21 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.camel.karavan.infinispan.model;
-
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
+package org.apache.camel.karavan.cache.model;
 
 public class ContainerPort {
 
-    @ProtoField(number = 1)
     Integer privatePort;
-    @ProtoField(number = 2)
     Integer publicPort;
-    @ProtoField(number = 3)
     String type;
 
-    @ProtoFactory
     public ContainerPort(Integer privatePort, Integer publicPort, String type) 
{
         this.privatePort = privatePort;
         this.publicPort = publicPort;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ContainerStatus.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerStatus.java
similarity index 87%
rename from 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ContainerStatus.java
rename to 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerStatus.java
index 441d78d1..94eed978 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ContainerStatus.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerStatus.java
@@ -15,14 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.camel.karavan.infinispan.model;
-
-import org.infinispan.protostream.annotations.ProtoEnumValue;
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
+package org.apache.camel.karavan.cache.model;
 
 import java.time.Instant;
-import java.util.ArrayList;
 import java.util.List;
 
 public class ContainerStatus {
@@ -37,62 +32,42 @@ public class ContainerStatus {
     }
 
     public enum ContainerType {
-        @ProtoEnumValue(number = 0, name = "internal") internal,
-        @ProtoEnumValue(number = 1, name = "devmode") devmode,
-        @ProtoEnumValue(number = 2, name = "devservice") devservice,
-        @ProtoEnumValue(number = 4, name = "project") project,
-        @ProtoEnumValue(number = 5, name = "build") build,
-        @ProtoEnumValue(number = 6, name = "unknown") unknown,
+        internal,
+        devmode,
+        devservice,
+        project,
+        build,
+        unknown,
     }
 
     public enum Command {
-        @ProtoEnumValue(number = 0, name = "run") run,
-        @ProtoEnumValue(number = 1, name = "pause") pause,
-        @ProtoEnumValue(number = 2, name = "stop") stop,
-        @ProtoEnumValue(number = 3, name = "delete") delete,
+        run,
+        pause,
+        stop,
+        delete,
     }
 
     public static final String CACHE = "container_statuses";
-    @ProtoField(number = 1)
     String projectId;
-    @ProtoField(number = 2)
     String containerName;
-    @ProtoField(number = 3)
     String containerId;
-    @ProtoField(number = 4)
     String image;
-    @ProtoField(number = 5, collectionImplementation = ArrayList.class)
     List<ContainerPort> ports;
-    @ProtoField(number = 6)
     String env;
-    @ProtoField(number = 7)
     ContainerType type;
-    @ProtoField(number = 8)
     String memoryInfo;
-    @ProtoField(number = 9)
     String cpuInfo;
-    @ProtoField(number = 10)
     String created;
-    @ProtoField(number = 11)
     String finished;
-    @ProtoField(number = 12)
     List<Command> commands;
-    @ProtoField(number = 13)
     String state;
-    @ProtoField(number = 14)
     String phase;
-    @ProtoField(number = 15)
     Boolean codeLoaded;
-    @ProtoField(number = 16)
     Boolean inTransit = false;
-    @ProtoField(number = 17)
     String initDate;
-    @ProtoField(number = 18)
     String podIP;
-    @ProtoField(number = 19)
     String camelRuntime;
 
-    @ProtoFactory
     public ContainerStatus(String projectId, String containerName, String 
containerId, String image, List<ContainerPort> ports, String env, ContainerType 
type, String memoryInfo, String cpuInfo, String created, String finished, 
List<Command> commands, String state, String phase, Boolean codeLoaded, Boolean 
inTransit, String initDate, String podIP, String camelRuntime) {
         this.projectId = projectId;
         this.containerName = containerName;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/DeploymentStatus.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/DeploymentStatus.java
similarity index 88%
rename from 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/DeploymentStatus.java
rename to 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/DeploymentStatus.java
index 22a0a393..c67c4525 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/DeploymentStatus.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/DeploymentStatus.java
@@ -15,28 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.camel.karavan.infinispan.model;
+package org.apache.camel.karavan.cache.model;
 
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
 
 public class DeploymentStatus {
     public static final String CACHE = "deployment_statuses";
-    @ProtoField(number = 1)
     String projectId;
-    @ProtoField(number = 2)
     String namespace;
-    @ProtoField(number = 3)
     String env;
-    @ProtoField(number = 4)
     String cluster;
-    @ProtoField(number = 5)
     String image;
-    @ProtoField(number = 6)
     Integer replicas;
-    @ProtoField(number = 7)
     Integer readyReplicas;
-    @ProtoField(number = 8)
     Integer unavailableReplicas;
 
     public DeploymentStatus(String projectId, String namespace, String 
cluster, String env) {
@@ -50,7 +40,6 @@ public class DeploymentStatus {
         this.unavailableReplicas = 0;
     }
 
-    @ProtoFactory
     public DeploymentStatus(String projectId, String namespace, String 
cluster, String env, String image, Integer replicas, Integer readyReplicas, 
Integer unavailableReplicas) {
         this.projectId = projectId;
         this.namespace = namespace;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GroupedKey.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/GroupedKey.java
similarity index 89%
rename from 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GroupedKey.java
rename to 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/GroupedKey.java
index 6d619d90..7fb1b0be 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GroupedKey.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/GroupedKey.java
@@ -15,22 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.camel.karavan.infinispan.model;
-
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
-
+package org.apache.camel.karavan.cache.model;
 
 public class GroupedKey {
 
-    @ProtoField(number = 1)
     String projectId;
-    @ProtoField(number = 2)
     String env;
-    @ProtoField(number = 3)
     String key;
 
-    @ProtoFactory
     public GroupedKey(String projectId, String env, String key) {
         this.projectId = projectId;
         this.env = env;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/Project.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/Project.java
similarity index 82%
rename from 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/Project.java
rename to 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/Project.java
index 23684717..df865970 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/Project.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/Project.java
@@ -15,12 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.camel.karavan.infinispan.model;
+package org.apache.camel.karavan.cache.model;
 
 import jakarta.validation.constraints.NotBlank;
-import org.infinispan.protostream.annotations.ProtoEnumValue;
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
 
 import java.time.Instant;
 import java.util.Arrays;
@@ -30,30 +27,23 @@ public class Project {
 
     public enum Type {
 
-        @ProtoEnumValue(number = 0, name = "templates") templates,
-        @ProtoEnumValue (number = 1, name = "kamelets") kamelets,
-        @ProtoEnumValue (number = 2, name = "services") services,
-        @ProtoEnumValue (number = 3, name = "normal") normal,
-        @ProtoEnumValue (number = 4, name = "ephemeral") ephemeral,
+        templates,
+        kamelets,
+        services,
+        normal,
+        ephemeral,
     }
 
-    @ProtoField(number = 1)
     @NotBlank
     String projectId;
-    @ProtoField(number = 2)
     @NotBlank
     String name;
-    @ProtoField(number = 3)
     @NotBlank
     String description;
-    @ProtoField(number = 4)
     String lastCommit;
-    @ProtoField(number = 5)
     Long lastCommitTimestamp;
-    @ProtoField(number = 6)
     Type type;
 
-    @ProtoFactory
     public Project(String projectId, String name, String description, String 
lastCommit, Long lastCommitTimestamp, Type type) {
         this.projectId = projectId;
         this.name = name;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ProjectFile.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ProjectFile.java
similarity index 82%
rename from 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ProjectFile.java
rename to 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ProjectFile.java
index bf6e196d..1c0a5a4e 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ProjectFile.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ProjectFile.java
@@ -15,25 +15,15 @@
  * limitations under the License.
  */
 
-package org.apache.camel.karavan.infinispan.model;
-
-import org.infinispan.protostream.annotations.ProtoDoc;
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
+package org.apache.camel.karavan.cache.model;
 
 public class ProjectFile {
     public static final String CACHE = "project_files";
-    @ProtoField(number = 1)
     String name;
-    @ProtoField(number = 2)
     String code;
-    @ProtoField(number = 3)
-    @ProtoDoc("@Field(index=Index.YES, analyze = Analyze.YES, store = 
Store.NO)")
     String projectId;
-    @ProtoField(number = 4)
     Long lastUpdate;
 
-    @ProtoFactory
     public ProjectFile(String name, String code, String projectId, Long 
lastUpdate) {
         this.name = name;
         this.code = code;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ServiceStatus.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ServiceStatus.java
similarity index 87%
rename from 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ServiceStatus.java
rename to 
karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ServiceStatus.java
index 8973cd6e..59ee19a9 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ServiceStatus.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ServiceStatus.java
@@ -15,31 +15,19 @@
  * limitations under the License.
  */
 
-package org.apache.camel.karavan.infinispan.model;
-
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
+package org.apache.camel.karavan.cache.model;
 
 public class ServiceStatus {
     public static final String CACHE = "service_statuses";
-    @ProtoField(number = 1)
     String projectId;
-    @ProtoField(number = 2)
     String namespace;
-    @ProtoField(number = 3)
     String env;
-    @ProtoField(number = 4)
     String cluster;
-    @ProtoField(number = 5)
     Integer port;
-    @ProtoField(number = 6)
     Integer targetPort;
-    @ProtoField(number = 7)
     String clusterIP;
-    @ProtoField(number = 8)
     String type;
 
-    @ProtoFactory
     public ServiceStatus(String projectId, String namespace, String env, 
String cluster, Integer port, Integer targetPort, String clusterIP, String 
type) {
         this.projectId = projectId;
         this.namespace = namespace;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java
index 12644148..e7962262 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java
@@ -36,9 +36,9 @@ import 
org.apache.camel.karavan.code.model.DockerComposeService;
 import org.apache.camel.karavan.docker.DockerService;
 import org.apache.camel.karavan.git.model.GitRepo;
 import org.apache.camel.karavan.git.model.GitRepoFile;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.Project;
-import org.apache.camel.karavan.infinispan.model.ProjectFile;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.Project;
+import org.apache.camel.karavan.cache.model.ProjectFile;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
 import org.apache.camel.karavan.service.ConfigService;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
@@ -79,7 +79,7 @@ public class CodeService {
     DockerService dockerService;
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     Engine engine;
@@ -99,14 +99,14 @@ public class CodeService {
     );
 
     public Map<String, String> getProjectFilesForDevMode(String projectId, 
Boolean withKamelets) {
-        Map<String, String> files = 
infinispanService.getProjectFiles(projectId).stream()
+        Map<String, String> files = 
karavanCacheService.getProjectFiles(projectId).stream()
                 .filter(f -> !f.getName().endsWith(MARKDOWN_EXTENSION))
                 .filter(f -> !Objects.equals(f.getName(), 
PROJECT_COMPOSE_FILENAME))
                 .filter(f -> !f.getName().endsWith(PROJECT_JKUBE_EXTENSION))
                 .collect(Collectors.toMap(ProjectFile::getName, 
ProjectFile::getCode));
 
         if (withKamelets) {
-            infinispanService.getProjectFiles(Project.Type.kamelets.name())
+            karavanCacheService.getProjectFiles(Project.Type.kamelets.name())
                     .forEach(file -> files.put(file.getName(), 
file.getCode()));
         }
         return files;
@@ -114,7 +114,7 @@ public class CodeService {
 
     public List<Tuple3<String, String, String>> getBuilderEnvMapping() {
         List<Tuple3<String, String, String>> result = new ArrayList<>();
-        ProjectFile projectFile = 
infinispanService.getProjectFile(Project.Type.templates.name(), 
BUILDER_ENV_MAPPING_FILENAME);
+        ProjectFile projectFile = 
karavanCacheService.getProjectFile(Project.Type.templates.name(), 
BUILDER_ENV_MAPPING_FILENAME);
         if (projectFile != null) {
             String text = projectFile.getCode();
             text.lines().forEach(line -> {
@@ -178,7 +178,7 @@ public class CodeService {
 
     public String getTemplateText(String fileName) {
         try {
-            List<ProjectFile> files = 
infinispanService.getProjectFiles(Project.Type.templates.name());
+            List<ProjectFile> files = 
karavanCacheService.getProjectFiles(Project.Type.templates.name());
             return files.stream().filter(f -> 
f.getName().equalsIgnoreCase(fileName))
                     .map(ProjectFile::getCode).findFirst().orElse(null);
         } catch (Exception e) {
@@ -314,7 +314,7 @@ public class CodeService {
 
 
     private int getMaxPortMappedInProjects() {
-        List<ProjectFile> files =  
infinispanService.getProjectFilesByName(PROJECT_COMPOSE_FILENAME).stream()
+        List<ProjectFile> files =  
karavanCacheService.getProjectFilesByName(PROJECT_COMPOSE_FILENAME).stream()
                 .filter(f -> !Objects.equals(f.getProjectId(), 
Project.Type.templates.name())).toList();
         if (!files.isEmpty()) {
             return files.stream().map(this::getProjectPort)
@@ -334,7 +334,7 @@ public class CodeService {
     }
 
     public Integer getProjectPort(String projectId) {
-        ProjectFile composeFile = infinispanService.getProjectFile(projectId, 
PROJECT_COMPOSE_FILENAME);
+        ProjectFile composeFile = 
karavanCacheService.getProjectFile(projectId, PROJECT_COMPOSE_FILENAME);
         return getProjectPort(composeFile);
     }
 
@@ -345,7 +345,7 @@ public class CodeService {
     }
 
     public DockerComposeService getDockerComposeService(String projectId) {
-        ProjectFile compose = infinispanService.getProjectFile(projectId, 
PROJECT_COMPOSE_FILENAME);
+        ProjectFile compose = karavanCacheService.getProjectFile(projectId, 
PROJECT_COMPOSE_FILENAME);
         if (compose != null) {
             return DockerComposeConverter.fromCode(compose.getCode(), 
projectId);
         }
@@ -353,13 +353,13 @@ public class CodeService {
     }
 
     public void updateDockerComposeImage(String projectId, String imageName) {
-        ProjectFile compose = infinispanService.getProjectFile(projectId, 
PROJECT_COMPOSE_FILENAME);
+        ProjectFile compose = karavanCacheService.getProjectFile(projectId, 
PROJECT_COMPOSE_FILENAME);
         if (compose != null) {
             DockerComposeService service = 
DockerComposeConverter.fromCode(compose.getCode(), projectId);
             service.setImage(imageName);
             String code = DockerComposeConverter.toCode(service);
             compose.setCode(code);
-            infinispanService.saveProjectFile(compose);
+            karavanCacheService.saveProjectFile(compose);
         }
     }
 
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
index 31e589e3..ceb205d8 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
@@ -23,8 +23,8 @@ import com.github.dockerjava.api.model.Event;
 import com.github.dockerjava.api.model.EventType;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
 import org.apache.camel.karavan.registry.RegistryService;
 import org.jboss.logging.Logger;
 
@@ -44,7 +44,7 @@ public class DockerEventListener implements 
ResultCallback<Event> {
     RegistryService registryService;
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     private static final Logger LOGGER = 
Logger.getLogger(DockerEventListener.class.getName());
 
@@ -68,13 +68,11 @@ public class DockerEventListener implements 
ResultCallback<Event> {
     }
 
     public void onContainerEvent(Event event, Container container) throws 
InterruptedException {
-        if (infinispanService.isReady()) {
-            if ("exited".equalsIgnoreCase(container.getState())
-                    && Objects.equals(container.getLabels().get(LABEL_TYPE), 
ContainerStatus.ContainerType.build.name())) {
-                String tag = container.getLabels().get(LABEL_TAG);
-                String projectId = container.getLabels().get(LABEL_PROJECT_ID);
-                syncImage(projectId, tag);
-            }
+        if ("exited".equalsIgnoreCase(container.getState())
+                && Objects.equals(container.getLabels().get(LABEL_TYPE), 
ContainerStatus.ContainerType.build.name())) {
+            String tag = container.getLabels().get(LABEL_TAG);
+            String projectId = container.getLabels().get(LABEL_PROJECT_ID);
+            syncImage(projectId, tag);
         }
     }
 
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForGitea.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForGitea.java
index 7fec9e0d..12d57409 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForGitea.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForGitea.java
@@ -23,7 +23,7 @@ import jakarta.inject.Inject;
 import org.apache.camel.karavan.code.CodeService;
 import org.apache.camel.karavan.git.GitService;
 import org.apache.camel.karavan.git.model.GitConfig;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
 import org.jboss.logging.Logger;
 
 @ApplicationScoped
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForInfinispan.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForInfinispan.java
deleted file mode 100644
index 5c594513..00000000
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForInfinispan.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.karavan.docker;
-
-import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
-import org.apache.camel.karavan.code.CodeService;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
-import org.eclipse.microprofile.config.inject.ConfigProperty;
-import org.jboss.logging.Logger;
-
-@ApplicationScoped
-public class DockerForInfinispan {
-
-    private static final Logger LOGGER = 
Logger.getLogger(DockerForInfinispan.class.getName());
-
-    protected static final String INFINISPAN_CONTAINER_NAME = "infinispan";
-
-    @ConfigProperty(name = "karavan.infinispan.username")
-    String infinispanUsername;
-    @ConfigProperty(name = "karavan.infinispan.password")
-    String infinispanPassword;
-
-    @Inject
-    DockerService dockerService;
-
-    @Inject
-    CodeService codeService;
-
-    public void startInfinispan() {
-        try {
-            LOGGER.info("Infinispan is starting...");
-            var compose = 
codeService.getInternalDockerComposeService(INFINISPAN_CONTAINER_NAME);
-            compose.addEnvironment("USER", infinispanUsername);
-            compose.addEnvironment("PASS", infinispanPassword);
-            dockerService.createContainerFromCompose(compose, 
ContainerStatus.ContainerType.internal, false);
-            dockerService.runContainer(INFINISPAN_CONTAINER_NAME);
-            LOGGER.info("Infinispan is started");
-        } catch (Exception e) {
-            LOGGER.error(e.getMessage());
-        }
-    }
-}
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
index 68269ecf..b681b6a2 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
@@ -21,8 +21,8 @@ import com.github.dockerjava.api.model.HealthCheck;
 import com.github.dockerjava.api.model.RestartPolicy;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
-import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
+import org.apache.camel.karavan.cache.model.Project;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
 import org.jboss.logging.Logger;
 
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForRegistry.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForRegistry.java
index 4638fe82..db1a0718 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForRegistry.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForRegistry.java
@@ -19,7 +19,7 @@ package org.apache.camel.karavan.docker;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import org.apache.camel.karavan.code.CodeService;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
 import org.jboss.logging.Logger;
 
 @ApplicationScoped
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
index b87e945d..776e5f58 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
@@ -32,7 +32,7 @@ import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import org.apache.camel.karavan.code.CodeService;
 import org.apache.camel.karavan.code.model.DockerComposeService;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
 import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
 import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
 import org.apache.commons.io.IOUtils;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerServiceUtils.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerServiceUtils.java
index 049a9f62..b4e4db51 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerServiceUtils.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerServiceUtils.java
@@ -20,8 +20,8 @@ import com.github.dockerjava.api.model.*;
 import io.smallrye.mutiny.tuples.Tuple2;
 import org.apache.camel.karavan.api.KameletResources;
 import org.apache.camel.karavan.code.model.DockerComposeHealthCheck;
-import org.apache.camel.karavan.infinispan.model.ContainerPort;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
+import org.apache.camel.karavan.cache.model.ContainerPort;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
 
 import java.io.BufferedReader;
 import java.io.InputStream;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/git/GitService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/git/GitService.java
index 25e37750..08df0a7c 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/git/GitService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/git/GitService.java
@@ -27,8 +27,8 @@ import jakarta.inject.Inject;
 import org.apache.camel.karavan.git.model.GitConfig;
 import org.apache.camel.karavan.git.model.GitRepo;
 import org.apache.camel.karavan.git.model.GitRepoFile;
-import org.apache.camel.karavan.infinispan.model.Project;
-import org.apache.camel.karavan.infinispan.model.ProjectFile;
+import org.apache.camel.karavan.cache.model.Project;
+import org.apache.camel.karavan.cache.model.ProjectFile;
 import org.apache.camel.karavan.service.ConfigService;
 import org.eclipse.jgit.api.*;
 import org.eclipse.jgit.api.errors.GitAPIException;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/InfinispanService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/InfinispanService.java
deleted file mode 100644
index fca6c20e..00000000
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/InfinispanService.java
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- * 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.karavan.infinispan;
-
-import jakarta.enterprise.inject.Default;
-import jakarta.inject.Singleton;
-import org.apache.camel.karavan.infinispan.model.*;
-import org.eclipse.microprofile.config.inject.ConfigProperty;
-import org.eclipse.microprofile.faulttolerance.Retry;
-import org.eclipse.microprofile.health.HealthCheck;
-import org.eclipse.microprofile.health.HealthCheckResponse;
-import org.eclipse.microprofile.health.Readiness;
-import org.infinispan.client.hotrod.RemoteCache;
-import org.infinispan.client.hotrod.RemoteCacheManager;
-import org.infinispan.client.hotrod.Search;
-import org.infinispan.client.hotrod.configuration.ClientIntelligence;
-import org.infinispan.client.hotrod.configuration.ConfigurationBuilder;
-import org.infinispan.commons.configuration.StringConfiguration;
-import org.infinispan.commons.marshall.ProtoStreamMarshaller;
-import org.infinispan.protostream.ProtobufUtil;
-import org.infinispan.protostream.SerializationContext;
-import org.infinispan.protostream.config.Configuration;
-import org.infinispan.query.dsl.QueryFactory;
-import org.jboss.logging.Logger;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.stream.Collectors;
-
-import static 
org.infinispan.query.remote.client.ProtobufMetadataManagerConstants.PROTOBUF_METADATA_CACHE_NAME;
-
-@Default
-@Readiness
-@Singleton
-public class InfinispanService implements HealthCheck {
-
-    @ConfigProperty(name = "karavan.infinispan.hosts")
-    String infinispanHosts;
-    @ConfigProperty(name = "karavan.infinispan.username")
-    String infinispanUsername;
-    @ConfigProperty(name = "karavan.infinispan.password")
-    String infinispanPassword;
-
-    private RemoteCache<GroupedKey, Project> projects;
-    private RemoteCache<GroupedKey, ProjectFile> files;
-    private RemoteCache<GroupedKey, DeploymentStatus> deploymentStatuses;
-    private RemoteCache<GroupedKey, ContainerStatus> containerStatuses;
-    private RemoteCache<GroupedKey, Boolean> transits;
-    private RemoteCache<GroupedKey, ServiceStatus> serviceStatuses;
-    private RemoteCache<GroupedKey, CamelStatus> camelStatuses;
-    private final AtomicBoolean ready = new AtomicBoolean(false);
-
-    private RemoteCacheManager cacheManager;
-
-    private static final Logger LOGGER = 
Logger.getLogger(InfinispanService.class.getName());
-
-    private static final String DEFAULT_ENVIRONMENT = "dev";
-
-    @Retry(maxRetries = 100, delay = 2000)
-    public void tryStart() throws Exception {
-        start();
-    }
-
-    void start() throws Exception {
-        LOGGER.info("InfinispanService is starting in remote mode");
-
-        Configuration.Builder cfgBuilder = 
Configuration.builder().setLogOutOfSequenceWrites(false);
-        SerializationContext ctx = 
ProtobufUtil.newSerializationContext(cfgBuilder.build());
-
-        ProtoStreamMarshaller marshaller = new ProtoStreamMarshaller(ctx);
-        marshaller.register(new KaravanSchemaImpl());
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-        builder.addServers(infinispanHosts)
-                .security()
-                .authentication().enable()
-                .username(infinispanUsername)
-                .password(infinispanPassword)
-                .clientIntelligence(ClientIntelligence.BASIC)
-                .marshaller(marshaller);
-
-        cacheManager = new RemoteCacheManager(builder.build());
-
-        if (cacheManager.getConnectionCount() > 0 ) {
-
-            projects = getOrCreateCache(Project.CACHE);
-            files = getOrCreateCache(ProjectFile.CACHE);
-            containerStatuses = getOrCreateCache(ContainerStatus.CACHE);
-            deploymentStatuses = getOrCreateCache(DeploymentStatus.CACHE);
-            serviceStatuses = getOrCreateCache(ServiceStatus.CACHE);
-            camelStatuses = getOrCreateCache(CamelStatus.CACHE);
-            transits = getOrCreateCache("transits");
-            deploymentStatuses = getOrCreateCache(DeploymentStatus.CACHE);
-
-            
cacheManager.getCache(PROTOBUF_METADATA_CACHE_NAME).put("karavan.proto", 
getResourceFile("/proto/karavan.proto"));
-
-            ready.set(true);
-            LOGGER.info("InfinispanService is started in remote mode");
-        } else {
-            throw new Exception("Not connected...");
-        }
-    }
-
-    private <K, V> RemoteCache<K, V> getOrCreateCache(String name) {
-        String config = getResourceFile("/cache/data-cache-config.xml");
-        return cacheManager.administration().getOrCreateCache(name, new 
StringConfiguration(String.format(config, name)));
-    }
-
-    public boolean isReady() {
-        return ready.get();
-    }
-
-    public List<Project> getProjects() {
-        return projects.values().stream().collect(Collectors.toList());
-    }
-
-    public void saveProject(Project project) {
-        GroupedKey key = GroupedKey.create(project.getProjectId(), 
DEFAULT_ENVIRONMENT, project.getProjectId());
-        projects.put(key, project);
-        projects.put(key, project);
-    }
-
-    public List<ProjectFile> getProjectFiles(String projectId) {
-        QueryFactory queryFactory = Search.getQueryFactory(files);
-        return queryFactory.<ProjectFile>create("FROM karavan.ProjectFile 
WHERE projectId = :projectId")
-                .setParameter("projectId", projectId)
-                .execute().list();
-    }
-
-    public Map<GroupedKey, ProjectFile> getProjectFilesMap(String projectId) {
-        QueryFactory queryFactory = Search.getQueryFactory(files);
-        return queryFactory.<ProjectFile>create("FROM karavan.ProjectFile 
WHERE projectId = :projectId")
-                .setParameter("projectId", projectId)
-                .execute().list().stream()
-                .collect(Collectors.toMap(f -> new 
GroupedKey(f.getProjectId(), DEFAULT_ENVIRONMENT, f.getName()), f -> f));
-    }
-
-    public ProjectFile getProjectFile(String projectId, String filename) {
-        QueryFactory queryFactory = Search.getQueryFactory(files);
-        List<ProjectFile> list = queryFactory.<ProjectFile>create("FROM 
karavan.ProjectFile WHERE name = :name AND projectId = :projectId")
-                .setParameter("name", filename)
-                .setParameter("projectId", projectId)
-                .execute().list();
-        return !list.isEmpty() ? list.get(0) : null;
-    }
-
-    public List<ProjectFile> getProjectFilesByName(String filename) {
-        QueryFactory queryFactory = Search.getQueryFactory(files);
-        return queryFactory.<ProjectFile>create("FROM karavan.ProjectFile 
WHERE name = :name")
-                .setParameter("name", filename)
-                .execute().list();
-    }
-
-    public void saveProjectFile(ProjectFile file) {
-        files.put(GroupedKey.create(file.getProjectId(), DEFAULT_ENVIRONMENT, 
file.getName()), file);
-    }
-
-    public void saveProjectFiles(Map<GroupedKey, ProjectFile> filesToSave) {
-        long lastUpdate = Instant.now().toEpochMilli();
-        filesToSave.forEach((groupedKey, projectFile) -> 
projectFile.setLastUpdate(lastUpdate));
-        files.putAll(filesToSave);
-    }
-
-    public void deleteProject(String projectId) {
-        projects.remove(GroupedKey.create(projectId, DEFAULT_ENVIRONMENT, 
projectId));
-    }
-
-    public void deleteProjectFile(String projectId, String filename) {
-        files.remove(GroupedKey.create(projectId, DEFAULT_ENVIRONMENT, 
filename));
-    }
-
-    public Project getProject(String projectId) {
-        return projects.get(GroupedKey.create(projectId, DEFAULT_ENVIRONMENT, 
projectId));
-    }
-
-    public DeploymentStatus getDeploymentStatus(String projectId, String 
environment) {
-        return deploymentStatuses.get(GroupedKey.create(projectId, 
environment, projectId));
-    }
-
-    public void saveDeploymentStatus(DeploymentStatus status) {
-        deploymentStatuses.put(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getProjectId()), status);
-    }
-
-    public void deleteDeploymentStatus(DeploymentStatus status) {
-        deploymentStatuses.remove(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getProjectId()));
-    }
-
-    public List<DeploymentStatus> getDeploymentStatuses() {
-        return new ArrayList<>(deploymentStatuses.values());
-    }
-
-    public List<DeploymentStatus> getDeploymentStatuses(String env) {
-        QueryFactory queryFactory = Search.getQueryFactory((RemoteCache<?, ?>) 
deploymentStatuses);
-        return queryFactory.<DeploymentStatus>create("FROM 
karavan.DeploymentStatus WHERE env = :env")
-                .setParameter("env", env)
-                .execute().list();
-    }
-
-    public void deleteAllDeploymentsStatuses() {
-        deploymentStatuses.clearAsync();
-    }
-
-    public void saveServiceStatus(ServiceStatus status) {
-        serviceStatuses.put(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getProjectId()), status);
-    }
-
-    public void deleteServiceStatus(ServiceStatus status) {
-        serviceStatuses.remove(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getProjectId()));
-    }
-
-    public List<ServiceStatus> getServiceStatuses() {
-        return new ArrayList<>(serviceStatuses.values());
-    }
-
-    public List<Boolean> getTransits() {
-        return new ArrayList<>(transits.values());
-    }
-
-    public Boolean getTransit(String projectId, String env, String 
containerName) {
-        return transits.get(GroupedKey.create(projectId, env, containerName));
-    }
-
-    public void setTransit(String projectId, String env, String containerName) 
{
-        transits.put(GroupedKey.create(projectId, env, containerName), true);
-    }
-
-    public List<ContainerStatus> getContainerStatuses() {
-        return new ArrayList<>(containerStatuses.values());
-    }
-
-    public List<ContainerStatus> getContainerStatuses(String projectId, String 
env) {
-        QueryFactory queryFactory = Search.getQueryFactory(containerStatuses);
-        return queryFactory.<ContainerStatus>create("FROM 
karavan.ContainerStatus WHERE projectId = :projectId AND env = :env")
-                .setParameter("projectId", projectId)
-                .setParameter("env", env)
-                .execute().list();
-    }
-
-    public ContainerStatus getContainerStatus(String projectId, String env, 
String containerName) {
-        return getContainerStatus(GroupedKey.create(projectId, env, 
containerName));
-    }
-
-    public ContainerStatus getContainerStatus(GroupedKey key) {
-        return containerStatuses.get(key);
-    }
-
-    public ContainerStatus getDevModeContainerStatus(String projectId, String 
env) {
-        return containerStatuses.get(GroupedKey.create(projectId, env, 
projectId));
-    }
-
-    public List<ContainerStatus> getContainerStatuses(String env) {
-        QueryFactory queryFactory = Search.getQueryFactory(containerStatuses);
-        return queryFactory.<ContainerStatus>create("FROM 
karavan.ContainerStatus WHERE env = :env")
-                .setParameter("env", env)
-                .execute().list();
-    }
-
-    public List<ContainerStatus> getAllContainerStatuses() {
-        return new ArrayList<>(containerStatuses.values());
-    }
-
-    public void saveContainerStatus(ContainerStatus status) {
-        containerStatuses.put(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getContainerName()), status);
-    }
-
-    public void deleteContainerStatus(ContainerStatus status) {
-        containerStatuses.remove(GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getContainerName()));
-    }
-
-    public void deleteAllContainersStatuses() {
-        containerStatuses.clearAsync();
-    }
-
-    public void deleteContainerStatus(String projectId, String env, String 
containerName) {
-        containerStatuses.remove(GroupedKey.create(projectId, env, 
containerName));
-    }
-
-    public CamelStatus getCamelStatus(String projectId, String env, String 
containerName) {
-        GroupedKey key = GroupedKey.create(projectId, env, containerName);
-        return camelStatuses.get(key);
-    }
-
-    public CamelStatus getCamelStatus(GroupedKey key) {
-        return camelStatuses.get(key);
-    }
-
-    public List<CamelStatus> getCamelStatusesByEnv(CamelStatusValue.Name name) 
{
-        QueryFactory queryFactory = Search.getQueryFactory(camelStatuses);
-        List<CamelStatus> statuses = queryFactory.<CamelStatus>create("FROM 
karavan.CamelStatus")
-                .execute().list();
-        return statuses.stream().map(cs -> {
-            var values = cs.getStatuses();
-            cs.setStatuses(values.stream().filter(v -> 
Objects.equals(v.getName(), name)).toList());
-            return cs;
-        }).toList();
-    }
-
-    public List<CamelStatus> getCamelStatusesByProjectAndEnv(String projectId, 
String env) {
-        QueryFactory queryFactory = Search.getQueryFactory(camelStatuses);
-        return queryFactory.<CamelStatus>create("FROM karavan.CamelStatus 
WHERE projectId = :projectId AND env = :env")
-                .setParameter("projectId", projectId)
-                .setParameter("env", env)
-                .execute().list();
-    }
-
-    public void saveCamelStatus(CamelStatus status) {
-        GroupedKey key = GroupedKey.create(status.getProjectId(), 
status.getEnv(), status.getContainerName());
-        camelStatuses.put(key, status);
-    }
-
-    public void deleteCamelStatus(String projectId, String name, String env) {
-        GroupedKey key = GroupedKey.create(projectId, env, name);
-        camelStatuses.remove(key);
-    }
-
-    public void deleteCamelStatuses(String projectId, String env) {
-        QueryFactory queryFactory = Search.getQueryFactory(camelStatuses);
-        List<CamelStatus> statuses = queryFactory.<CamelStatus>create("FROM 
karavan.CamelStatus WHERE projectId = :projectId AND env = :env")
-                .setParameter("projectId", projectId)
-                .setParameter("env", env)
-                .execute().list();
-        statuses.forEach(s -> {
-            GroupedKey key = GroupedKey.create(projectId, env, 
s.getContainerName());
-            camelStatuses.remove(key);
-        });
-    }
-
-    public void deleteAllCamelStatuses() {
-        camelStatuses.clearAsync();
-    }
-
-    public List<ContainerStatus> getLoadedDevModeStatuses() {
-        QueryFactory queryFactory = Search.getQueryFactory(containerStatuses);
-        return queryFactory.<ContainerStatus>create("FROM 
karavan.ContainerStatus WHERE type = :type AND codeLoaded = true")
-                .setParameter("type", ContainerStatus.ContainerType.devmode)
-                .execute().list();
-    }
-
-    public List<ContainerStatus> getDevModeStatuses() {
-        QueryFactory queryFactory = Search.getQueryFactory(containerStatuses);
-        return queryFactory.<ContainerStatus>create("FROM 
karavan.ContainerStatus WHERE type = :type")
-                .setParameter("type", ContainerStatus.ContainerType.devmode)
-                .execute().list();
-    }
-
-    public List<ContainerStatus> getContainerStatusByEnv(String env) {
-        QueryFactory queryFactory = Search.getQueryFactory(containerStatuses);
-        return queryFactory.<ContainerStatus>create("FROM 
karavan.ContainerStatus WHERE env = :env")
-                .setParameter("env", env)
-                .execute().list();
-    }
-
-    public void clearAllStatuses() {
-        CompletableFuture.allOf(
-                deploymentStatuses.clearAsync(),
-                containerStatuses.clearAsync(),
-                camelStatuses.clearAsync()
-        ).join();
-    }
-
-    private String getResourceFile(String path) {
-        try {
-            InputStream inputStream = 
InfinispanService.class.getResourceAsStream(path);
-            return new BufferedReader(new InputStreamReader(inputStream))
-                    
.lines().collect(Collectors.joining(System.getProperty("line.separator")));
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    @Override
-    public HealthCheckResponse call() {
-        if (isReady()) {
-            return HealthCheckResponse.named("Infinispan").up().build();
-        } else {
-            return HealthCheckResponse.named("Infinispan").down().build();
-        }
-    }
-}
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/KaravanSchema.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/KaravanSchema.java
deleted file mode 100644
index 79d5eea3..00000000
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/KaravanSchema.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.karavan.infinispan.model;
-
-import org.infinispan.protostream.GeneratedSchema;
-import org.infinispan.protostream.annotations.AutoProtoSchemaBuilder;
-
-@AutoProtoSchemaBuilder(
-        includeClasses = {
-                GroupedKey.class,
-                Project.class,
-                Project.Type.class,
-                ProjectFile.class,
-                CamelStatus.class,
-                CamelStatusValue.class,
-                CamelStatusValue.Name.class,
-                DeploymentStatus.class,
-                ContainerStatus.class,
-                ContainerPort.class,
-                ContainerStatus.ContainerType.class,
-                ContainerStatus.Command.class,
-                ServiceStatus.class
-        },
-        schemaFileName = "karavan.proto",
-        schemaFilePath = "proto/",
-        schemaPackageName = "karavan")
-public interface KaravanSchema extends GeneratedSchema {
-}
-
-
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/DeploymentEventHandler.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/DeploymentEventHandler.java
index 260fcda5..5d35a153 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/DeploymentEventHandler.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/DeploymentEventHandler.java
@@ -19,18 +19,18 @@ package org.apache.camel.karavan.kubernetes;
 
 import io.fabric8.kubernetes.api.model.apps.Deployment;
 import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.DeploymentStatus;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.DeploymentStatus;
 import org.jboss.logging.Logger;
 
 public class DeploymentEventHandler implements 
ResourceEventHandler<Deployment> {
 
     private static final Logger LOGGER = 
Logger.getLogger(DeploymentEventHandler.class.getName());
-    private final InfinispanService infinispanService;
+    private final KaravanCacheService karavanCacheService;
     private final KubernetesService kubernetesService;
 
-    public DeploymentEventHandler(InfinispanService infinispanService, 
KubernetesService kubernetesService) {
-        this.infinispanService = infinispanService;
+    public DeploymentEventHandler(KaravanCacheService karavanCacheService, 
KubernetesService kubernetesService) {
+        this.karavanCacheService = karavanCacheService;
         this.kubernetesService = kubernetesService;
     }
 
@@ -39,7 +39,7 @@ public class DeploymentEventHandler implements 
ResourceEventHandler<Deployment>
         try {
             LOGGER.info("onAdd " + deployment.getMetadata().getName());
             DeploymentStatus ds = getDeploymentStatus(deployment);
-            infinispanService.saveDeploymentStatus(ds);
+            karavanCacheService.saveDeploymentStatus(ds);
         } catch (Exception e){
             LOGGER.error(e.getMessage());
         }
@@ -50,7 +50,7 @@ public class DeploymentEventHandler implements 
ResourceEventHandler<Deployment>
         try {
             LOGGER.info("onUpdate " + newDeployment.getMetadata().getName());
             DeploymentStatus ds = getDeploymentStatus(newDeployment);
-            infinispanService.saveDeploymentStatus(ds);
+            karavanCacheService.saveDeploymentStatus(ds);
         } catch (Exception e){
             LOGGER.error(e.getMessage());
         }
@@ -65,8 +65,8 @@ public class DeploymentEventHandler implements 
ResourceEventHandler<Deployment>
                     deployment.getMetadata().getNamespace(),
                     kubernetesService.getCluster(),
                     kubernetesService.environment);
-            infinispanService.deleteDeploymentStatus(ds);
-            
infinispanService.deleteCamelStatuses(deployment.getMetadata().getName(), 
ds.getEnv());
+            karavanCacheService.deleteDeploymentStatus(ds);
+            
karavanCacheService.deleteCamelStatuses(deployment.getMetadata().getName(), 
ds.getEnv());
         } catch (Exception e){
             LOGGER.error(e.getMessage());
         }
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
index 8ca835c6..88f2ea1c 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
@@ -33,9 +33,9 @@ import jakarta.enterprise.inject.Default;
 import jakarta.enterprise.inject.Produces;
 import jakarta.inject.Inject;
 import org.apache.camel.karavan.code.CodeService;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
-import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
+import org.apache.camel.karavan.cache.model.Project;
 import org.apache.camel.karavan.service.ConfigService;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
 import org.eclipse.microprofile.health.HealthCheck;
@@ -62,7 +62,7 @@ public class KubernetesService implements HealthCheck {
     EventBus eventBus;
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     CodeService codeService;
@@ -112,17 +112,17 @@ public class KubernetesService implements HealthCheck {
 
             SharedIndexInformer<Deployment> deploymentInformer = 
client.apps().deployments().inNamespace(getNamespace())
                     .withLabels(labels).inform();
-            deploymentInformer.addEventHandlerWithResyncPeriod(new 
DeploymentEventHandler(infinispanService, this), 30 * 1000L);
+            deploymentInformer.addEventHandlerWithResyncPeriod(new 
DeploymentEventHandler(karavanCacheService, this), 30 * 1000L);
             informers.add(deploymentInformer);
 
             SharedIndexInformer<Service> serviceInformer = 
client.services().inNamespace(getNamespace())
                     .withLabels(labels).inform();
-            serviceInformer.addEventHandlerWithResyncPeriod(new 
ServiceEventHandler(infinispanService, this), 30 * 1000L);
+            serviceInformer.addEventHandlerWithResyncPeriod(new 
ServiceEventHandler(karavanCacheService, this), 30 * 1000L);
             informers.add(serviceInformer);
 
             SharedIndexInformer<Pod> podRunInformer = 
client.pods().inNamespace(getNamespace())
                     .withLabels(labels).inform();
-            podRunInformer.addEventHandlerWithResyncPeriod(new 
PodEventHandler(infinispanService, this, eventBus), 30 * 1000L);
+            podRunInformer.addEventHandlerWithResyncPeriod(new 
PodEventHandler(karavanCacheService, this, eventBus), 30 * 1000L);
             informers.add(podRunInformer);
 
             LOGGER.info("Started Kubernetes Informers");
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java
index 937cb2f2..5dbf274d 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java
@@ -24,8 +24,8 @@ import io.fabric8.kubernetes.api.model.ResourceRequirements;
 import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
 import io.vertx.core.json.JsonObject;
 import io.vertx.mutiny.core.eventbus.EventBus;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
 import org.jboss.logging.Logger;
 
 import java.util.List;
@@ -38,12 +38,12 @@ import static org.apache.camel.karavan.shared.Constants.*;
 public class PodEventHandler implements ResourceEventHandler<Pod> {
 
     private static final Logger LOGGER = 
Logger.getLogger(PodEventHandler.class.getName());
-    private final InfinispanService infinispanService;
+    private final KaravanCacheService karavanCacheService;
     private final KubernetesService kubernetesService;
     private final EventBus eventBus;
 
-    public PodEventHandler(InfinispanService infinispanService, 
KubernetesService kubernetesService, EventBus eventBus) {
-        this.infinispanService = infinispanService;
+    public PodEventHandler(KaravanCacheService karavanCacheService, 
KubernetesService kubernetesService, EventBus eventBus) {
+        this.karavanCacheService = karavanCacheService;
         this.kubernetesService = kubernetesService;
         this.eventBus = eventBus;
     }
@@ -82,8 +82,8 @@ public class PodEventHandler implements 
ResourceEventHandler<Pod> {
             LOGGER.info("onDelete " + pod.getMetadata().getName());
             String deployment = pod.getMetadata().getLabels().get("app");
             String projectId = deployment != null ? deployment : 
pod.getMetadata().getLabels().get(LABEL_PROJECT_ID);
-            infinispanService.deleteContainerStatus(projectId, 
kubernetesService.environment, pod.getMetadata().getName());
-            infinispanService.deleteCamelStatuses(projectId, 
kubernetesService.environment);
+            karavanCacheService.deleteContainerStatus(projectId, 
kubernetesService.environment, pod.getMetadata().getName());
+            karavanCacheService.deleteCamelStatuses(projectId, 
kubernetesService.environment);
         } catch (Exception e) {
             LOGGER.error(e.getMessage(), e.getCause());
         }
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/ServiceEventHandler.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/ServiceEventHandler.java
index 5612d5b7..4e7b0f19 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/ServiceEventHandler.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/ServiceEventHandler.java
@@ -19,18 +19,18 @@ package org.apache.camel.karavan.kubernetes;
 
 import io.fabric8.kubernetes.api.model.Service;
 import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.ServiceStatus;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.ServiceStatus;
 import org.jboss.logging.Logger;
 
 public class ServiceEventHandler implements ResourceEventHandler<Service> {
 
     private static final Logger LOGGER = 
Logger.getLogger(ServiceEventHandler.class.getName());
-    private InfinispanService infinispanService;
+    private KaravanCacheService karavanCacheService;
     private KubernetesService kubernetesService;
 
-    public ServiceEventHandler(InfinispanService infinispanService, 
KubernetesService kubernetesService) {
-        this.infinispanService = infinispanService;
+    public ServiceEventHandler(KaravanCacheService karavanCacheService, 
KubernetesService kubernetesService) {
+        this.karavanCacheService = karavanCacheService;
         this.kubernetesService = kubernetesService;
     }
 
@@ -39,7 +39,7 @@ public class ServiceEventHandler implements 
ResourceEventHandler<Service> {
         try {
             LOGGER.info("onAdd " + service.getMetadata().getName());
             ServiceStatus ds = getServiceStatus(service);
-            infinispanService.saveServiceStatus(ds);
+            karavanCacheService.saveServiceStatus(ds);
         } catch (Exception e){
             LOGGER.error(e.getMessage());
         }
@@ -50,7 +50,7 @@ public class ServiceEventHandler implements 
ResourceEventHandler<Service> {
         try {
             LOGGER.info("onUpdate " + newService.getMetadata().getName());
             ServiceStatus ds = getServiceStatus(newService);
-            infinispanService.saveServiceStatus(ds);
+            karavanCacheService.saveServiceStatus(ds);
         } catch (Exception e){
             LOGGER.error(e.getMessage());
         }
@@ -65,7 +65,7 @@ public class ServiceEventHandler implements 
ResourceEventHandler<Service> {
                     service.getMetadata().getNamespace(),
                     kubernetesService.getCluster(),
                     kubernetesService.environment);
-            infinispanService.deleteServiceStatus(ds);
+            karavanCacheService.deleteServiceStatus(ds);
         } catch (Exception e){
             LOGGER.error(e.getMessage());
         }
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java
index 55c5f5c6..3e3c98c2 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java
@@ -26,11 +26,11 @@ import io.vertx.mutiny.ext.web.client.HttpResponse;
 import io.vertx.mutiny.ext.web.client.WebClient;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.CamelStatus;
+import org.apache.camel.karavan.cache.model.CamelStatusValue;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
 import org.apache.camel.karavan.code.CodeService;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.CamelStatus;
-import org.apache.camel.karavan.infinispan.model.CamelStatusValue;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
 import org.apache.camel.karavan.shared.Constants;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
@@ -48,7 +48,7 @@ public class CamelService {
     public static final String RELOAD_PROJECT_CODE = "RELOAD_PROJECT_CODE";
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     CodeService codeService;
@@ -80,8 +80,8 @@ public class CamelService {
     @Scheduled(every = "{karavan.camel.status.interval}", concurrentExecution 
= Scheduled.ConcurrentExecution.SKIP)
     public void collectCamelStatuses() {
         LOGGER.debug("Collect Camel Statuses");
-        if (infinispanService.isReady()) {
-            infinispanService.getContainerStatuses(environment).stream()
+        if (karavanCacheService.isReady()) {
+            karavanCacheService.getContainerStatuses(environment).stream()
                     .filter(cs ->
                             cs.getType() == 
ContainerStatus.ContainerType.project
                                     || cs.getType() == 
ContainerStatus.ContainerType.devmode
@@ -103,7 +103,7 @@ public class CamelService {
             Map<String, String> files = 
codeService.getProjectFilesForDevMode(projectId, true);
             files.forEach((name, code) -> putRequest(projectId, name, code, 
1000));
             reloadRequest(projectId);
-            ContainerStatus containerStatus = 
infinispanService.getDevModeContainerStatus(projectId, environment);
+            ContainerStatus containerStatus = 
karavanCacheService.getDevModeContainerStatus(projectId, environment);
             containerStatus.setCodeLoaded(true);
             eventBus.publish(ContainerStatusService.CONTAINER_STATUS, 
JsonObject.mapFrom(containerStatus));
         } catch (Exception ex) {
@@ -191,7 +191,7 @@ public class CamelService {
             }
         });
         CamelStatus cs = new CamelStatus(projectId, containerName, statuses, 
environment);
-        infinispanService.saveCamelStatus(cs);
+        karavanCacheService.saveCamelStatus(cs);
     }
 
     @CircuitBreaker(requestVolumeThreshold = 10, failureRatio = 0.5, delay = 
1000)
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java
index 712eb638..b5458262 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java
@@ -23,9 +23,9 @@ import io.vertx.core.eventbus.EventBus;
 import io.vertx.core.json.JsonObject;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
 import org.apache.camel.karavan.docker.DockerService;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
 import org.jboss.logging.Logger;
 
@@ -44,7 +44,7 @@ public class ContainerStatusService {
     String environment;
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     DockerService dockerService;
@@ -54,7 +54,7 @@ public class ContainerStatusService {
 
     @Scheduled(every = "{karavan.container.statistics.interval}", 
concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
     void collectContainersStatistics() {
-        if (infinispanService.isReady() && !ConfigService.inKubernetes()) {
+        if (karavanCacheService.isReady() && !ConfigService.inKubernetes()) {
             List<ContainerStatus> statusesInDocker = 
dockerService.collectContainersStatistics();
             statusesInDocker.forEach(containerStatus -> {
                 eventBus.publish(ContainerStatusService.CONTAINER_STATUS, 
JsonObject.mapFrom(containerStatus));
@@ -64,7 +64,7 @@ public class ContainerStatusService {
 
     @Scheduled(every = "{karavan.container.status.interval}", 
concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
     void collectContainersStatuses() {
-        if (infinispanService.isReady() && !ConfigService.inKubernetes()) {
+        if (karavanCacheService.isReady() && !ConfigService.inKubernetes()) {
             if (!ConfigService.inKubernetes()) {
                 List<ContainerStatus> statusesInDocker = 
dockerService.collectContainersStatuses();
                 statusesInDocker.forEach(containerStatus -> {
@@ -76,17 +76,17 @@ public class ContainerStatusService {
     }
 
     void cleanContainersStatuses(List<ContainerStatus> statusesInDocker) {
-        if (infinispanService.isReady() && !ConfigService.inKubernetes()) {
+        if (karavanCacheService.isReady() && !ConfigService.inKubernetes()) {
             List<String> namesInDocker = 
statusesInDocker.stream().map(ContainerStatus::getContainerName).toList();
-            List<ContainerStatus> statusesInInfinispan = 
infinispanService.getContainerStatuses(environment);
+            List<ContainerStatus> statusesInInfinispan = 
karavanCacheService.getContainerStatuses(environment);
             // clean deleted
             statusesInInfinispan.stream()
                     .filter(cs -> !checkTransit(cs))
                     .filter(cs -> 
!namesInDocker.contains(cs.getContainerName()))
                     .forEach(containerStatus -> {
                         
eventBus.publish(ContainerStatusService.CONTAINER_DELETED, 
JsonObject.mapFrom(containerStatus));
-                        
infinispanService.deleteContainerStatus(containerStatus);
-                        
infinispanService.deleteCamelStatuses(containerStatus.getProjectId(), 
containerStatus.getEnv());
+                        
karavanCacheService.deleteContainerStatus(containerStatus);
+                        
karavanCacheService.deleteCamelStatuses(containerStatus.getProjectId(), 
containerStatus.getEnv());
                     });
         }
     }
@@ -100,12 +100,12 @@ public class ContainerStatusService {
 
     @ConsumeEvent(value = CONTAINER_STATUS, blocking = true, ordered = true)
     public void saveContainerStatus(JsonObject data) {
-        if (infinispanService.isReady()) {
+        if (karavanCacheService.isReady()) {
             ContainerStatus newStatus = data.mapTo(ContainerStatus.class);
-            ContainerStatus oldStatus = 
infinispanService.getContainerStatus(newStatus.getProjectId(), 
newStatus.getEnv(), newStatus.getContainerName());
+            ContainerStatus oldStatus = 
karavanCacheService.getContainerStatus(newStatus.getProjectId(), 
newStatus.getEnv(), newStatus.getContainerName());
 
             if (oldStatus == null) {
-                infinispanService.saveContainerStatus(newStatus);
+                karavanCacheService.saveContainerStatus(newStatus);
             } else if (Objects.equals(oldStatus.getInTransit(), 
Boolean.FALSE)) {
                 saveContainerStatus(newStatus, oldStatus);
             } else if (Objects.equals(oldStatus.getInTransit(), Boolean.TRUE)) 
{
@@ -130,6 +130,6 @@ public class ContainerStatusService {
             newStatus.setCpuInfo(oldStatus.getCpuInfo());
             newStatus.setMemoryInfo(oldStatus.getMemoryInfo());
         }
-        infinispanService.saveContainerStatus(newStatus);
+        karavanCacheService.saveContainerStatus(newStatus);
     }
 }
\ No newline at end of file
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
index d799806d..9d22d1c1 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
@@ -25,12 +25,11 @@ import io.vertx.core.eventbus.EventBus;
 import jakarta.enterprise.event.Observes;
 import jakarta.inject.Inject;
 import jakarta.inject.Singleton;
+import org.apache.camel.karavan.cache.KaravanCacheService;
 import org.apache.camel.karavan.docker.DockerForGitea;
-import org.apache.camel.karavan.docker.DockerForInfinispan;
 import org.apache.camel.karavan.docker.DockerForRegistry;
 import org.apache.camel.karavan.docker.DockerService;
 import org.apache.camel.karavan.git.GiteaService;
-import org.apache.camel.karavan.infinispan.InfinispanService;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
 import org.eclipse.microprofile.health.HealthCheck;
@@ -66,10 +65,7 @@ public class KaravanService implements HealthCheck {
     DockerForRegistry dockerForRegistry;
 
     @Inject
-    DockerForInfinispan dockerForInfinispan;
-
-    @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     EventBus eventBus;
@@ -107,7 +103,6 @@ public class KaravanService implements HealthCheck {
             dockerService.createNetwork();
             dockerService.startListeners();
 
-            dockerForInfinispan.startInfinispan();
             if (giteaInstall) {
                 dockerForGitea.startGitea();
                 giteaService.install();
@@ -131,7 +126,6 @@ public class KaravanService implements HealthCheck {
 
     @ConsumeEvent(value = START_SERVICES, blocking = true)
     void startServices(String data) throws Exception {
-        infinispanService.tryStart();
         projectService.tryStart();
     }
 
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
index aaebf8ae..528d54fd 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
@@ -22,17 +22,17 @@ import io.vertx.mutiny.core.eventbus.EventBus;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.enterprise.inject.Default;
 import jakarta.inject.Inject;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.ContainerStatus;
+import org.apache.camel.karavan.cache.model.GroupedKey;
+import org.apache.camel.karavan.cache.model.Project;
+import org.apache.camel.karavan.cache.model.ProjectFile;
 import org.apache.camel.karavan.code.CodeService;
 import org.apache.camel.karavan.code.DockerComposeConverter;
 import org.apache.camel.karavan.code.model.DockerComposeService;
 import org.apache.camel.karavan.docker.DockerForKaravan;
 import org.apache.camel.karavan.git.GitService;
 import org.apache.camel.karavan.git.model.GitRepo;
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.ContainerStatus;
-import org.apache.camel.karavan.infinispan.model.GroupedKey;
-import org.apache.camel.karavan.infinispan.model.Project;
-import org.apache.camel.karavan.infinispan.model.ProjectFile;
 import org.apache.camel.karavan.kubernetes.KubernetesService;
 import org.apache.camel.karavan.registry.RegistryService;
 import org.apache.camel.karavan.shared.Constants;
@@ -68,7 +68,7 @@ public class ProjectService implements HealthCheck {
     ProjectModifyValidator projectModifyValidator;
 
     @Inject
-    InfinispanService infinispanService;
+    KaravanCacheService karavanCacheService;
 
     @Inject
     KubernetesService kubernetesService;
@@ -101,7 +101,7 @@ public class ProjectService implements HealthCheck {
 
     public String runProjectWithJBangOptions(Project project, String 
jBangOptions) throws Exception {
         String containerName = project.getProjectId();
-        ContainerStatus status = 
infinispanService.getDevModeContainerStatus(project.getProjectId(), 
environment);
+        ContainerStatus status = 
karavanCacheService.getDevModeContainerStatus(project.getProjectId(), 
environment);
         if (status == null) {
             status = ContainerStatus.createDevMode(project.getProjectId(), 
environment);
         }
@@ -164,8 +164,8 @@ public class ProjectService implements HealthCheck {
     }
 
     public List<Project> getAllProjects(String type) {
-        if (infinispanService.isReady()) {
-            return infinispanService.getProjects().stream()
+        if (karavanCacheService.isReady()) {
+            return karavanCacheService.getProjects().stream()
                     .filter(p -> type == null || 
Objects.equals(p.getType().name(), type))
                     .sorted(Comparator.comparing(Project::getProjectId))
                     .collect(Collectors.toList());
@@ -188,16 +188,16 @@ public class ProjectService implements HealthCheck {
     public Project save(Project project) {
         projectModifyValidator.validate(project).failOnError();
 
-        infinispanService.saveProject(project);
+        karavanCacheService.saveProject(project);
 
         ProjectFile appProp = codeService.getApplicationProperties(project);
-        infinispanService.saveProjectFile(appProp);
+        karavanCacheService.saveProjectFile(appProp);
         if (!ConfigService.inKubernetes()) {
             ProjectFile projectCompose = 
codeService.createInitialProjectCompose(project);
-            infinispanService.saveProjectFile(projectCompose);
+            karavanCacheService.saveProjectFile(projectCompose);
         } else if (kubernetesService.isOpenshift()){
             ProjectFile projectCompose = 
codeService.createInitialDeployment(project);
-            infinispanService.saveProjectFile(projectCompose);
+            karavanCacheService.saveProjectFile(projectCompose);
         }
 
         return project;
@@ -206,13 +206,13 @@ public class ProjectService implements HealthCheck {
     public Project copy(String sourceProjectId, Project project) {
         projectModifyValidator.validate(project).failOnError();
 
-        Project sourceProject = infinispanService.getProject(sourceProjectId);
+        Project sourceProject = 
karavanCacheService.getProject(sourceProjectId);
 
         // Save project
-        infinispanService.saveProject(project);
+        karavanCacheService.saveProject(project);
 
         // Copy files from the source and make necessary modifications
-        Map<GroupedKey, ProjectFile> filesMap = 
infinispanService.getProjectFilesMap(sourceProjectId).entrySet().stream()
+        Map<GroupedKey, ProjectFile> filesMap = 
karavanCacheService.getProjectFilesMap(sourceProjectId).entrySet().stream()
                 .filter(e -> !Objects.equals(e.getValue().getName(), 
PROJECT_COMPOSE_FILENAME) &&
                         !Objects.equals(e.getValue().getName(), 
PROJECT_DEPLOYMENT_JKUBE_FILENAME)
                 )
@@ -227,14 +227,14 @@ public class ProjectService implements HealthCheck {
                             return file;
                         })
                 );
-        infinispanService.saveProjectFiles(filesMap);
+        karavanCacheService.saveProjectFiles(filesMap);
 
         if (!ConfigService.inKubernetes()) {
             ProjectFile projectCompose = 
codeService.createInitialProjectCompose(project);
-            infinispanService.saveProjectFile(projectCompose);
+            karavanCacheService.saveProjectFile(projectCompose);
         } else if (kubernetesService.isOpenshift()) {
             ProjectFile projectCompose = 
codeService.createInitialDeployment(project);
-            infinispanService.saveProjectFile(projectCompose);
+            karavanCacheService.saveProjectFile(projectCompose);
         }
 
         return project;
@@ -268,8 +268,8 @@ public class ProjectService implements HealthCheck {
 
     //    @Retry(maxRetries = 100, delay = 2000)
     public void tryStart() throws Exception {
-        if (infinispanService.isReady() && gitService.checkGit()) {
-            if (infinispanService.getProjects().isEmpty()) {
+        if (karavanCacheService.isReady() && gitService.checkGit()) {
+            if (karavanCacheService.getProjects().isEmpty()) {
                 importAllProjects();
             }
             if (Objects.equals(environment, Constants.DEV_ENV)) {
@@ -300,11 +300,11 @@ public class ProjectService implements HealthCheck {
                 } else {
                     project = getProjectFromRepo(repo);
                 }
-                infinispanService.saveProject(project);
+                karavanCacheService.saveProject(project);
 
                 repo.getFiles().forEach(repoFile -> {
                     ProjectFile file = new ProjectFile(repoFile.getName(), 
repoFile.getBody(), folderName, repoFile.getLastCommitTimestamp());
-                    infinispanService.saveProjectFile(file);
+                    karavanCacheService.saveProjectFile(file);
                 });
             });
         } catch (Exception e) {
@@ -322,10 +322,10 @@ public class ProjectService implements HealthCheck {
         LOGGER.info("Import project from GitRepo " + repo.getName());
         try {
             Project project = getProjectFromRepo(repo);
-            infinispanService.saveProject(project);
+            karavanCacheService.saveProject(project);
             repo.getFiles().forEach(repoFile -> {
                 ProjectFile file = new ProjectFile(repoFile.getName(), 
repoFile.getBody(), repo.getName(), repoFile.getLastCommitTimestamp());
-                infinispanService.saveProjectFile(file);
+                karavanCacheService.saveProjectFile(file);
             });
             return project;
         } catch (Exception e) {
@@ -348,24 +348,24 @@ public class ProjectService implements HealthCheck {
     }
 
     public Project commitAndPushProject(String projectId, String message) 
throws Exception {
-        Project p = infinispanService.getProject(projectId);
-        List<ProjectFile> files = infinispanService.getProjectFiles(projectId);
+        Project p = karavanCacheService.getProject(projectId);
+        List<ProjectFile> files = 
karavanCacheService.getProjectFiles(projectId);
         RevCommit commit = gitService.commitAndPushProject(p, files, message);
         String commitId = commit.getId().getName();
         Long lastUpdate = commit.getCommitTime() * 1000L;
         p.setLastCommit(commitId);
         p.setLastCommitTimestamp(lastUpdate);
-        infinispanService.saveProject(p);
+        karavanCacheService.saveProject(p);
         return p;
     }
 
     void addKameletsProject() {
         LOGGER.info("Add custom kamelets project if not exists");
         try {
-            Project kamelets = 
infinispanService.getProject(Project.Type.kamelets.name());
+            Project kamelets = 
karavanCacheService.getProject(Project.Type.kamelets.name());
             if (kamelets == null) {
                 kamelets = new Project(Project.Type.kamelets.name(), "Custom 
Kamelets", "Custom Kamelets", "", Instant.now().toEpochMilli(), 
Project.Type.kamelets);
-                infinispanService.saveProject(kamelets);
+                karavanCacheService.saveProject(kamelets);
                 commitAndPushProject(Project.Type.kamelets.name(), "Add custom 
kamelets");
             }
         } catch (Exception e) {
@@ -376,23 +376,23 @@ public class ProjectService implements HealthCheck {
     void addTemplatesProject() {
         LOGGER.info("Add templates project if not exists");
         try {
-            Project templates = 
infinispanService.getProject(Project.Type.templates.name());
+            Project templates = 
karavanCacheService.getProject(Project.Type.templates.name());
             if (templates == null) {
                 templates = new Project(Project.Type.templates.name(), 
"Templates", "Templates", "", Instant.now().toEpochMilli(), 
Project.Type.templates);
-                infinispanService.saveProject(templates);
+                karavanCacheService.saveProject(templates);
 
                 codeService.getTemplates().forEach((name, value) -> {
                     ProjectFile file = new ProjectFile(name, value, 
Project.Type.templates.name(), Instant.now().toEpochMilli());
-                    infinispanService.saveProjectFile(file);
+                    karavanCacheService.saveProjectFile(file);
                 });
                 commitAndPushProject(Project.Type.templates.name(), "Add 
default templates");
             } else {
                 LOGGER.info("Add new templates if any");
                 codeService.getTemplates().forEach((name, value) -> {
-                    ProjectFile f = 
infinispanService.getProjectFile(Project.Type.templates.name(), name);
+                    ProjectFile f = 
karavanCacheService.getProjectFile(Project.Type.templates.name(), name);
                     if (f == null) {
                         ProjectFile file = new ProjectFile(name, value, 
Project.Type.templates.name(), Instant.now().toEpochMilli());
-                        infinispanService.saveProjectFile(file);
+                        karavanCacheService.saveProjectFile(file);
                     }
                 });
             }
@@ -404,14 +404,14 @@ public class ProjectService implements HealthCheck {
     void addServicesProject() {
         LOGGER.info("Add services project if not exists");
         try {
-            Project services = 
infinispanService.getProject(Project.Type.services.name());
+            Project services = 
karavanCacheService.getProject(Project.Type.services.name());
             if (services == null) {
                 services = new Project(Project.Type.services.name(), 
"Services", "Development Services", "", Instant.now().toEpochMilli(), 
Project.Type.services);
-                infinispanService.saveProject(services);
+                karavanCacheService.saveProject(services);
 
                 codeService.getServices().forEach((name, value) -> {
                     ProjectFile file = new ProjectFile(name, value, 
Project.Type.services.name(), Instant.now().toEpochMilli());
-                    infinispanService.saveProjectFile(file);
+                    karavanCacheService.saveProjectFile(file);
                 });
                 commitAndPushProject(Project.Type.services.name(), "Add 
services");
             }
@@ -421,7 +421,7 @@ public class ProjectService implements HealthCheck {
     }
 
     public String getDevServiceCode() {
-        List<ProjectFile> files = 
infinispanService.getProjectFiles(Project.Type.services.name());
+        List<ProjectFile> files = 
karavanCacheService.getProjectFiles(Project.Type.services.name());
         Optional<ProjectFile> file = files.stream().filter(f -> 
f.getName().equals(DEV_SERVICES_FILENAME)).findFirst();
         return file.orElse(new ProjectFile()).getCode();
     }
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectFileCreateValidator.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectFileCreateValidator.java
index f6f71265..f753e74e 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectFileCreateValidator.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectFileCreateValidator.java
@@ -2,8 +2,8 @@ package org.apache.camel.karavan.validation.project;
 
 import java.util.List;
 
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.ProjectFile;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.ProjectFile;
 import org.apache.camel.karavan.shared.validation.SimpleValidator;
 import org.apache.camel.karavan.shared.validation.ValidationError;
 import org.apache.camel.karavan.shared.validation.Validator;
@@ -14,18 +14,18 @@ import jakarta.enterprise.context.ApplicationScoped;
 public class ProjectFileCreateValidator extends Validator<ProjectFile> {
 
     private final SimpleValidator simpleValidator;
-    private final InfinispanService infinispanService;
+    private final KaravanCacheService karavanCacheService;
 
-    public ProjectFileCreateValidator(SimpleValidator simpleValidator, 
InfinispanService infinispanService) {
+    public ProjectFileCreateValidator(SimpleValidator simpleValidator, 
KaravanCacheService karavanCacheService) {
         this.simpleValidator = simpleValidator;
-        this.infinispanService = infinispanService;
+        this.karavanCacheService = karavanCacheService;
     }
 
     @Override
     protected void validationRules(ProjectFile value, List<ValidationError> 
errors) {
         simpleValidator.validate(value, errors);
 
-        boolean projectFileExists = 
infinispanService.getProjectFile(value.getProjectId(), value.getName()) != null;
+        boolean projectFileExists = 
karavanCacheService.getProjectFile(value.getProjectId(), value.getName()) != 
null;
 
         if (projectFileExists) {
             errors.add(new ValidationError("name", "File with given name 
already exists"));
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectModifyValidator.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectModifyValidator.java
index 3ba08dac..a59d9cc6 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectModifyValidator.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/validation/project/ProjectModifyValidator.java
@@ -2,8 +2,8 @@ package org.apache.camel.karavan.validation.project;
 
 import java.util.List;
 
-import org.apache.camel.karavan.infinispan.InfinispanService;
-import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.cache.KaravanCacheService;
+import org.apache.camel.karavan.cache.model.Project;
 import org.apache.camel.karavan.shared.validation.SimpleValidator;
 import org.apache.camel.karavan.shared.validation.ValidationError;
 import org.apache.camel.karavan.shared.validation.Validator;
@@ -15,11 +15,11 @@ public class ProjectModifyValidator extends 
Validator<Project> {
     private static final List<String> FORBIDDEN_PROJECT_ID_VALUES = 
List.of("templates", "kamelets");
 
     private final SimpleValidator simpleValidator;
-    private final InfinispanService infinispanService;
+    private final KaravanCacheService karavanCacheService;
 
-    public ProjectModifyValidator(SimpleValidator simpleValidator, 
InfinispanService infinispanService) {
+    public ProjectModifyValidator(SimpleValidator simpleValidator, 
KaravanCacheService karavanCacheService) {
         this.simpleValidator = simpleValidator;
-        this.infinispanService = infinispanService;
+        this.karavanCacheService = karavanCacheService;
     }
 
 
@@ -27,7 +27,7 @@ public class ProjectModifyValidator extends 
Validator<Project> {
     protected void validationRules(Project value, List<ValidationError> 
errors) {
         simpleValidator.validate(value, errors);
 
-        boolean projectIdExists = 
infinispanService.getProject(value.getProjectId()) != null;
+        boolean projectIdExists = 
karavanCacheService.getProject(value.getProjectId()) != null;
 
         if(projectIdExists) {
             errors.add(new ValidationError("projectId", "Project ID already 
exists"));
diff --git a/karavan-web/karavan-app/src/main/resources/application.properties 
b/karavan-web/karavan-app/src/main/resources/application.properties
index 2efec5fd..b03e514e 100644
--- a/karavan-web/karavan-app/src/main/resources/application.properties
+++ b/karavan-web/karavan-app/src/main/resources/application.properties
@@ -59,14 +59,6 @@ karavan.image-registry-username=
 karavan.image-registry-password=
 karavan.image-registry-install=false
 
-# Infinispan connection config
-karavan.infinispan.username=admin
-karavan.infinispan.password=karavan
-karavan.infinispan.hosts=infinispan:11222
-
-quarkus.infinispan-client.devservices.enabled=false
-quarkus.infinispan-client.health.enabled=false
-
 # Public Dev
 %dev.karavan.auth=public
 %dev.quarkus.oidc.enabled=false
diff --git 
a/karavan-web/karavan-app/src/main/resources/cache/data-cache-config.xml 
b/karavan-web/karavan-app/src/main/resources/cache/data-cache-config.xml
deleted file mode 100644
index 59d2b404..00000000
--- a/karavan-web/karavan-app/src/main/resources/cache/data-cache-config.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-  ~ 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.
-  -->
-
-<distributed-cache name="%s" mode="SYNC">
-    <encoding media-type="application/x-protostream"/>
-    <locking isolation="REPEATABLE_READ"/>
-    <groups enabled="true"/>
-    <memory max-count="1000000" when-full="REMOVE"/>
-</distributed-cache>
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/resources/hazelcast.xml 
b/karavan-web/karavan-app/src/main/resources/hazelcast.xml
new file mode 100644
index 00000000..37836362
--- /dev/null
+++ b/karavan-web/karavan-app/src/main/resources/hazelcast.xml
@@ -0,0 +1,21 @@
+<hazelcast xmlns="http://www.hazelcast.com/schema/config";
+           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+           xsi:schemaLocation="http://www.hazelcast.com/schema/config
+           http://www.hazelcast.com/schema/config/hazelcast-config-5.3.xsd";>
+    <cluster-name>karavan</cluster-name>
+    <instance-name>karavan</instance-name>
+    <jet enabled="false" resource-upload-enabled="false"/>
+    <integrity-checker enabled="false"/>
+    <network>
+        <port auto-increment="true">5900</port>
+        <outbound-ports>
+            <ports>0</ports>
+        </outbound-ports>
+        <join>
+            <auto-detection enabled="false"/>
+            <multicast enabled="false"/>
+            <tcp-ip enabled="false"/>
+        </join>
+    </network>
+    <metrics enabled="false"/>
+</hazelcast>
diff --git a/karavan-web/karavan-app/src/main/resources/services/internal.yaml 
b/karavan-web/karavan-app/src/main/resources/services/internal.yaml
index 630f498d..9f01ef32 100644
--- a/karavan-web/karavan-app/src/main/resources/services/internal.yaml
+++ b/karavan-web/karavan-app/src/main/resources/services/internal.yaml
@@ -2,12 +2,6 @@ version: '3.8'
 
 services:
 
-  infinispan:
-    image: quay.io/infinispan/server:14.0.21.Final
-    restart: always
-    ports:
-      - "11222:11222"
-
   gitea:
     image: gitea/gitea:1.20.2-rootless
     restart: always


Reply via email to