diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5923f5a53549112363ce41ff608c16865c3b93d4..1972b1c1be72577edf5daf89280c90eddaf57d3a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -191,6 +191,8 @@ tests:
   - echo $RELEASE_FILE_RAW_SPEC
   - export RELEASE_FILE_CLIENT_SPEC=release/gdev_client-specs.yaml
   - echo $RELEASE_FILE_CLIENT_SPEC
+  - export CLIENT_RELEASE_NAME=$RUNTIME-$RUNTIME_VERSION-$CLIENT_VERSION
+  - echo $CLIENT_RELEASE_NAME
 
 trigger_network_release:
   stage: build
@@ -412,7 +414,7 @@ create_client_release:
     SRTOOL_OUTPUT: $CI_PROJECT_DIR/release/srtool_output.json
   script:
     - *define_network_branch_vars
-    - cargo xtask release-runtime $NETWORK_RELEASE $CI_COMMIT_BRANCH $RUNTIME_MILESTONE
+    - cargo xtask release-runtime $CLIENT_RELEASE_NAME $NETWORK_RELEASE $CI_COMMIT_BRANCH $RUNTIME_MILESTONE
     - cargo xtask create-asset-link $RUNTIME_MILESTONE ${RUNTIME}_runtime.compact.compressed.wasm https://nodes.pages.duniter.org/-/rust/duniter-v2s/-/jobs/$CI_JOB_ID/artifacts/$RELEASE_FILE_WASM
     - cargo xtask create-asset-link $RUNTIME_MILESTONE ${RUNTIME}_client-specs.yaml https://nodes.pages.duniter.org/-/rust/duniter-v2s/-/jobs/$CI_JOB_ID/artifacts/$RELEASE_FILE_CLIENT_SPEC
     - cargo xtask create-asset-link $RUNTIME_MILESTONE ${RUNTIME}-raw.json https://nodes.pages.duniter.org/-/rust/duniter-v2s/-/jobs/$CI_JOB_ID/artifacts/$RELEASE_FILE_RAW_SPEC
diff --git a/xtask/res/create_release.gql b/xtask/res/create_release.gql
index eb31aef63f847a521b198dabb1b392c6207ca932..2ba71180fd37442b413065d836201a7633139b44 100644
--- a/xtask/res/create_release.gql
+++ b/xtask/res/create_release.gql
@@ -1,12 +1,12 @@
-mutation CreateReleaseMutation($branch: String!, $description: String!, $milestone: String!, $links: [ReleaseAssetLinkInput!]!) {
+mutation CreateReleaseMutation($name: String!, $branch: String!, $description: String!, $milestone: String!, $links: [ReleaseAssetLinkInput!]!) {
   releaseCreate(input: {
     clientMutationId: "duniter-v2s-xtask"
     description: $description
     milestones: [$milestone]
-    name: $milestone
+    name: $name
     projectPath: "nodes/rust/duniter-v2s"
     ref: $branch
-    tagName: $milestone
+    tagName: $name
     assets: {
       links: $links
     }
diff --git a/xtask/src/main.rs b/xtask/src/main.rs
index 9796b9678b997f3816bb1d22f85e66384c7c3def..07dd4e976bf2ea863422021b4c4f7745855cdb0f 100644
--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -57,6 +57,7 @@ enum DuniterXTaskCommand {
     ReleaseNetwork { network: String, branch: String },
     /// Release a new runtime
     ReleaseRuntime {
+        name: String,
         network: String,
         branch: String,
         milestone: String,
@@ -106,10 +107,11 @@ async fn main() -> Result<()> {
             release_runtime::release_network(network, branch).await
         }
         DuniterXTaskCommand::ReleaseRuntime {
+            name,
             network,
             branch,
             milestone,
-        } => release_runtime::release_runtime(network, branch, milestone).await,
+        } => release_runtime::release_runtime(name, network, branch, milestone).await,
         DuniterXTaskCommand::PrintSpec { network } => release_runtime::print_spec(network).await,
         DuniterXTaskCommand::CreateAssetLink {
             tag,
diff --git a/xtask/src/release_runtime.rs b/xtask/src/release_runtime.rs
index 574867ea6fb1de543684700bccb461442eea042a..9f9d61548e0e51f47c14ca5b76519a2a2b133940 100644
--- a/xtask/src/release_runtime.rs
+++ b/xtask/src/release_runtime.rs
@@ -86,6 +86,7 @@ pub(super) async fn release_network(network: String, branch: String) -> Result<(
 }
 
 pub(super) async fn release_runtime(
+    name: String,
     network: String,
     branch: String,
     milestone: String,
@@ -129,8 +130,14 @@ pub(super) async fn release_runtime(
     println!("{}", release_notes);
     let gitlab_token =
         std::env::var("GITLAB_TOKEN").with_context(|| "missing env var GITLAB_TOKEN")?;
-    create_release::create_release(gitlab_token, branch, milestone, release_notes.to_string())
-        .await?;
+    create_release::create_release(
+        gitlab_token,
+        name,
+        branch,
+        milestone,
+        release_notes.to_string(),
+    )
+    .await?;
 
     Ok(())
 }
diff --git a/xtask/src/release_runtime/create_release.rs b/xtask/src/release_runtime/create_release.rs
index bece83eecc048f4c05fc2056f70775e712ac6500..ed5e26d3b8dd3444a29bca8ebd5e7909c607d5e7 100644
--- a/xtask/src/release_runtime/create_release.rs
+++ b/xtask/src/release_runtime/create_release.rs
@@ -27,12 +27,14 @@ pub struct CreateReleaseMutation;
 
 pub(super) async fn create_release(
     gitlab_token: String,
+    name: String,
     branch: String,
     milestone: String,
     release_notes: String,
 ) -> Result<()> {
     // this is the important line
     let request_body = CreateReleaseMutation::build_query(create_release_mutation::Variables {
+        name,
         branch,
         description: release_notes,
         milestone,