diff --git a/docs/api-reference.rst b/docs/api-reference.rst
--- a/docs/api-reference.rst
+++ b/docs/api-reference.rst
@@ -20,6 +20,7 @@
    swh.model <swh-model/index>
    swh.objstorage <swh-objstorage/index>
    swh.objstorage.replayer <swh-objstorage-replayer/index>
+   swh.perfecthash <swh-perfecthash/index>
    swh.scanner <swh-scanner/index>
    swh.scheduler <swh-scheduler/index>
    swh.search <swh-search/index>
diff --git a/docs/index.rst b/docs/index.rst
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -135,6 +135,10 @@
 :ref:`swh.objstorage.replayer <swh-objstorage-replayer>`
     Object storage replication tool
 
+:ref:`swh.perfecthash <swh-perfecthash>`
+     Low level management for read-only content-addressable object storage
+     indexed with a perfect hash table
+
 :ref:`swh.scanner <swh-scanner>`
     source code scanner to analyze code bases and compare them with source code
     artifacts archived by Software Heritage
diff --git a/requirements-swh-dev.txt b/requirements-swh-dev.txt
--- a/requirements-swh-dev.txt
+++ b/requirements-swh-dev.txt
@@ -23,6 +23,7 @@
 ../swh-loader-mercurial
 ../swh-loader-svn
 ../swh-loader-cvs
+../swh-perfecthash
 ../swh-search
 ../swh-vault
 ../swh-web
diff --git a/requirements-swh.txt b/requirements-swh.txt
--- a/requirements-swh.txt
+++ b/requirements-swh.txt
@@ -16,6 +16,7 @@
 swh.model
 swh.objstorage[testing]
 swh.objstorage.replayer
+swh.perfecthash
 swh.scanner
 swh.scheduler[simulator]
 swh.search
diff --git a/swh/docs/sphinx/conf.py b/swh/docs/sphinx/conf.py
--- a/swh/docs/sphinx/conf.py
+++ b/swh/docs/sphinx/conf.py
@@ -82,8 +82,6 @@
 exclude_patterns = [
     "_build",
     "swh-icinga-plugins/index.rst",
-    "swh-perfecthash/index.rst",
-    "swh-perfecthash/README.rst",
     "swh.loader.cvs.rcsparse.setup.rst",
     "apidoc/swh.loader.cvs.rcsparse.setup.rst",
 ]