diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index a7eae63f63a7607787c6a2f798be89ca80cdf669..8469ad0731cc832084310e1ec83b2bad054b54da 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -3,5 +3,5 @@ current_version = 0.1.0
 commit = true
 tag = true
 
-[bumpversion:file:setup.cfg]
+[bumpversion:file:grid5000/__version___.py]
 
diff --git a/grid5000/__init__.py b/grid5000/__init__.py
index ed28295be094617ad064c2095fbfc6f673940069..81a4f77188d00a9713dc02671bc6b0d84c847fc0 100644
--- a/grid5000/__init__.py
+++ b/grid5000/__init__.py
@@ -10,12 +10,13 @@ import yaml
 
 from .exceptions import *  # noqa
 from .objects import *  # noqa
+from .__version__ import __version__
 
 
 logger = logging.getLogger(__name__)
 
 DEFAULT_BASE_URL = "https://api.grid5000.fr/stable"
-USER_AGENT = "python-grid5000"
+USER_AGENT = f"python-grid5000 {__version__}"
 
 
 def _create_session(
diff --git a/grid5000/__version__.py b/grid5000/__version__.py
new file mode 100644
index 0000000000000000000000000000000000000000..a68927d6ca950577d845cea16247b0aee681c39f
--- /dev/null
+++ b/grid5000/__version__.py
@@ -0,0 +1 @@
+__version__ = "0.1.0"
\ No newline at end of file
diff --git a/setup.cfg b/setup.cfg
index ad7d11559466f9bf135d0454d1d3d647581d4ad1..454cbd581fe76c7b6bfeb8a491dd2fdd951f3ece 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,6 +1,5 @@
 [metadata]
 name = python-grid5000
-version = 0.1.0
 keywords = REST, evaluation, reproducible research, Grid5000
 license_file = LICENSE.txt
 url = https://gitlab.inria.fr/msimonin/python-grid5000
diff --git a/setup.py b/setup.py
index 7c7c34ed18755cf83096aa21e043f707c370b84e..bd459d166a35f1b1243fc23516c7a156a0382519 100644
--- a/setup.py
+++ b/setup.py
@@ -1,5 +1,12 @@
 # -*- coding: utf-8 -
 from setuptools import setup
+import os
 
-setup()
+here = os.path.abspath(os.path.dirname(__file__))
+
+about = {}
+with open(os.path.join(here, 'grid5000', '__version__.py')) as f:
+    exec(f.read(), about)
+
+setup(version=about["__version__"])