diff --git a/sd_event_loop.cpp b/sd_event_loop.cpp
index a99cf56..2fc8551 100644
--- a/sd_event_loop.cpp
+++ b/sd_event_loop.cpp
@@ -53,6 +53,50 @@
     return 0;
 }
 
+static int consoleInputHandler(sd_event_source* es, int fd, uint32_t revents,
+                               void* userdata)
+{
+    try
+    {
+        int readSize = 0;
+
+        if (ioctl(fd, FIONREAD, &readSize) < 0)
+        {
+            log<level::ERR>("ioctl failed for FIONREAD:",
+                    entry("errno = %d", errno));
+            return 0;
+        }
+
+        std::vector<uint8_t> buffer(readSize);
+        auto bufferSize = buffer.size();
+        ssize_t readDataLen = 0;
+
+        readDataLen = read(fd, buffer.data(), bufferSize);
+
+        // Update the Console buffer with data read from the socket
+        if (readDataLen > 0)
+        {
+            buffer.resize(readDataLen);
+            std::get<sol::Manager&>(singletonPool).dataBuffer.write(buffer);
+        }
+        else if (readDataLen == 0)
+        {
+            log<level::ERR>("Connection Closed for host console socket");
+        }
+        else if (readDataLen < 0) // Error
+        {
+            log<level::ERR>("Reading from host console socket failed:",
+                    entry("ERRNO=%d", errno));
+        }
+    }
+    catch (std::exception& e)
+    {
+        log<level::ERR>(e.what());
+    }
+
+    return 0;
+}
+
 int EventLoop::startEventLoop()
 {
     int fd = -1;
@@ -130,4 +174,27 @@
     return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
 }
 
+void EventLoop::startHostConsole(const sol::CustomFD& fd)
+{
+    int rc = 0;
+
+    if((fd() == -1) || hostConsole.get())
+    {
+        throw std::runtime_error("Console descriptor already added");
+    }
+
+    sd_event_source* source = nullptr;
+
+    // Add the fd to the event loop for EPOLLIN
+    rc = sd_event_add_io(
+            event, &source, fd(), EPOLLIN, consoleInputHandler, nullptr);
+    if (rc < 0)
+    {
+        throw std::runtime_error("Failed to add socket descriptor");
+    }
+
+    hostConsole.reset(source);
+    source=nullptr;
+}
+
 } // namespace eventloop
