diff --git a/subprojects/bare-metal-host-monitor/host-gpio-monitor.service.in b/subprojects/bare-metal-host-monitor/host-gpio-monitor@.service.in
similarity index 60%
rename from subprojects/bare-metal-host-monitor/host-gpio-monitor.service.in
rename to subprojects/bare-metal-host-monitor/host-gpio-monitor@.service.in
index a0bee9e..7afcd97 100644
--- a/subprojects/bare-metal-host-monitor/host-gpio-monitor.service.in
+++ b/subprojects/bare-metal-host-monitor/host-gpio-monitor@.service.in
@@ -1,11 +1,11 @@
 [Unit]
-Description=gBMC bare-metal GPIO  monitoring
+Description=gBMC bare-metal GPIO  monitoring for host %i
 ConditionPathExists=/var/google/config-package/enable-bm.flag
 After=phosphor-ipmi-host.service
 
 [Service]
 Restart=always
-ExecStart=@@BIN@ host_gpio_monitor
+ExecStart=@@BIN@ host_gpio_monitor --host_label %i
 
 [Install]
 WantedBy=multi-user.target
diff --git a/subprojects/bare-metal-host-monitor/host_gpio_monitor.cpp b/subprojects/bare-metal-host-monitor/host_gpio_monitor.cpp
index 0c9f697..5deea2a 100644
--- a/subprojects/bare-metal-host-monitor/host_gpio_monitor.cpp
+++ b/subprojects/bare-metal-host-monitor/host_gpio_monitor.cpp
@@ -1,4 +1,7 @@
 
+#include "absl/flags/flag.h"
+#include "absl/flags/parse.h"
+
 #include <boost/asio/io_context.hpp>
 #include <boost/asio/steady_timer.hpp>
 #include <phosphor-logging/lg2.hpp>
@@ -7,8 +10,13 @@
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/bus/match.hpp>
 
+#include <format>
+
+ABSL_FLAG(std::string, host_label, "0",
+          "Label for the host in question. Usually this is an integer.");
+
 const constexpr char* OperatingSystemService =
-    "xyz.openbmc_project.State.OperatingSystem";
+    "xyz.openbmc_project.State.OperatingSystem{}";
 const constexpr char* OperatingSystemPath = "/xyz/openbmc_project/state/os";
 const constexpr char* OperatingSystemStatusInterface =
     "xyz.openbmc_project.State.OperatingSystem.Status";
@@ -17,29 +25,34 @@
     "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Standby";
 const constexpr char* OperatingSystemStateInactive =
     "xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Inactive";
-const constexpr char* BareMetalActiveTarget = "gbmc-bare-metal-active.target";
+const constexpr char* BareMetalActiveTargetTemplate =
+    "gbmc-bare-metal-active@{}.target";
 
 const constexpr char* SystemdService = "org.freedesktop.systemd1";
 const constexpr char* SystemdManagerObject = "/org/freedesktop/systemd1";
 const constexpr char* SystemdManagerInterface =
     "org.freedesktop.systemd1.Manager";
 
-void setUnitStatus(sdbusplus::asio::connection& bus, bool status)
+void setUnitStatus(sdbusplus::asio::connection& bus, bool status,
+                   const std::string& host_instance)
 {
     auto method = bus.new_method_call(SystemdService, SystemdManagerObject,
                                       SystemdManagerInterface,
                                       status ? "StartUnit" : "StopUnit");
-    method.append(BareMetalActiveTarget, "replace");
+    method.append(std::format(BareMetalActiveTargetTemplate, host_instance),
+                  "replace");
 
     bus.call(method);
 }
 
 void checkPostComplete(sdbusplus::asio::connection& bus,
-                       const std::string& state, bool action)
+                       const std::string& state, bool action,
+                       const std::string& host_instance)
 {
     sdbusplus::asio::getProperty<std::string>(
-        bus, OperatingSystemService, OperatingSystemPath,
-        OperatingSystemStatusInterface, OperatingSystemStateProperty,
+        bus, std::format(OperatingSystemService, host_instance),
+        OperatingSystemPath, OperatingSystemStatusInterface,
+        OperatingSystemStateProperty,
         [&, state, action](const boost::system::error_code& ec,
                            const std::string& postCompleteState) {
             if (ec)
@@ -58,25 +71,30 @@
              */
             if (postCompleteState == state)
             {
-                setUnitStatus(bus, action);
+                setUnitStatus(bus, action, host_instance);
             }
         });
 }
 
 /* This only gets called once on startup. */
-void checkPostCompleteStartup(sdbusplus::asio::connection& bus)
+void checkPostCompleteStartup(sdbusplus::asio::connection& bus,
+                              const std::string& host_instance)
 {
-    checkPostComplete(bus, OperatingSystemStateStandby, true);
+    checkPostComplete(bus, OperatingSystemStateStandby, true, host_instance);
 }
 
 /* Gets called when a GPIO state change is detected. */
-void checkPostCompleteEvent(sdbusplus::asio::connection& bus)
+void checkPostCompleteEvent(sdbusplus::asio::connection& bus,
+                            const std::string& host_instance)
 {
-    checkPostComplete(bus, OperatingSystemStateInactive, false);
+    checkPostComplete(bus, OperatingSystemStateInactive, false, host_instance);
 }
 
-int main()
+int main(int argc, char** argv)
 {
+    absl::ParseCommandLine(argc, argv);
+    std::string host_label = absl::GetFlag(FLAGS_host_label);
+
     try
     {
         /* Setup connection to dbus. */
@@ -84,7 +102,7 @@
         auto conn = sdbusplus::asio::connection(io);
 
         /* check IPMI status at startup */
-        checkPostCompleteStartup(conn);
+        checkPostCompleteStartup(conn, host_label);
         /*
          * Set up an event handler to process Post Complete GPIO state changes.
          */
@@ -128,7 +146,7 @@
                          * Stop the bare metal active target if the post
                          * complete got deasserted.
                          */
-                        checkPostCompleteEvent(conn);
+                        checkPostCompleteEvent(conn, host_label);
                     });
             });
 
diff --git a/subprojects/bare-metal-host-monitor/meson.build b/subprojects/bare-metal-host-monitor/meson.build
index dfed5eb..d2b07e0 100644
--- a/subprojects/bare-metal-host-monitor/meson.build
+++ b/subprojects/bare-metal-host-monitor/meson.build
@@ -10,6 +10,16 @@
   ],
 )
 
+absls = [
+  'flags',
+  'flags_internal',
+  'flags_parse',
+]
+libabsl_deps = []
+foreach absl : absls
+  libabsl_deps += dependency('absl_' + absl)
+endforeach
+
 executable(
   'host_gpio_monitor',
   'host_gpio_monitor.cpp',
@@ -18,6 +28,7 @@
   [
     dependency('stdplus'),
     dependency('phosphor-logging'),
+    libabsl_deps,
   ],
   install: true,
   install_dir: get_option('libexecdir'),
@@ -30,7 +41,7 @@
 
 configure_file(
   configuration: {'BIN': libexecdir / 'host_gpio_monitor'},
-  input: 'host-gpio-monitor.service.in',
-  output: 'host-gpio-monitor.service',
+  input: 'host-gpio-monitor@.service.in',
+  output: 'host-gpio-monitor@.service',
   install_mode: 'rw-r--r--',
   install_dir: systemunitdir)
