diff --git a/services/backup/blob_client/src/put_client.rs b/services/backup/blob_client/src/put_client.rs
--- a/services/backup/blob_client/src/put_client.rs
+++ b/services/backup/blob_client/src/put_client.rs
@@ -1,4 +1,36 @@
+mod proto {
+  tonic::include_proto!("blob");
+}
+
+use lazy_static::lazy_static;
+use libc;
 use libc::c_char;
+use std::sync::{Arc, Mutex};
+use tokio::runtime::Runtime;
+use tokio::sync::mpsc;
+use tokio::task::JoinHandle;
+use tracing::error;
+
+#[derive(Debug)]
+struct PutRequestData {
+  field_index: usize,
+  data: Vec<u8>,
+}
+
+struct BidiClient {
+  tx: mpsc::Sender<PutRequestData>,
+
+  rx: mpsc::Receiver<String>,
+  rx_handle: JoinHandle<()>,
+}
+
+lazy_static! {
+  static ref CLIENT: Arc<Mutex<Option<BidiClient>>> =
+    Arc::new(Mutex::new(None));
+  static ref RUNTIME: Runtime = Runtime::new().unwrap();
+  static ref ERROR_MESSAGES: Arc<Mutex<Vec<String>>> =
+    Arc::new(Mutex::new(Vec::new()));
+}
 
 pub fn put_client_initialize_cxx() -> Result<(), String> {
   unimplemented!();