diff --git a/apps/conky/pyproject.toml b/apps/conky/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..c40c7a8dabfa7bc27ebaa376e86664ee24ef9d19
--- /dev/null
+++ b/apps/conky/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.conky"
+version = "0.1"
+description = "xAAL for Conky"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'conky']
+dependencies = ['xaal.lib', 'xaal.monitor']
+
diff --git a/apps/dashboard/pyproject.toml b/apps/dashboard/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..8e631935b829a2505b6b120e15d457b8f045092a
--- /dev/null
+++ b/apps/dashboard/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.dashboard"
+version = "0.1"
+description = "xAAL Dashboard"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'socketio', 'html', 'dashboard']
+dependencies = ['xaal.lib', 'bottle', 'gevent', 'gevent-websocket', 'python-engineio', 'python-socketio', 'mako', 'requests']
+
diff --git a/apps/fuse/pyproject.toml b/apps/fuse/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..a8b65d331c4e2223a5b179118c45835fdc0c2d27
--- /dev/null
+++ b/apps/fuse/pyproject.toml
@@ -0,0 +1,13 @@
+[project]
+name = "xaal.fuse"
+version = "0.1"
+description = "xAAL Fuse filesystem"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'tools']
+dependencies = ['xaal.lib', 'fuse-python', 'rapidjson']
+
+[project.scripts]
+xaal-mount = "xaal.fuse.mount:main"
diff --git a/apps/fuse/setup.py b/apps/fuse/setup.py
index c53166ce79cbe4e3a6cce6f48c4bdcfdd42aaf72..ce81c977bf4efa02d20282cd7ff431b08b8b8589 100644
--- a/apps/fuse/setup.py
+++ b/apps/fuse/setup.py
@@ -1,5 +1,4 @@
 from setuptools import setup,find_packages
-import fastentrypoints
 
 with open('README.rst') as f:
     long_description = f.read()
diff --git a/apps/legacytools/pyproject.toml b/apps/legacytools/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..0864c58c71ba5a82cf58ba40ee44710ee487433d
--- /dev/null
+++ b/apps/legacytools/pyproject.toml
@@ -0,0 +1,23 @@
+[project]
+name = "xaal.legacytools"
+version = "0.1"
+description = "xAAL devices tools"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'tools']
+dependencies = ['xaal.lib']
+
+[project.scripts]
+xaal-isalive-legacy = "xaal.legacytools.isalive:main"
+xaal-info-legacy = "xaal.legacytools.info:main"
+xaal-dumper-legacy = "xaal.legacytools.dumper:main"
+xaal-tail-legacy = "xaal.legacytools.tail:main"
+xaal-walker-legacy = "xaal.legacytools.walker:main"
+xaal-keygen-legacy = "xaal.legacytools.keygen:main"
+xaal-log-legacy = "xaal.legacytools.log:main"
+xaal-querydb-legacy = "xaal.legacytools.querydb:main"
+xaal-pkgrun-legacy = "xaal.legacytools.pkgrun:main"
+xaal-uuidgen-legacy = "xaal.legacytools.uuidgen:main"
+xaal-inspector-legacy = "xaal.legacytools.inspector:main"
diff --git a/apps/legacytools/setup.py b/apps/legacytools/setup.py
index 3f61c5fcae048a42b531644c63aaf708f70b9441..fe4ebe1e3fb6587706b3446a92eea40457d075b6 100644
--- a/apps/legacytools/setup.py
+++ b/apps/legacytools/setup.py
@@ -1,5 +1,4 @@
 from setuptools import setup,find_packages
-import fastentrypoints
 
 with open('README.rst') as f:
     long_description = f.read()
diff --git a/apps/rest/pyproject.toml b/apps/rest/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..f00019e69c1dc4d2a0c3182ecb9ab8b0360507a1
--- /dev/null
+++ b/apps/rest/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.rest"
+version = "0.1"
+description = "xAAL devices REST API"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'rest', 'json']
+dependencies = ['xaal.lib', 'bottle', 'gevent', 'gevent-websocket', 'python-rapidjson']
+
diff --git a/apps/tools/pyproject.toml b/apps/tools/pyproject.toml
index 5e1e76a41c7b8cc766cb9310b59ce0f95c781acd..7a4e9d662ff98789b415da416a5e342a35345b39 100644
--- a/apps/tools/pyproject.toml
+++ b/apps/tools/pyproject.toml
@@ -3,16 +3,11 @@ name = "xaal.tools"
 version = "0.4"
 description = "xAAL devices tools"
 readme = "README.rst"
