diff --git a/scripts/gen_pimrules.py b/scripts/gen_pimrules.py
deleted file mode 100755
index 7099b46..0000000
--- a/scripts/gen_pimrules.py
+++ /dev/null
@@ -1,193 +0,0 @@
-#!/usr/bin/env python3
-
-"""Generate PIM rules for ipmi-fru-parser.
-"""
-
-import argparse
-import os
-
-import yaml
-from mako.template import Template
-
-tmpl = """
-description: >
-    PIM rules for ipmi-fru-parser inventory objects.
-events:
-
-    - name: Host off at startup
-      description: >
-          Mark ipmi-fru-parser inventory items as cached when
-          the host is off at startup.
-      type: startup
-      actions:
-          - name: setProperty
-            interface: ${cacheable_iface}
-            property: ${cacheable_property}
-            paths:
-%for i in cacheable:
-                - ${i}
-%endfor
-            value:
-              type: ${cacheable_type}
-              value: ${cacheable_cached}
-
-    - name: Host off event
-      description: >
-          Mark ipmi-fru-parser inventory items as cached when
-          the host goes away.
-      type: match
-      signatures:
-          - type: signal
-            interface: org.freedesktop.DBus.Properties
-            path: ${off_path}
-            member: PropertiesChanged
-      filters:
-          - name: propertyChangedTo
-            interface: ${off_iface}
-            property: ${off_property}
-            value:
-              value: ${off_value}
-              type: ${off_type}
-      actions:
-          - name: setProperty
-            interface: ${cacheable_iface}
-            property: ${cacheable_property}
-            paths:
-%for i in cacheable:
-                - ${i}
-%endfor
-            value:
-              type: ${cacheable_type}
-              value: ${cacheable_cached}
-
-    - name: Host on at startup
-      description: >
-          Remove ipmi-fru-parser inventory items when the host is finished
-          sending inventory items and the item is still marked as cached.
-      type: startup
-      filters:
-          - name: propertyIs
-            path: ${on_path}
-            interface: ${on_iface}
-            property: ${on_property}
-            value:
-              value: ${on_value}
-              type: ${on_type}
-      actions:
-          - name: destroyObjects
-            paths:
-%for i in cacheable:
-                - ${i}
-%endfor
-            conditions:
-              - name: propertyIs
-                interface: ${cacheable_iface}
-                property: ${cacheable_property}
-                value:
-                  type: ${cacheable_type}
-                  value: ${cacheable_cached}
-
-    - name: Host on event
-      description: >
-          Remove ipmi-fru-parser inventory items when the host is finished
-          sending inventory items and the item is still marked as cached.
-      type: match
-      signatures:
-          - type: signal
-            interface: org.freedesktop.DBus.Properties
-            path: ${on_path}
-            member: PropertiesChanged
-      filters:
-          - name: propertyChangedTo
-            interface: ${on_iface}
-            property: ${on_property}
-            value:
-              value: ${on_value}
-              type: ${on_type}
-      actions:
-          - name: destroyObjects
-            paths:
-%for i in cacheable:
-                - ${i}
-%endfor
-            conditions:
-              - name: propertyIs
-                interface: ${cacheable_iface}
-                property: ${cacheable_property}
-                value:
-                  type: ${cacheable_type}
-                  value: ${cacheable_cached}
-"""
-
-
-def get_cacheable_objs(yaml):
-    cacheable = []
-
-    for objdata in data.values():
-        if not isinstance(objdata, dict):
-            continue
-        for path, ifaces in objdata.items():
-            if not isinstance(ifaces, dict):
-                continue
-
-            if cacheable_iface_name in ifaces.keys():
-                cacheable.append(path)
-
-    return cacheable
-
-
-if __name__ == "__main__":
-    script_dir = os.path.dirname(os.path.realpath(__file__))
-
-    parser = argparse.ArgumentParser(
-        description="ipmi-fru-parser PIM rule generator."
-    )
-    parser.add_argument(
-        "-o",
-        "--output-dir",
-        dest="outputdir",
-        default=".",
-        help="Output directory.",
-    )
-    parser.add_argument(
-        "inventory",
-        metavar="INVENTORY",
-        type=str,
-        help="Path to inventory YAML.",
-    )
-
-    args = parser.parse_args()
-
-    with open(args.inventory, "r") as fd:
-        data = yaml.safe_load(fd.read())
-
-    cacheable_iface_name = "xyz.openbmc_project.Inventory.Decorator.Cacheable"
-    target_file = os.path.join(args.outputdir, "ipmi-fru-rules.yaml")
-    cacheable = []
-
-    if isinstance(data, dict):
-        cacheable = get_cacheable_objs(data)
-    if cacheable:
-        with open(target_file, "w") as out:
-            out.write(
-                Template(tmpl).render(
-                    cacheable_iface=cacheable_iface_name,
-                    cacheable_property="Cached",
-                    cacheable_cached="true",
-                    cacheable_type="boolean",
-                    on_path="/xyz/openbmc_project/state/host0",
-                    on_iface="xyz.openbmc_project.State.Boot.Progress",
-                    on_property="BootProgress",
-                    on_value="xyz.openbmc_project.State.Boot.Progress.ProgressStages.OSStart",
-                    on_type="string",
-                    off_path="/xyz/openbmc_project/state/host0",
-                    off_iface="xyz.openbmc_project.State.Host",
-                    off_property="CurrentHostState",
-                    off_value="xyz.openbmc_project.State.Host.Off",
-                    off_type="string",
-                    cacheable=cacheable,
-                )
-            )
-
-
-# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
