diff --git a/pmb/commands/__init__.py b/pmb/commands/__init__.py
index a8ea02fe0465c04722e898eb3d689febaa9b4aca..a66b260ec9acd946b8f4985fae495e12b448e59c 100644
--- a/pmb/commands/__init__.py
+++ b/pmb/commands/__init__.py
@@ -15,6 +15,7 @@ from .index import Index
 from .repo_bootstrap import RepoBootstrap
 from .shutdown import Shutdown
 from .test import Test
+from .pkgrel_bump import PkgrelBump
 from .pull import Pull
 from .kconfig_check import KConfigCheck
 from .kconfig_edit import KConfigEdit
@@ -32,7 +33,6 @@ unmigrated_commands = [
     "flasher",
     "initfs",
     "qemu",
-    "pkgrel_bump",
     "aportupgrade",
     "newapkbuild",
     "lint",
@@ -74,6 +74,8 @@ def run_command(args: PmbArgs):
         command = Shutdown()
     elif args.action == "test":
         command = Test(args.action_test)
+    elif args.action == "pkgrel_bump":
+        command = PkgrelBump(args.packages, args.dry, args.auto)
     elif args.action == "pull":
         command = Pull()
     elif args.action == "kconfig" and args.action_kconfig == "check":
diff --git a/pmb/commands/pkgrel_bump.py b/pmb/commands/pkgrel_bump.py
new file mode 100644
index 0000000000000000000000000000000000000000..2d413c5ce5ea72fdd419f9428d5f97c5a696a375
--- /dev/null
+++ b/pmb/commands/pkgrel_bump.py
@@ -0,0 +1,33 @@
+# Copyright 2024 Stefan Hansson
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+import sys
+
+from pmb import commands
+from pmb.helpers import logging
+import pmb.helpers.pkgrel_bump
+
+
+class PkgrelBump(commands.Command):
+    def __init__(self, packages: list[str], dry_run: bool, auto: bool) -> None:
+        self.packages = packages
+        self.dry_run = dry_run
+        self.auto = auto
+
+    def run(self) -> None:
+        would_bump = True
+
+        if self.auto:
+            would_bump = bool(pmb.helpers.pkgrel_bump.auto(self.dry_run))
+        else:
+            # Each package must exist
+            for package in self.packages:
+                pmb.helpers.pmaports.find(package)
+
+            # Increase pkgrel
+            for package in self.packages:
+                pmb.helpers.pkgrel_bump.package(package, dry=self.dry_run)
+
+        if self.dry_run and would_bump:
+            logging.info("Pkgrels of package(s) would have been bumped!")
+            sys.exit(1)
diff --git a/pmb/helpers/frontend.py b/pmb/helpers/frontend.py
index f51b938668c53f7d83dba060eb3836f6d2093419..5ea1201d53c3e797e4e936d4fbb0f638d01a8d9d 100644
--- a/pmb/helpers/frontend.py
+++ b/pmb/helpers/frontend.py
@@ -27,7 +27,6 @@ import pmb.helpers.devices
 import pmb.helpers.git
 import pmb.helpers.lint
 import pmb.helpers.logging
-import pmb.helpers.pkgrel_bump
 import pmb.helpers.pmaports
 import pmb.helpers.repo
 import pmb.helpers.repo_missing
@@ -501,24 +500,6 @@ def apkindex_parse(args: PmbArgs) -> None:
     print(json.dumps(result, indent=4))
 
 
-def pkgrel_bump(args: PmbArgs) -> None:
-    would_bump = True
-    if args.auto:
-        would_bump = bool(pmb.helpers.pkgrel_bump.auto(args, args.dry))
-    else:
-        # Each package must exist
-        for package in args.packages:
-            pmb.helpers.pmaports.find(package)
-
-        # Increase pkgrel
-        for package in args.packages:
-            pmb.helpers.pkgrel_bump.package(args, package, dry=args.dry)
-
-    if args.dry and would_bump:
-        logging.info("Pkgrels of package(s) would have been bumped!")
-        sys.exit(1)
-
-
 def aportupgrade(args: PmbArgs) -> None:
     if args.all or args.all_stable or args.all_git:
         pmb.helpers.aportupgrade.upgrade_all(args)
diff --git a/pmb/helpers/pkgrel_bump.py b/pmb/helpers/pkgrel_bump.py
index c1500c4f6ae226c8ae0133e44d7c21e93ac3fa73..58fe74007f2ea57b8e6fedca33eb603326f92491 100644
--- a/pmb/helpers/pkgrel_bump.py
+++ b/pmb/helpers/pkgrel_bump.py
@@ -3,7 +3,6 @@
 from pmb.core.arch import Arch
 from pmb.helpers import logging
 
-from pmb.types import PmbArgs
 import pmb.helpers.file
 import pmb.helpers.pmaports
 import pmb.helpers.repo
@@ -11,7 +10,7 @@ import pmb.parse
 import pmb.parse.apkindex
 
 
-def package(args: PmbArgs, pkgname: str, reason="", dry: bool = False) -> None:
+def package(pkgname: str, reason="", dry: bool = False) -> None:
     """Increase the pkgrel in the APKBUILD of a specific package.
 
     :param pkgname: name of the package
@@ -54,7 +53,7 @@ def package(args: PmbArgs, pkgname: str, reason="", dry: bool = False) -> None:
         )
 
 
-def auto_apkindex_package(args: PmbArgs, arch, aport, apk, dry: bool = False) -> bool:
+def auto_apkindex_package(arch, aport, apk, dry: bool = False) -> bool:
     """Bump the pkgrel of a specific package if it is outdated in the given APKINDEX.
 
     :param arch: the architecture, e.g. "armhf"
@@ -103,13 +102,13 @@ def auto_apkindex_package(args: PmbArgs, arch, aport, apk, dry: bool = False) ->
 
     # Increase pkgrel
     if len(missing):
-        package(args, pkgname, reason=", missing depend(s): " + ", ".join(missing), dry=dry)
+        package(pkgname, reason=", missing depend(s): " + ", ".join(missing), dry=dry)
         return True
 
     return False
 
 
-def auto(args: PmbArgs, dry=False) -> list[str]:
+def auto(dry=False) -> list[str]:
     """:returns: list of aport names, where the pkgrel needed to be changed"""
     ret = []
     for arch in Arch.supported():
@@ -128,6 +127,6 @@ def auto(args: PmbArgs, dry=False) -> list[str]:
                     logging.warning(f"{pkgname}: origin '{origin}' aport not found")
                     continue
                 aport = pmb.parse.apkbuild(aport_path)
-                if auto_apkindex_package(args, arch, aport, apk, dry):
+                if auto_apkindex_package(arch, aport, apk, dry):
                     ret.append(pkgname)
     return ret