-license = { text = "GPL License" }
-authors = [
-    { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" },
-]
-classifiers = [
-    "Programming Language :: Python",
-    "Topic :: Software Development :: Libraries :: Python Modules",
-]
-keywords = ["xaal", "tools"]
-dependencies = ["xaal.lib", "colored==1.4.3"]
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'tools']
+dependencies = ['xaal.lib', 'colored==1.4.3']
 
 [project.scripts]
 xaal-isalive = "xaal.tools.toolbox:is_alive"
diff --git a/apps/tools/setup.py b/apps/tools/setup.py
index c3c3cd13ad889c49f14d07adf8714d37eebede19..3ff599af67fff0f4b9295ea79db5f77239ca3d97 100644
--- a/apps/tools/setup.py
+++ b/apps/tools/setup.py
@@ -1,5 +1,4 @@
 from setuptools import setup,find_packages
-import fastentrypoints
 
 with open('README.rst') as f:
     long_description = f.read()
diff --git a/core/metadb/pyproject.toml b/core/metadb/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..74f121ab2d351ebdad3a24e507efadce8bfb0588
--- /dev/null
+++ b/core/metadb/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.metadb"
+version = "0.1"
+description = "xAAL Metadata-DB"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'metadata']
+dependencies = ['xaal.lib']
+
diff --git a/devices/assistants/Alexa/pyproject.toml b/devices/assistants/Alexa/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..68a3fbe88103aa52c1e1a5f8a48114a9b74689cc
--- /dev/null
+++ b/devices/assistants/Alexa/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.alexa"
+version = "0.1"
+description = "xAAL devices for Amazon Alexa"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'alexa']
+dependencies = ['xaal.lib', 'xaal.schemas']
+
diff --git a/devices/emulations/Fauxmo/pyproject.toml b/devices/emulations/Fauxmo/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..f75143d86707e48679d8a8e08add687436a43bda
--- /dev/null
+++ b/devices/emulations/Fauxmo/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.fauxmo"
+version = "0.1"
+description = "xAAL to Wemo fake emulations"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'wemo', 'alexa']
+dependencies = ['xaal.lib', 'fauxmo', 'nest_asyncio']
+
diff --git a/devices/loggers/influxdb/pyproject.toml b/devices/loggers/influxdb/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..f500d5b2cc4a82e9d7ae392d2f343ee680069a27
--- /dev/null
+++ b/devices/loggers/influxdb/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.influxdb"
+version = "0.1"
+description = "xAAL device for InfluxDB logging"
+readme = "README.rst"
+authors = [ { name = "Pierre-Henri Horrein", email = "freki@frekilabs.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'influxdb']
+dependencies = ['xaal.lib', 'influxdb']
+
diff --git a/devices/loggers/mqtt/pyproject.toml b/devices/loggers/mqtt/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..79b22e85caabfc7a0b76525e6d28f091795d34c7
--- /dev/null
+++ b/devices/loggers/mqtt/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.mqttlogger"
+version = "0.1"
+description = "xAAL devices for bugNet wireless sensors"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'mqtt']
+dependencies = ['xaal.lib', 'paho-mqtt']
+
diff --git a/devices/loggers/warp10/pyproject.toml b/devices/loggers/warp10/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..4bd7d078c23b8bdcb168f645727216508a72ffe1
--- /dev/null
+++ b/devices/loggers/warp10/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.warp10"
+version = "0.1"
+description = "xAAL logger for warp10"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'warp10']
+dependencies = ['xaal.lib', 'urllib3']
+
diff --git a/devices/notifications/gtk-notify/pyproject.toml b/devices/notifications/gtk-notify/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..7f621c75d6254b78b3491d7a2eb6a732d855e0ae
--- /dev/null
+++ b/devices/notifications/gtk-notify/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.gtknotify"
+version = "0.1"
+description = "xAAL Desktop notification device"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'gtk', 'notify']
+dependencies = ['xaal.lib', 'pycairo', 'PyGObject']
+
diff --git a/devices/notifications/pushbullet/pyproject.toml b/devices/notifications/pushbullet/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..d871f2b2c51a2ff18a549ed45ee0c29ac2649844
--- /dev/null
+++ b/devices/notifications/pushbullet/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.pushbullet"
+version = "0.1"
+description = "xAAL notification for pushbullet"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'pushbullet']
+dependencies = ['xaal.lib', 'pushbullet.py']
+
diff --git a/devices/protocols/Aqara/pyproject.toml b/devices/protocols/Aqara/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..8ceae606e0802bd3cb36747a786ef7bd7718a8e3
--- /dev/null
+++ b/devices/protocols/Aqara/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.aqara"
+version = "0.1"
+description = "xAAL devices for Xiaomi / Aqara"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'aqara']
+dependencies = ['xaal.lib', 'gevent', 'pycryptodomex']
+
diff --git a/devices/protocols/ESPHome/pyproject.toml b/devices/protocols/ESPHome/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..7803df2e1a7136abeb9656b5f6f19b5be7ddcc5e
--- /dev/null
+++ b/devices/protocols/ESPHome/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.esphome"
+version = "0.1"
+description = "xAAL gateway for for ESPHome devices"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'esphome']
+dependencies = ['xaal.lib', 'aioesphomeapi']
+
diff --git a/devices/protocols/Edisio/pyproject.toml b/devices/protocols/Edisio/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..0214606f76c762b41279ac8c25ac37eecb48cb59
--- /dev/null
+++ b/devices/protocols/Edisio/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.edisio"
+version = "0.1"
+description = "xAAL gateway for Edisio devices"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'edisio']
+dependencies = ['xaal.lib', 'gevent', 'pyserial']
+
diff --git a/devices/protocols/HQ433/pyproject.toml b/devices/protocols/HQ433/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..1e0ba5ed59e5bc009100dfe47bcc52a6bb9c2d4e
--- /dev/null
+++ b/devices/protocols/HQ433/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.hq433"
+version = "0.1"
+description = "xAAL devices for HQ Product RF433 power switch"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'rf433']
+dependencies = ['xaal.lib', 'pyserial']
+
diff --git a/devices/protocols/HomeKit/pyproject.toml b/devices/protocols/HomeKit/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..468994f9a6f4776a0945a6ebab217b06242be7f7
--- /dev/null
+++ b/devices/protocols/HomeKit/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.homekit"
+version = "0.1"
+description = "xAAL devices for Homekit"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'homekit']
+dependencies = ['xaal.lib', 'aiohomekit']
+
diff --git a/devices/protocols/IPX-800/pyproject.toml b/devices/protocols/IPX-800/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..00870bf886e3183e5ddcee4820b8c0c353b78305
--- /dev/null
+++ b/devices/protocols/IPX-800/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.ipx800"
+version = "0.1"
+description = "xAAL devices for IPX-800 Ethernet Control System"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'ipx-800']
+dependencies = ['xaal.lib', 'gevent']
+
diff --git a/devices/protocols/KNX/pyproject.toml b/devices/protocols/KNX/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..24b55c4c26540d5cd0e2ccc8ddf768c101c1d046
--- /dev/null
+++ b/devices/protocols/KNX/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.knx"
+version = "0.1"
+description = "xAAL devices for KNX bus"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'knx']
+dependencies = ['xaal.lib', 'gevent']
+
diff --git a/devices/protocols/Meross/pyproject.toml b/devices/protocols/Meross/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..7a1d77fe57e2577b28c58c4a590d3fa78c94a8af
--- /dev/null
+++ b/devices/protocols/Meross/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.meross"
+version = "0.1"
+description = "xAAL gateway for Meross devices"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'meross']
+dependencies = ['xaal.lib', 'xaal.schemas', 'meross_iot==0.4.4.4']
+
diff --git a/devices/protocols/Netatmo/pyproject.toml b/devices/protocols/Netatmo/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..f2fdf2f34bd381645445df917b508c249f9daba2
--- /dev/null
+++ b/devices/protocols/Netatmo/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.netatmo"
+version = "0.1"
+description = "Netatmo Weather Station"
+readme = "README.rst"
+authors = [ { name = "Caifeng BAO", email = "caifeng.bao@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'netatmo', 'weather', 'station']
+dependencies = ['xaal.lib', 'requests']
+
diff --git a/devices/protocols/SensFloor/pyproject.toml b/devices/protocols/SensFloor/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..48a59a71021a87f7166c3fe02f7c80c547d44a40
--- /dev/null
+++ b/devices/protocols/SensFloor/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.sensfloor"
+version = "0.1"
+description = "xAAL devices for Future Shape SensFloor"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'Sense Floor']
+dependencies = ['xaal.lib', 'xaal.schemas', 'python-socketio==5.0.0', 'aiohttp']
+
diff --git a/devices/protocols/Tuya/pyproject.toml b/devices/protocols/Tuya/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..12b82cb8e465201bca1c27f76e972e9eed4a1b21
--- /dev/null
+++ b/devices/protocols/Tuya/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.tuya"
+version = "0.1"
+description = "xAAL support for Tuya protocol / Smart Life App"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'tuya']
+dependencies = ['xaal.lib', 'gevent', 'decorator', 'tuyaface']
+
diff --git a/devices/protocols/Yeelight/pyproject.toml b/devices/protocols/Yeelight/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..e7923f5b2a385d6f239cb8419903faadb4e46221
--- /dev/null
+++ b/devices/protocols/Yeelight/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.yeelight"
+version = "0.1"
+description = "xAAL devices for Xiaomi / Aqara"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'aqara']
+dependencies = ['xaal.lib', 'gevent', 'yeelight', 'decorator']
+
diff --git a/devices/protocols/ZWave/pyproject.toml b/devices/protocols/ZWave/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..eb6b6e377f3b9e55ab261909a64201855732c715
--- /dev/null
+++ b/devices/protocols/ZWave/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.zwave"
+version = "0.1"
+description = "xAAL devices for Zwave"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'zwave']
+dependencies = ['xaal.lib', 'python_openzwave', 'prettytable']
+
diff --git a/devices/protocols/bugOne/pyproject.toml b/devices/protocols/bugOne/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..cf3ce388a8e667039cfd7c730150fccd5a84014e
--- /dev/null
+++ b/devices/protocols/bugOne/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.bugone"
+version = "0.1"
+description = "xAAL devices for bugNet wireless sensors"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'bugone', 'RFM12', 'Wireless', 'Sensor']
+dependencies = ['xaal.lib', 'bugone', 'gevent']
+
diff --git a/devices/sensors/HTU21D/pyproject.toml b/devices/sensors/HTU21D/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..ca171cffa5ab397708f5f8b6984ac93d5891d31e
--- /dev/null
+++ b/devices/sensors/HTU21D/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.htu21d"
+version = "0.1"
+description = "xAAL devices for I2C HTU21D sensors"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'i2c sensors']
+dependencies = ['xaal.lib']
+
diff --git a/devices/sensors/lm_sensors/pyproject.toml b/devices/sensors/lm_sensors/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..1f8f7cd78cb37630ce840478f4fbc5f9e1d32042
--- /dev/null
+++ b/devices/sensors/lm_sensors/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.lmsensors"
+version = "0.1"
+description = "xAAL devices for LM temperature sensors"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'lmsensors']
+dependencies = ['xaal.lib', 'PySensors']
+
diff --git a/devices/tests/dummy/pyproject.toml b/devices/tests/dummy/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..bca96b4bb2261eeca33e4844e81c5db4e38d7b0a
--- /dev/null
+++ b/devices/tests/dummy/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.dummy"
+version = "0.1"
+description = "xAAL dummy devices"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal']
+dependencies = ['xaal.lib']
+
diff --git a/devices/tests/fakeinput/pyproject.toml b/devices/tests/fakeinput/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..034f8c2c9cee41de802a6a64c6f7b3df83299cd3
--- /dev/null
+++ b/devices/tests/fakeinput/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.fakeinput"
+version = "0.1"
+description = "xAAL fake switch, buttons, contact devices "
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'json']
+dependencies = ['xaal.lib', 'xaal.schemas', 'bottle', 'gevent', 'gevent-websocket']
+
diff --git a/devices/weather/OpenWeatherMap/pyproject.toml b/devices/weather/OpenWeatherMap/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..050abf811d9cda8a91b5e90c11e3df6520713a04
--- /dev/null
+++ b/devices/weather/OpenWeatherMap/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "xaal.owm"
+version = "0.2"
+description = "xAAL devices for OpenWeather Map"
+readme = "README.rst"
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'own', 'weather']
+dependencies = ['xaal.lib', 'xaal.schemas', 'pyowm==2.10.0']
+
diff --git a/libs/lib/pyproject.toml b/libs/lib/pyproject.toml
index 782eb0cf8f444f75b1adce8b8450cb6f875a6800..c5a3a1d704e6b8e6b6d8ecd708baa15a9cb08a4c 100644
--- a/libs/lib/pyproject.toml
+++ b/libs/lib/pyproject.toml
@@ -3,21 +3,9 @@ name = "xaal.lib"
 version = "0.7.2"
 description = "xaal.lib is the official Python stack of xAAL protocol dedicated to home automation systems"
 readme = "README.rst"
