diff --git a/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/DTO/FailureType.java b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/DTO/FailureType.java
new file mode 100644
index 0000000000000000000000000000000000000000..eb0eff7b7f920f32d520425054bd8b9213fad571
--- /dev/null
+++ b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/DTO/FailureType.java
@@ -0,0 +1,9 @@
+package com.informationcatalyst.enact.application_controller.containerEnabler.DTO;
+
+public enum FailureType {
+    NETWORK_PARTITION,
+    CPU_SPIKE,
+    MEMORY_LEAK,
+    DISK_FAILURE,
+    PROCESS_KILL
+}
\ No newline at end of file
diff --git a/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/exceptionhandling/ChaosEngineException.java b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/exceptionhandling/ChaosEngineException.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7f6d8ccdf98c96f8a5f77598a1d1297229a3b4f
--- /dev/null
+++ b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/exceptionhandling/ChaosEngineException.java
@@ -0,0 +1,11 @@
+package com.informationcatalyst.enact.application_controller.containerEnabler.exceptionhandling;
+
+public class ChaosEngineException extends RuntimeException {
+    public ChaosEngineException(String message) {
+        super(message);
+    }
+
+    public ChaosEngineException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/interfaces/ContainerChaosEngineer.java b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/interfaces/ContainerChaosEngineer.java
new file mode 100644
index 0000000000000000000000000000000000000000..644fe424c7300e0a844044a778e95558fa06341c
--- /dev/null
+++ b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/interfaces/ContainerChaosEngineer.java
@@ -0,0 +1,13 @@
+package com.informationcatalyst.enact.application_controller.containerEnabler.interfaces;
+
+import com.informationcatalyst.enact.application_controller.containerEnabler.models.ChaosExperimentResult;
+import com.informationcatalyst.enact.application_controller.containerEnabler.models.ChaosScenario;
+import com.informationcatalyst.enact.application_controller.containerEnabler.models.ResilienceScore;
+
+public interface ContainerChaosEngineer {
+    ChaosExperimentResult runExperiment(ChaosScenario scenario);
+
+    boolean rollbackChaos(String containerId);
+
+    ResilienceScore calculateResilience(String containerId);
+}
\ No newline at end of file
diff --git a/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/models/ChaosExperimentResult.java b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/models/ChaosExperimentResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..64ff617b2de51e3f3d72c0e1ab9e604b9649dc33
--- /dev/null
+++ b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/models/ChaosExperimentResult.java
@@ -0,0 +1,67 @@
+package com.informationcatalyst.enact.application_controller.containerEnabler.models;
+
+public class ChaosExperimentResult {
+    private String experimentId;
+    private String scenarioId;
+    private Status status;
+    private String failureMessage;
+    private long recoveryTimeMs;
+
+    public enum Status {
+        SUCCESS, FAILED, ROLLED_BACK
+    }
+
+    // Constructors, Getters, and Setters
+    public ChaosExperimentResult() {
+    }
+
+    public ChaosExperimentResult(String experimentId, String scenarioId, Status status,
+            String failureMessage, long recoveryTimeMs) {
+        this.experimentId = experimentId;
+        this.scenarioId = scenarioId;
+        this.status = status;
+        this.failureMessage = failureMessage;
+        this.recoveryTimeMs = recoveryTimeMs;
+    }
+
+    // Getters and Setters
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    public String getScenarioId() {
+        return scenarioId;
+    }
+
+    public void setScenarioId(String scenarioId) {
+        this.scenarioId = scenarioId;
+    }
+
+    public Status getStatus() {
+        return status;
+    }
+
+    public void setStatus(Status status) {
+        this.status = status;
+    }
+
+    public String getFailureMessage() {
+        return failureMessage;
+    }
+
+    public void setFailureMessage(String failureMessage) {
+        this.failureMessage = failureMessage;
+    }
+
+    public long getRecoveryTimeMs() {
+        return recoveryTimeMs;
+    }
+
+    public void setRecoveryTimeMs(long recoveryTimeMs) {
+        this.recoveryTimeMs = recoveryTimeMs;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/models/ChaosScenario.java b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/models/ChaosScenario.java
new file mode 100644
index 0000000000000000000000000000000000000000..5793c6d8af02475c00c84beb01886ab985adb434
--- /dev/null
+++ b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/models/ChaosScenario.java
@@ -0,0 +1,83 @@
+package com.informationcatalyst.enact.application_controller.containerEnabler.models;
+
+import java.util.Map;
+
+public class ChaosScenario {
+    private String scenarioId;
+    private String containerId;
+    private FailureType failureType;
+    private Map<String, String> parameters;
+    private int durationSeconds;
+
+    public enum FailureType {
+        NETWORK_PARTITION,
+        CPU_SPIKE,
+        MEMORY_LEAK,
+        DISK_FAILURE,
+        PROCESS_KILL
+    }
+
+    // Constructors, Getters, and Setters
+    public ChaosScenario() {
+    }
+
+    // public ChaosScenario(String scenarioId, String containerId, FailureType
+    // failureType,
+    // Map<String, String> parameters, int durationSeconds) {
+    // this.scenarioId = scenarioId;
+    // this.containerId = containerId;
+    // this.failureType = failureType;
+    // this.parameters = parameters;
+    // this.durationSeconds = durationSeconds;
+    // }
+
+    public ChaosScenario(String scenarioId, String containerId, FailureType failureType,
+            Map<String, String> parameters, int durationSeconds) {
+        this.scenarioId = scenarioId;
+        this.containerId = containerId;
+        this.failureType = failureType;
+        this.parameters = parameters;
+        this.durationSeconds = durationSeconds;
+    }
+
+    // Getters and Setters
+    public String getScenarioId() {
+        return scenarioId;
+    }
+
+    public void setScenarioId(String scenarioId) {
+        this.scenarioId = scenarioId;
+    }
+
+    public String getContainerId() {
+        return containerId;
+    }
+
+    public void setContainerId(String containerId) {
+        this.containerId = containerId;
+    }
+
+    public FailureType getFailureType() {
+        return failureType;
+    }
+
+    public void setFailureType(FailureType failureType) {
+        this.failureType = failureType;
+    }
+
+    public Map<String, String> getParameters() {
+        return parameters;
+    }
+
+    public void setParameters(Map<String, String> parameters) {
+        this.parameters = parameters;
+    }
+
+    public int getDurationSeconds() {
+        return durationSeconds;
+    }
+
+    public void setDurationSeconds(int durationSeconds) {
+        this.durationSeconds = durationSeconds;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/models/ResilienceScore.java b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/models/ResilienceScore.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ce230300d678d353d1e755aa45634a07e79d54e
--- /dev/null
+++ b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/models/ResilienceScore.java
@@ -0,0 +1,41 @@
+package com.informationcatalyst.enact.application_controller.containerEnabler.models;
+
+public class ResilienceScore {
+    private String containerId;
+    private double score;
+    private String evaluationCriteria;
+
+    // Constructors, Getters, and Setters
+    public ResilienceScore() {
+    }
+
+    public ResilienceScore(String containerId, double score, String evaluationCriteria) {
+        this.containerId = containerId;
+        this.score = score;
+        this.evaluationCriteria = evaluationCriteria;
+    }
+
+    public String getContainerId() {
+        return containerId;
+    }
+
+    public void setContainerId(String containerId) {
+        this.containerId = containerId;
+    }
+
+    public double getScore() {
+        return score;
+    }
+
+    public void setScore(double score) {
+        this.score = score;
+    }
+
+    public String getEvaluationCriteria() {
+        return evaluationCriteria;
+    }
+
+    public void setEvaluationCriteria(String evaluationCriteria) {
+        this.evaluationCriteria = evaluationCriteria;
+    }
+}
diff --git a/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/services/ContainerChaosEngineerService.java b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/services/ContainerChaosEngineerService.java
new file mode 100644
index 0000000000000000000000000000000000000000..c0d0dc4ffca8aa8bd1d4b1c5d43b5a04951e2171
--- /dev/null
+++ b/src/main/java/com/informationcatalyst/enact/application_controller/containerEnabler/services/ContainerChaosEngineerService.java
@@ -0,0 +1,116 @@
+package com.informationcatalyst.enact.application_controller.containerEnabler.services;
+
+import com.informationcatalyst.enact.application_controller.containerEnabler.exceptionhandling.ChaosEngineException;
+
+import com.informationcatalyst.enact.application_controller.containerEnabler.models.ChaosExperimentResult;
+import com.informationcatalyst.enact.application_controller.containerEnabler.models.ChaosScenario;
+import com.informationcatalyst.enact.application_controller.containerEnabler.models.ResilienceScore;
+
+import com.informationcatalyst.enact.application_controller.containerEnabler.interfaces.ContainerChaosEngineer;
+
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.concurrent.*;
+
+@Service
+public class ContainerChaosEngineerService implements ContainerChaosEngineer {
+
+    private final Map<String, ScheduledExecutorService> activeExperiments = new ConcurrentHashMap<>();
+    private final Map<String, ChaosScenario> scenarioRegistry = new ConcurrentHashMap<>();
+
+    @Override
+    public ChaosExperimentResult runExperiment(ChaosScenario scenario) {
+        String experimentId = UUID.randomUUID().toString();
+        scenario.setScenarioId(UUID.randomUUID().toString());
+        scenarioRegistry.put(scenario.getScenarioId(), scenario);
+
+        try {
+            // Simulate failure injection
+            injectFailure(scenario);
+
+            // Schedule auto-recovery if duration is specified
+            if (scenario.getDurationSeconds() > 0) {
+                scheduleRecovery(scenario, experimentId);
+            }
+
+            return new ChaosExperimentResult(
+                    experimentId,
+                    scenario.getScenarioId(),
+                    ChaosExperimentResult.Status.SUCCESS,
+                    null,
+                    0);
+        } catch (Exception e) {
+            return new ChaosExperimentResult(
+                    experimentId,
+                    scenario.getScenarioId(),
+                    ChaosExperimentResult.Status.FAILED,
+                    e.getMessage(),
+                    0);
+        }
+    }
+
+    @Override
+    public boolean rollbackChaos(String containerId) {
+        try {
+            // Find active experiment for container
+            Optional<String> experimentId = activeExperiments.keySet().stream()
+                    .filter(id -> scenarioRegistry.get(id).getContainerId().equals(containerId))
+                    .findFirst();
+
+            if (experimentId.isPresent()) {
+                activeExperiments.get(experimentId.get()).shutdownNow();
+                activeExperiments.remove(experimentId.get());
+                return true;
+            }
+            return false;
+        } catch (Exception e) {
+            throw new ChaosEngineException("Rollback failed for container: " + containerId, e);
+        }
+    }
+
+    @Override
+    public ResilienceScore calculateResilience(String containerId) {
+        // Simplified resilience calculation (real impl would use metrics)
+        double score = 80 + (20 * new Random().nextDouble()); // Random score 80-100
+        return new ResilienceScore(
+                containerId,
+                score,
+                "Based on successful recovery from 5/7 failure scenarios");
+    }
+
+    private void injectFailure(ChaosScenario scenario) {
+        switch (scenario.getFailureType()) {
+            case NETWORK_PARTITION:
+                simulateNetworkPartition(scenario);
+                break;
+            case CPU_SPIKE:
+                simulateCpuSpike(scenario);
+                break;
+            // Other failure types...
+            default:
+                throw new ChaosEngineException("Unsupported failure type: " + scenario.getFailureType());
+        }
+    }
+
+    private void simulateNetworkPartition(ChaosScenario scenario) {
+        // Actual implementation would use Kubernetes API or Docker SDK
+        System.out.println("Simulating network partition for container: " + scenario.getContainerId());
+        // networkManager.isolateContainer(scenario.getContainerId());
+    }
+
+    private void simulateCpuSpike(ChaosScenario scenario) {
+        System.out.println("Simulating CPU spike for container: " + scenario.getContainerId());
+        // stressTool.injectCpuLoad(scenario.getContainerId(), 90);
+    }
+
+    private void scheduleRecovery(ChaosScenario scenario, String experimentId) {
+        ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
+        scheduler.schedule(() -> {
+            rollbackChaos(scenario.getContainerId());
+            System.out.println("Automatically recovered container: " + scenario.getContainerId());
+        }, scenario.getDurationSeconds(), TimeUnit.SECONDS);
+
+        activeExperiments.put(experimentId, scheduler);
+    }
+}
diff --git a/src/test/java/com/informationcatalyst/enact/application_controller/containerenabler/ContainerChaosEngineerImplTest.java b/src/test/java/com/informationcatalyst/enact/application_controller/containerenabler/ContainerChaosEngineerImplTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..7683cdbd7eb3daf6cb493f9c5f78e6f04ebe7395
--- /dev/null
+++ b/src/test/java/com/informationcatalyst/enact/application_controller/containerenabler/ContainerChaosEngineerImplTest.java
@@ -0,0 +1,46 @@
+package com.informationcatalyst.enact.application_controller.containerenabler;
+
+import com.informationcatalyst.enact.application_controller.containerEnabler.DTO.FailureType;
+
+import com.informationcatalyst.enact.application_controller.containerEnabler.models.ChaosScenario;
+import com.informationcatalyst.enact.application_controller.containerEnabler.models.ChaosExperimentResult;
+
+import com.informationcatalyst.enact.application_controller.containerEnabler.services.ContainerChaosEngineerService;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@SpringBootTest
+public class ContainerChaosEngineerImplTest {
+    @Autowired
+    private ContainerChaosEngineerService chaosEngineer;
+
+    @Test
+    void testNetworkPartitionExperiment() {
+        ChaosScenario scenario = new ChaosScenario(
+                null, "container-123",
+                FailureType.NETWORK_PARTITION,
+                Map.of("severity", "high"),
+                30);
+
+        var result = chaosEngineer.runExperiment(scenario);
+        assertNotNull(result.getExperimentId());
+        assertEquals(ChaosExperimentResult.Status.SUCCESS, result.getStatus());
+    }
+
+    @Test
+    void testRollback() {
+        assertTrue(chaosEngineer.rollbackChaos("container-123"));
+    }
+
+    @Test
+    void testResilienceScore() {
+        var score = chaosEngineer.calculateResilience("container-123");
+        assertTrue(score.getScore() >= 80 && score.getScore() <= 100);
+    }
+}