diff --git a/conda/meta.yaml b/conda/meta.yaml
index 8aa4e51dc4e2d60b3a4013b0d6eaf2a452210ea5..fa3d7c51fb3b1a66783177b15052af2c140ae09a 100644
--- a/conda/meta.yaml
+++ b/conda/meta.yaml
@@ -37,7 +37,7 @@ requirements:
     - tqdm {{ tqdm }}
     - tensorboard {{ tensorboard }}
     - pytorch-lightning {{ pytorch_lightning }}
-    - exposed
+    - clapp
   run:
     - python >=3.9
     - {{ pin_compatible('click') }}
@@ -54,7 +54,7 @@ requirements:
     - {{ pin_compatible('tqdm') }}
     - {{ pin_compatible('tensorboard') }}
     - {{ pin_compatible('pytorch-lightning') }}
-    - exposed
+    - clapp
 
 test:
   source_files:
diff --git a/doc/catalog.json b/doc/catalog.json
index 9772bef3200be2108cfdf3e373019addf697c3db..4aa2565c1e8c05800cd170870fee2e0432def31c 100644
--- a/doc/catalog.json
+++ b/doc/catalog.json
@@ -1,8 +1,8 @@
 {
-  "exposed": {
+  "clapp": {
     "versions": {
-      "stable": "https://www.idiap.ch/software/biosignal/docs/bob/exposed/stable/sphinx/",
-      "latest": "https://www.idiap.ch/software/biosignal/docs/bob/exposed/main/sphinx/"
+      "stable": "https://www.idiap.ch/software/biosignal/docs/bob/clapp/stable/sphinx/",
+      "latest": "https://www.idiap.ch/software/biosignal/docs/bob/clapp/main/sphinx/"
     },
     "sources": {}
   }
diff --git a/doc/conf.py b/doc/conf.py
index 222fc25512302339e3af2167e8eb60fa2ebe795d..0940274a62688b72b081bdd047ce4682f1e6898e 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -122,7 +122,7 @@ auto_intersphinx_packages = [
     "psutil",
     "torch",
     "torchvision",
-    ("exposed", "latest"),
+    ("clapp", "latest"),
     ("python", "3"),
 ]
 auto_intersphinx_catalog = "catalog.json"
diff --git a/doc/usage/index.rst b/doc/usage/index.rst
index 9179c0e78d0da36addf858e8bff9d8d83e6a94ea..df7ca1e9e9db6e9bc8445d01c4759b3b82bbab1d 100644
--- a/doc/usage/index.rst
+++ b/doc/usage/index.rst
@@ -53,9 +53,9 @@ Indirect detection
   systems.
 
 We provide :ref:`command-line interfaces (CLI) <ptbench.cli>` that implement
-each of the phases above. This interface is configurable using :ref:`exposed's
-extensible configuration framework <exposed.config>`.  In essence,
-each command-line option may be provided as a variable with the same name in a
+each of the phases above. This interface is configurable using :ref:`clapp's
+extensible configuration framework <clapp.config>`.  In essence, each
+command-line option may be provided as a variable with the same name in a
 Python file.  Each file may combine any number of variables that are pertinent
 to an application.
 
diff --git a/environment.yaml b/environment.yaml
index 8ca5be021734e7a778eae55b4d3b5abe87836fa4..f5b539c3d85263d133009863aef71ee0a1209548 100644
--- a/environment.yaml
+++ b/environment.yaml
@@ -6,7 +6,7 @@ dependencies:
 - click 8.1.3
 - click >=8.1.3,<9.0a0
 - coverage 7.0.5
-- exposed
+- clapp
 - furo 2022.12.7
 - matplotlib 3.6.3
 - matplotlib >=3.6.3,<4.0a0
diff --git a/pyproject.toml b/pyproject.toml
index e50084faff80d22bcf10abce7399d90eb9e2206d..7a000d65f868a21fdb6965016584159e5293c91d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -28,7 +28,7 @@ classifiers = [
     "Topic :: Software Development :: Libraries :: Python Modules",
 ]
 dependencies = [
-   "exposed",
+   "clapp",
    "click",
    "numpy",
    "pandas",
diff --git a/src/ptbench/scripts/aggregpred.py b/src/ptbench/scripts/aggregpred.py
index cf43f3d0e46be8739ce96ae95ef0beac12a5782b..9c7a082a21e7f0faa0fa6dbeb33779d78438d4f2 100644
--- a/src/ptbench/scripts/aggregpred.py
+++ b/src/ptbench/scripts/aggregpred.py
@@ -4,8 +4,8 @@
 
 import click
 
-from exposed.click import verbosity_option
-from exposed.logging import setup
+from clapp.click import verbosity_option
+from clapp.logging import setup
 
 logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
 
diff --git a/src/ptbench/scripts/cli.py b/src/ptbench/scripts/cli.py
index 37bdc9225a0f242c0f79baa32815c751559b35f4..b5a7a48c720d8f41038c1ebc3f0f40db57549c64 100644
--- a/src/ptbench/scripts/cli.py
+++ b/src/ptbench/scripts/cli.py
@@ -4,7 +4,7 @@
 
 import click
 
-from exposed.click import AliasedGroup
+from clapp.click import AliasedGroup
 
 from . import (
     aggregpred,
diff --git a/src/ptbench/scripts/compare.py b/src/ptbench/scripts/compare.py
index 779c21ca3285ecd6442a9ed6fa6a97dbc523a742..f5ff1725cd38cbaff7a90df97387df2534204d4c 100644
--- a/src/ptbench/scripts/compare.py
+++ b/src/ptbench/scripts/compare.py
@@ -4,8 +4,8 @@
 
 import click
 
-from exposed.click import verbosity_option
-from exposed.logging import setup
+from clapp.click import verbosity_option
+from clapp.logging import setup
 
 logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
 
diff --git a/src/ptbench/scripts/config.py b/src/ptbench/scripts/config.py
index edb47b2d5170112cf6f67ef42aa6195ad8d46707..6ecd6a8aeeaa63cf60ae009c81e5f7602fe60f03 100644
--- a/src/ptbench/scripts/config.py
+++ b/src/ptbench/scripts/config.py
@@ -10,8 +10,8 @@ import typing
 
 import click
 
-from exposed.click import AliasedGroup, verbosity_option
-from exposed.logging import setup
+from clapp.click import AliasedGroup, verbosity_option
+from clapp.logging import setup
 
 logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
 
diff --git a/src/ptbench/scripts/dataset.py b/src/ptbench/scripts/dataset.py
index 0a27ce5611165c374caa895ce79924c7c7bff090..8febec79d85f386a42ec110a911358e93ef4d481 100644
--- a/src/ptbench/scripts/dataset.py
+++ b/src/ptbench/scripts/dataset.py
@@ -9,8 +9,8 @@ import os
 
 import click
 
-from exposed.click import AliasedGroup, verbosity_option
-from exposed.logging import setup
+from clapp.click import AliasedGroup, verbosity_option
+from clapp.logging import setup
 
 logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
 
diff --git a/src/ptbench/scripts/evaluate.py b/src/ptbench/scripts/evaluate.py
index 5100f79db1fd17ab03565fee30adb7d10b90d875..1204a79e176e2c9568119384bd5707c22036e035 100644
--- a/src/ptbench/scripts/evaluate.py
+++ b/src/ptbench/scripts/evaluate.py
@@ -4,8 +4,8 @@
 
 import click
 
-from exposed.click import ConfigCommand, ResourceOption, verbosity_option
-from exposed.logging import setup
+from clapp.click import ConfigCommand, ResourceOption, verbosity_option
+from clapp.logging import setup
 
 logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
 
diff --git a/src/ptbench/scripts/predict.py b/src/ptbench/scripts/predict.py
index 32a13661cc494306acde69d670489f0f5e6846fe..e57e227f46fc90a89fd393558b8987aaa7e5d148 100644
--- a/src/ptbench/scripts/predict.py
+++ b/src/ptbench/scripts/predict.py
@@ -4,8 +4,8 @@
 
 import click
 
-from exposed.click import ConfigCommand, ResourceOption, verbosity_option
-from exposed.logging import setup
+from clapp.click import ConfigCommand, ResourceOption, verbosity_option
+from clapp.logging import setup
 
 logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
 
diff --git a/src/ptbench/scripts/predtojson.py b/src/ptbench/scripts/predtojson.py
index 0e90343ad98e4016b8cc27d3d0c275eddadcaf7f..361d2316887c972e6f573fb3e5acfe8967b744d1 100644
--- a/src/ptbench/scripts/predtojson.py
+++ b/src/ptbench/scripts/predtojson.py
@@ -4,8 +4,8 @@
 
 import click
 
-from exposed.click import verbosity_option
-from exposed.logging import setup
+from clapp.click import verbosity_option
+from clapp.logging import setup
 
 logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
 
diff --git a/src/ptbench/scripts/train.py b/src/ptbench/scripts/train.py
index 754e603c52af65abce33652143efd0e95736ddcc..e69e81cf1fbcedc7f5c57e74e74975e64e8aa2ee 100644
--- a/src/ptbench/scripts/train.py
+++ b/src/ptbench/scripts/train.py
@@ -6,8 +6,8 @@ import os
 
 import click
 
-from exposed.click import ConfigCommand, ResourceOption, verbosity_option
-from exposed.logging import setup
+from clapp.click import ConfigCommand, ResourceOption, verbosity_option
+from clapp.logging import setup
 
 logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
 
diff --git a/src/ptbench/scripts/train_analysis.py b/src/ptbench/scripts/train_analysis.py
index f32c801adb677f429b6f7fa53df11a0e6a8c9726..5baf36383e97c171d9ff20fc2445ff8b12edf461 100644
--- a/src/ptbench/scripts/train_analysis.py
+++ b/src/ptbench/scripts/train_analysis.py
@@ -9,8 +9,8 @@ import os
 import click
 import matplotlib.pyplot as plt
 
-from exposed.click import ConfigCommand, ResourceOption, verbosity_option
-from exposed.logging import setup
+from clapp.click import ConfigCommand, ResourceOption, verbosity_option
+from clapp.logging import setup
 
 logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
 
diff --git a/src/ptbench/utils/rc.py b/src/ptbench/utils/rc.py
index 25049ce16cbade29912740f4aaa9c6166cc46640..8d313149f21f30c4243deb2b9cab395762c6f18d 100644
--- a/src/ptbench/utils/rc.py
+++ b/src/ptbench/utils/rc.py
@@ -2,7 +2,7 @@
 #
 # SPDX-License-Identifier: GPL-3.0-or-later
 
-from exposed.rc import UserDefaults
+from clapp.rc import UserDefaults
 
 
 def load_rc() -> UserDefaults: