diff --git a/sync_watch.hpp b/sync_watch.hpp
new file mode 100644
index 0000000..a7f8557
--- /dev/null
+++ b/sync_watch.hpp
@@ -0,0 +1,66 @@
+#pragma once
+
+#include <experimental/filesystem>
+#include <functional>
+#include <systemd/sd-event.h>
+
+namespace phosphor
+{
+namespace software
+{
+namespace manager
+{
+
+namespace fs = std::experimental::filesystem;
+
+/** @class SyncWatch
+ *
+ *  @brief Adds inotify watch on persistent files to be synced
+ *
+ *  The inotify watch is hooked up with sd-event, so that on call back,
+ *  appropriate actions related to syncing files can be taken.
+ */
+class SyncWatch
+{
+  public:
+    /** @brief ctor - hook inotify watch with sd-event
+     *
+     *  @param[in] loop - sd-event object
+     *  @param[in] syncCallback - The callback function for processing
+     *                            files
+     */
+    SyncWatch(sd_event& loop, std::function<int(fs::path&)> syncCallback);
+
+    SyncWatch(const SyncWatch&) = delete;
+    SyncWatch& operator=(const SyncWatch&) = delete;
+    SyncWatch(SyncWatch&&) = default;
+    SyncWatch& operator=(SyncWatch&&) = default;
+
+    /** @brief dtor - remove inotify watch and close fd's
+     */
+    ~SyncWatch();
+
+  private:
+    /** @brief sd-event callback
+     *
+     *  @param[in] s - event source, floating (unused) in our case
+     *  @param[in] fd - inotify fd
+     *  @param[in] revents - events that matched for fd
+     *  @param[in] userdata - pointer to SyncWatch object
+     *  @returns 0 on success, -1 on fail
+     */
+    static int callback(sd_event_source* s, int fd, uint32_t revents,
+                        void* userdata);
+
+    /** @brief Map of file descriptors, watch descriptors, and file paths */
+    using fd = int;
+    using wd = int;
+    std::map<fd, std::map<wd, fs::path>> fileMap;
+
+    /** @brief The callback function for processing the inotify event */
+    std::function<int(fs::path&)> syncCallback;
+};
+
+} // namespace manager
+} // namespace software
+} // namespace phosphor
