diff --git a/sol/sol_manager.hpp b/sol/sol_manager.hpp
index 4e797d4..b266519 100644
--- a/sol/sol_manager.hpp
+++ b/sol/sol_manager.hpp
@@ -1,6 +1,7 @@
 #pragma once
 
 #include "console_buffer.hpp"
+#include "main.hpp"
 #include "session.hpp"
 #include "sol_context.hpp"
 
@@ -36,6 +37,11 @@
  */
 class Manager
 {
+  private:
+    struct Private
+    {
+    };
+
   public:
     /** @brief SOL Payload Instance is the key for the map, the value is the
      *         SOL context.
@@ -49,10 +55,27 @@
     Manager(Manager&&) = default;
     Manager& operator=(Manager&&) = default;
 
-    Manager(std::shared_ptr<boost::asio::io_context> io) : io(io)
+    Manager(std::shared_ptr<boost::asio::io_context>& io, const Private&) :
+        io(io)
     {
     }
 
+    /**
+     * @brief Get a reference to the singleton Manager
+     *
+     * @return Manager reference
+     */
+    static Manager& get()
+    {
+        static std::shared_ptr<Manager> ptr = nullptr;
+        if (!ptr)
+        {
+            std::shared_ptr<boost::asio::io_context> io = getIo();
+            ptr = std::make_shared<Manager>(io, Private());
+        }
+        return *ptr;
+    }
+
     /** @brief io context to add events to */
     std::shared_ptr<boost::asio::io_context> io;
 
