diff --git a/tools/patman/cser_helper.py b/tools/patman/cser_helper.py
index 0ce59e8ecc0..0274e28f42b 100644
--- a/tools/patman/cser_helper.py
+++ b/tools/patman/cser_helper.py
@@ -106,7 +106,14 @@ class CseriesHelper:
             if not self.topdir:
                 raise ValueError('No git repo detected in current directory')
         self.gitdir = os.path.join(self.topdir, '.git')
-        fname = f'{self.topdir}/.patman.db'
+
+        # PATMAN_DB_DIR lets the user keep a single 'main' database while
+        # running patman in other repos. Only the DB path is overridden;
+        # git operations still run against the current repo. Use 'or' (not
+        # os.environ.get(key, default)) so an empty PATMAN_DB_DIR='' falls
+        # back to topdir rather than producing '/.patman.db'
+        db_dir = os.environ.get('PATMAN_DB_DIR') or self.topdir
+        fname = os.path.join(os.path.expanduser(db_dir), '.patman.db')
 
         # For the first instance, start it up with the expected schema
         self.db, is_new = Database.get_instance(fname)
diff --git a/tools/patman/patman.rst b/tools/patman/patman.rst
index ef8e2e2025c..98a51bcfc6f 100644
--- a/tools/patman/patman.rst
+++ b/tools/patman/patman.rst
@@ -1465,6 +1465,17 @@ Patman stores series tracking, review and workflow state in a SQLite
 database (``.patman.db``) in the top-level git directory. The schema is
 versioned and auto-migrated on startup (currently at v10).
 
+Set the ``PATMAN_DB_DIR`` environment variable to use a database elsewhere
+(``~`` is expanded). The variable names a *directory* in which patman looks
+for ``.patman.db``, mirroring the default layout. This is useful if you keep
+a single 'main' patman database in one repo but want to run, for example,
+``patman review`` in another worktree or repo: the DB path is overridden but
+git operations still run against the current repo. For instance::
+
+    export PATMAN_DB_DIR=~/u-boot
+    cd ~/some-other-tree
+    patman review -s my-series
+
 The connection is opened in WAL mode (``journal_mode=WAL``,
 ``synchronous=NORMAL``) with a 30-second busy timeout, which lets multiple
 patman invocations share the database safely: concurrent readers do not block
