diff --git a/bob/bio/base/script/bio.py b/bob/bio/base/script/bio.py
new file mode 100644
index 0000000000000000000000000000000000000000..34022948039bb7e6f2aeab072899231c1885a6df
--- /dev/null
+++ b/bob/bio/base/script/bio.py
@@ -0,0 +1,12 @@
+"""The main entry for bob.bio (click-based) scripts.
+"""
+import click
+import pkg_resources
+from click_plugins import with_plugins
+
+
+@with_plugins(pkg_resources.iter_entry_points('bob.bio.cli'))
+@click.group()
+def bio():
+    """Entry for bob.bio commands."""
+    pass
diff --git a/setup.py b/setup.py
index 5b500cbd01d0d2edd86879c1c8633bb6418149ad..95a397db0aece239b1980b1930d94ba41a7cee57 100644
--- a/setup.py
+++ b/setup.py
@@ -127,6 +127,10 @@ setup(
       'bob.db': [
         'bio_filelist      = bob.bio.base.database.filelist.driver:Interface',
       ],
+      # main entry for bob cli
+      'bob.cli': [
+        'bio               = bob.bio.base.script.bio:bio',
+      ],
    },
 
     # Classifiers are important if you plan to distribute this package through