diff --git a/bob/devtools/scripts/jobs.py b/bob/devtools/scripts/jobs.py
new file mode 100644
index 0000000000000000000000000000000000000000..4228520cd751e3fe8c3dc07beb4444719f950665
--- /dev/null
+++ b/bob/devtools/scripts/jobs.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+
+import os
+
+import click
+
+from . import bdt
+from ..release import get_gitlab_instance
+
+from ..log import verbosity_option, get_logger, echo_normal
+logger = get_logger(__name__)
+
+
+@click.command(epilog='''
+Examples:
+
+  1. List running jobs on a runner defined by its description (macmini):
+
+     $ bdt gitlab jobs -vv macmini
+
+''')
+@click.argument('name')
+@click.option('-s', '--status', type=click.Choice(['running', 'success',
+  'failed', 'canceled']),
+    default='running', show_default=True,
+    help='The status of jobs we are searching for - one of "running", ' \
+        '"success", "failed" or "canceled"')
+@verbosity_option()
+@bdt.raise_on_error
+def jobs(name, status):
+    """Lists jobs on a given runner
+    """
+
+    gl = get_gitlab_instance()
+    gl.auth()
+    user_id = gl.user.attributes['id']
+
+    # search for the runner to affect
+    the_runner = [k for k in gl.runners.list(all=True) if \
+        k.attributes['description'] == name]
+    if not the_runner:
+      raise RuntimeError('Cannot find runner with description = %s', name)
+    the_runner = the_runner[0]
+    logger.info('Found runner %s (id=%d)',
+        the_runner.attributes['description'], the_runner.attributes['id'])
+
+    jobs = the_runner.jobs.list(all=True, status=status)
+    logger.info('There are %d jobs running on %s', len(jobs), name)
+    for k in jobs:
+      echo_normal('** job %d: %s (%s), since %s, by %s [%s]' % \
+          (k.id, k.attributes['project']['path_with_namespace'],
+        k.attributes['name'], k.attributes['started_at'],
+        k.attributes['user']['username'], k.attributes['web_url']))
diff --git a/bob/devtools/scripts/runners.py b/bob/devtools/scripts/runners.py
index a6af22a81100d641c03aee4ccb3e0ab71ef2ca71..d0a0c4a9676536fd9e7b338aa3439c58b07d597c 100644
--- a/bob/devtools/scripts/runners.py
+++ b/bob/devtools/scripts/runners.py
@@ -5,8 +5,7 @@ import os
 import click
 
 from . import bdt
-from ..release import get_gitlab_instance, update_files_with_mr, \
-    update_files_at_master
+from ..release import get_gitlab_instance
 
 from ..log import verbosity_option, get_logger
 logger = get_logger(__name__)
diff --git a/conda/meta.yaml b/conda/meta.yaml
index 5390d62f43138197391502324bfd3b606275574b..f5fdc7b3731619c9a812b8246d213fedfaa62f76 100644
--- a/conda/meta.yaml
+++ b/conda/meta.yaml
@@ -78,6 +78,7 @@ test:
     - bdt gitlab getpath --help
       #- bdt gitlab getpath -vv bob/bob.devtools .gitignore
     - bdt gitlab runners --help
+    - bdt gitlab jobs --help
     - bdt ci --help
     - bdt ci base-build --help
     - bdt ci build --help
diff --git a/setup.py b/setup.py
index 122f0710d56d6dc5dba06de1e5af0c16ac36bcce..2e852fa1440d33e3c4c3c188c450cb6c018bdb05 100644
--- a/setup.py
+++ b/setup.py
@@ -62,6 +62,7 @@ setup(
           'changelog = bob.devtools.scripts.changelog:changelog',
           'lasttag = bob.devtools.scripts.lasttag:lasttag',
           'runners = bob.devtools.scripts.runners:runners',
+          'jobs = bob.devtools.scripts.jobs:jobs',
           'visibility = bob.devtools.scripts.visibility:visibility',
           'getpath = bob.devtools.scripts.getpath:getpath',
           ],