-license = { text = "GPL License" }
-authors = [
-    { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" },
-]
-classifiers = [
-    "Programming Language :: Python",
-    "Topic :: Software Development :: Libraries :: Python Modules",
-]
-keywords = ["xaal", "home-automation"]
-dependencies = [
-    "cbor2==5.4.2",
-    "pysodium",
-    "configobj",
-    "coloredlogs",
-    "decorator",
-    "tabulate",
-    "aioconsole",
-]
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'home-automation']
+dependencies = ['cbor2==5.4.2', 'pysodium', 'configobj', 'coloredlogs', 'decorator', 'tabulate', 'aioconsole']
+
diff --git a/libs/monitor/pyproject.toml b/libs/monitor/pyproject.toml
index 932f1d4d7dbcf22a0497a036391e8b70f1ebfeda..3c16c365edebdca5a18fd0c1fef93561e1b21325 100644
--- a/libs/monitor/pyproject.toml
+++ b/libs/monitor/pyproject.toml
@@ -3,13 +3,9 @@ name = "xaal.monitor"
 version = "0.1"
 description = "xAAL devices Monitor Lib"
 readme = "README.rst"
-license = { text = "GPL License" }
-authors = [
-    { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" },
-]
-classifiers = [
-    "Programming Language :: Python",
-    "Topic :: Software Development :: Libraries :: Python Modules",
-]
-keywords = ["xaal", "monitor"]
-dependencies = ["xaal.lib"]
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'monitor']
+dependencies = ['xaal.lib']
+
diff --git a/libs/schemas/pyproject.toml b/libs/schemas/pyproject.toml
index 3626896b7fd6251ca4ff968e64381bbed40aaf60..2dccdb45d2e45b7390b5955bc858acc3e1671046 100644
--- a/libs/schemas/pyproject.toml
+++ b/libs/schemas/pyproject.toml
@@ -1,15 +1,11 @@
 [project]
 name = "xaal.schemas"
 version = "0.1"
-description = "xaal.schema provides some tools built from xAAL schemas"
+description = "xaal.schema provide some tools build from xAAL schemas"
 readme = "README.rst"
-license = { text = "GPL License" }
-authors = [
-    { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" },
-]
-classifiers = [
-    "Programming Language :: Python",
-    "Topic :: Software Development :: Libraries :: Python Modules",
-]
-keywords = ["xaal", "home-automation"]
-dependencies = ["xaal.lib"]
+authors = [ { name = "Jerome Kerdreux", email = "Jerome.Kerdreux@imt-atlantique.fr" } ]
+license = { text = "GPL License"}
+classifiers = ['Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules']
+keywords = ['xaal', 'home-automation']
+dependencies = ['xaal.lib']
+