diff --git a/deploy_mock/comms/message.proto b/deploy_mock/comms/message.proto
new file mode 100644
index 0000000000000000000000000000000000000000..1aa65fb3bd560e99a3dc6007754c7d81aa3c66b6
--- /dev/null
+++ b/deploy_mock/comms/message.proto
@@ -0,0 +1,17 @@
+syntax = "proto3";
+
+// The message service definition.
+service BasicMessage {
+  // Client sends a message
+  rpc SendMessage (BasicRequest) returns (BasicReply) {}
+}
+
+// The request (client sends result)
+message BasicRequest {
+  int32 res = 1;
+}
+
+// The response (server confirms it got it)
+message BasicReply {
+  string ok = 1;
+}
\ No newline at end of file
diff --git a/deploy_mock/comms/message_pb2.py b/deploy_mock/comms/message_pb2.py
new file mode 100644
index 0000000000000000000000000000000000000000..d4be39b134a80535b300cd42e5c419a84667e854
--- /dev/null
+++ b/deploy_mock/comms/message_pb2.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: message.proto
+"""Generated protocol buffer code."""
+from google.protobuf.internal import builder as _builder
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import descriptor_pool as _descriptor_pool
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rmessage.proto\"\x1b\n\x0c\x42\x61sicRequest\x12\x0b\n\x03res\x18\x01 \x01(\x05\"\x18\n\nBasicReply\x12\n\n\x02ok\x18\x01 \x01(\t2;\n\x0c\x42\x61sicMessage\x12+\n\x0bSendMessage\x12\r.BasicRequest\x1a\x0b.BasicReply\"\x00\x62\x06proto3')
+
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'message_pb2', globals())
+if _descriptor._USE_C_DESCRIPTORS == False:
+
+  DESCRIPTOR._options = None
+  _BASICREQUEST._serialized_start=17
+  _BASICREQUEST._serialized_end=44
+  _BASICREPLY._serialized_start=46
+  _BASICREPLY._serialized_end=70
+  _BASICMESSAGE._serialized_start=72
+  _BASICMESSAGE._serialized_end=131
+# @@protoc_insertion_point(module_scope)
diff --git a/deploy_mock/comms/message_pb2.pyi b/deploy_mock/comms/message_pb2.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..1546eac524b899e013805585c2c2d4b12d1676ef
--- /dev/null
+++ b/deploy_mock/comms/message_pb2.pyi
@@ -0,0 +1,17 @@
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Optional as _Optional
+
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class BasicReply(_message.Message):
+    __slots__ = ["ok"]
+    OK_FIELD_NUMBER: _ClassVar[int]
+    ok: str
+    def __init__(self, ok: _Optional[str] = ...) -> None: ...
+
+class BasicRequest(_message.Message):
+    __slots__ = ["res"]
+    RES_FIELD_NUMBER: _ClassVar[int]
+    res: int
+    def __init__(self, res: _Optional[int] = ...) -> None: ...
diff --git a/deploy_mock/comms/message_pb2_grpc.py b/deploy_mock/comms/message_pb2_grpc.py
new file mode 100644
index 0000000000000000000000000000000000000000..54e01a91943492327e469ce442c641fc9e92f2f7
--- /dev/null
+++ b/deploy_mock/comms/message_pb2_grpc.py
@@ -0,0 +1,70 @@
+# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
+"""Client and server classes corresponding to protobuf-defined services."""
+import grpc
+
+import message_pb2 as message__pb2
+
+
+class BasicMessageStub(object):
+    """The message service definition.
+    """
+
+    def __init__(self, channel):
+        """Constructor.
+
+        Args:
+            channel: A grpc.Channel.
+        """
+        self.SendMessage = channel.unary_unary(
+                '/BasicMessage/SendMessage',
+                request_serializer=message__pb2.BasicRequest.SerializeToString,
+                response_deserializer=message__pb2.BasicReply.FromString,
+                )
+
+
+class BasicMessageServicer(object):
+    """The message service definition.
+    """
+
+    def SendMessage(self, request, context):
+        """Client sends a message
+        """
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+
+def add_BasicMessageServicer_to_server(servicer, server):
+    rpc_method_handlers = {
+            'SendMessage': grpc.unary_unary_rpc_method_handler(
+                    servicer.SendMessage,
+                    request_deserializer=message__pb2.BasicRequest.FromString,
+                    response_serializer=message__pb2.BasicReply.SerializeToString,
+            ),
+    }
+    generic_handler = grpc.method_handlers_generic_handler(
+            'BasicMessage', rpc_method_handlers)
+    server.add_generic_rpc_handlers((generic_handler,))
+
+
+ # This class is part of an EXPERIMENTAL API.
+class BasicMessage(object):
+    """The message service definition.
+    """
+
+    @staticmethod
+    def SendMessage(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/BasicMessage/SendMessage',
+            message__pb2.BasicRequest.SerializeToString,
+            message__pb2.BasicReply.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)