diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2e010a4..8ea563b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -50,3 +50,6 @@ This version uses the following models:
     inactivity. After 48 hours, we assume the SDK is not interested in the result of a job anymore.
   * start_time, end_time and timestep parameters are now all submitted with a simulator workflow
     job submission.
+* 59: Add hardware limits for workers. by lfse-slafleur in 
+  https://github.com/Project-OMOTES/omotes-system/pull/73
+  * Workers now all have a 4GB memory limit to prevent OOM on the host machine.
diff --git a/docker-compose.yml b/docker-compose.yml
index f391d42..3c32cbd 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -129,6 +129,11 @@ services:
     restart: unless-stopped
     deploy:
       replicas: 2
+      resources:
+        limits:
+          cpus: '4'
+          memory: 4gb
+    memswap_limit: 4gb
     networks:
       - omotes
     environment: &grow_worker_env
@@ -172,6 +177,11 @@ services:
     restart: unless-stopped
     deploy:
       replicas: 2
+      resources:
+        limits:
+          cpus: '4'
+          memory: 4gb
+    memswap_limit: 4gb
     networks:
       - omotes
     environment: