diff --git a/host_epoch.hpp b/host_epoch.hpp
new file mode 100644
index 0000000..1252ff9
--- /dev/null
+++ b/host_epoch.hpp
@@ -0,0 +1,69 @@
+#pragma once
+
+#include "config.h"
+#include "epoch_base.hpp"
+
+#include <chrono>
+
+namespace phosphor
+{
+namespace time
+{
+
+/** @class HostEpoch
+ *  @brief OpenBMC HOST EpochTime implementation.
+ *  @details A concrete implementation for xyz.openbmc_project.Time.EpochTime
+ *  DBus API for HOST's epoch time.
+ */
+class HostEpoch : public EpochBase
+{
+    public:
+        friend class TestHostEpoch;
+        HostEpoch(sdbusplus::bus::bus& bus,
+                  const char* objPath);
+
+        /**
+         * @brief Get value of Elapsed property
+         *
+         * @return The elapsed microseconds since UTC
+         **/
+        uint64_t elapsed() const override;
+
+        /**
+         * @brief Set value of Elapsed property
+         *
+         * @param[in] value - The microseconds since UTC to set
+         *
+         * @return The updated elapsed microseconds since UTC
+         **/
+        uint64_t elapsed(uint64_t value) override;
+
+    private:
+        /** @brief The diff between BMC and Host time */
+        std::chrono::microseconds offset;
+
+        /** @brief The file to store the offset in File System.
+         *  Read back when starts
+         **/
+        static constexpr auto offsetFile = HOST_OFFSET_FILE;
+
+        /** @brief Read data with type T from file
+         *
+         * @param[in] fileName - The name of file to read from
+         *
+         * @return The data with type T
+         */
+        template <typename T>
+        static T readData(const char* fileName);
+
+        /** @brief Write data with type T to file
+         *
+         * @param[in] fileName - The name of file to write to
+         * @param[in] data - The data with type T to write to file
+         */
+        template <typename T>
+        static void writeData(const char* fileName, T&& data);
+};
+
+} // namespace time
+} // namespace phosphor
