diff --git a/dstat_interface/core/daemon.py b/dstat_interface/core/daemon.py
index 4558466d02cc155a9232262d063ddef5a98019e2..368ddc135f6922ff4603a2100c2842f478d47267 100644
--- a/dstat_interface/core/daemon.py
+++ b/dstat_interface/core/daemon.py
@@ -131,10 +131,19 @@ class DStatDaemon(object):
         return {'status': 'done'}
 
     async def run(self):
+        received_commands = set()
         while True:
             command: str
             payload: dict
-            command, payload = pickle.loads(await self.socket_ctrl.arecv())
+            received = pickle.loads(await self.socket_ctrl.arecv())
+            if len(received) == 3:
+                exp_uuid, command, payload = received
+                if exp_uuid in received_commands:  # Ignore previously handled commands
+                    continue
+                logger.info('Got Experiment %s', exp_uuid)
+                received_commands.add(exp_uuid)
+            else:
+                command, payload = received
             await self.socket_ctrl.asend(pickle.dumps(await (self.command_map[command](payload))))
 
     def close(self):