diff --git a/health_monitor.hpp b/health_monitor.hpp
new file mode 100644
index 0000000..31d16ba
--- /dev/null
+++ b/health_monitor.hpp
@@ -0,0 +1,39 @@
+#pragma once
+
+#include "health_metric_collection.hpp"
+
+#include <unordered_map>
+
+namespace phosphor::health::monitor
+{
+namespace ConfigIntf = phosphor::health::metric::config;
+namespace MetricIntf = phosphor::health::metric;
+namespace CollectionIntf = phosphor::health::metric::collection;
+class HealthMonitor
+{
+  public:
+    HealthMonitor() = delete;
+
+    HealthMonitor(sdbusplus::bus_t& bus) :
+        bus(bus), configs(ConfigIntf::getHealthMetricConfigs())
+    {
+        create();
+    }
+
+    /** @brief Run the health monitor */
+    void run();
+
+  private:
+    using map_t = std::unordered_map<
+        MetricIntf::Type,
+        std::unique_ptr<CollectionIntf::HealthMetricCollection>>;
+    /** @brief Create a new health monitor object */
+    void create();
+    /** @brief D-Bus bus connection */
+    sdbusplus::bus_t& bus;
+    /** @brief Health metric configs */
+    ConfigIntf::HealthMetric::map_t configs;
+    map_t collections;
+};
+
+} // namespace phosphor::health::monitor
