diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9e3ac9177517205ddc9034c3a05eefcd52eebd57..3b50e6bf884d89a67a424daeb8dabd9044cba47b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -38,69 +38,93 @@ variables:
 
     PACKAGE_REGISTRY_URL: "${GITLAB_API_PROJECT_URL}/packages/generic/${BIN_NAME}"
 
+    WIKI_FOLDER: Wiki
+
 
 .get_version:
     script:
         - IS_DEV=$([[ $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH ]] && echo false || echo true)
         - VERSION=$(jq -r .version $PROJECT_FOLDER/package.json)$([[ $IS_DEV == true ]] && echo $VERSION_DEV_SUFFIX || echo '')
 
+
 .get_packages_url:
     script:
+        # Binaries
         - PACKAGE_URL_MACOS_ARM64_BIN="${PACKAGE_REGISTRY_URL}_macOS-arm64/${VERSION}/${BIN_NAME}"
         - PACKAGE_URL_MACOS_X64_BIN="${PACKAGE_REGISTRY_URL}_macOS-x64/${VERSION}/${BIN_NAME}"
-        - PACKAGE_URL_MACOS_ARM64_PKG="${PACKAGE_REGISTRY_URL}_macOS-pkg-arm64/${VERSION}/${MACOS_PKG_BIN_NAME}"
-        - PACKAGE_URL_MACOS_X64_PKG="${PACKAGE_REGISTRY_URL}_macOS-pkg-x64/${VERSION}/${MACOS_PKG_BIN_NAME}"
         - PACKAGE_URL_LINUX_ARM64_BIN="${PACKAGE_REGISTRY_URL}_Linux-arm64/${VERSION}/${BIN_NAME}"
         - PACKAGE_URL_LINUX_X64_BIN="${PACKAGE_REGISTRY_URL}_Linux-x64/${VERSION}/${BIN_NAME}"
         - PACKAGE_URL_WINDOWS_ARM64_BIN="${PACKAGE_REGISTRY_URL}_Windows-arm64/${VERSION}/${WINDOWS_BIN_NAME}"
         - PACKAGE_URL_WINDOWS_X64_BIN="${PACKAGE_REGISTRY_URL}_Windows-x64/${VERSION}/${WINDOWS_BIN_NAME}"
 
+        # Packages
+        - PACKAGE_URL_MACOS_ARM64_PKG="${PACKAGE_REGISTRY_URL}_macOS-pkg-arm64/${VERSION}/${MACOS_PKG_BIN_NAME}"
+        - PACKAGE_URL_MACOS_X64_PKG="${PACKAGE_REGISTRY_URL}_macOS-pkg-x64/${VERSION}/${MACOS_PKG_BIN_NAME}"
+
+        # Wiki
+        - WIKI_ARCHIVE_NAME="DojoCLI_Wiki_${VERSION}.tar.xz"
+        - PACKAGE_URL_WIKI="${PACKAGE_REGISTRY_URL}_Windows-x64/${VERSION}/${WIKI_ARCHIVE_NAME}"
+
+
 .build_cli:
     script:
         - cd NodeApp
+
         # Download secure files
         - curl --silent "https://gitlab.com/gitlab-org/incubation-engineering/mobile-devops/download-secure-files/-/raw/main/installer" | bash
         - mv env_$VERSION .env
+
         # Install dependencies
         - npm install
         - npm run build
+
         # Build binaries
         ## macOS
         - npx pkg . -t node18-macos-arm64 --output $BIN_FILE_MACOS_ARM64 --no-bytecode --public-packages "*" --public
         - npx pkg . -t node18-macos-x64 --output $BIN_FILE_MACOS_X64 --no-bytecode --public-packages "*" --public
+
         ## Linux
         - npx pkg . -t node18-linuxstatic-arm64 --output $BIN_FILE_LINUX_ARM64 --no-bytecode --public-packages "*" --public
         - npx pkg . -t node18-linuxstatic-x64 --output $BIN_FILE_LINUX_X64 --no-bytecode --public-packages "*" --public
+
         ## Windows
         - npx pkg . -t node18-win-arm64 --output $BIN_FILE_WINDOWS_ARM64 --no-bytecode --public-packages "*" --public
         - npx pkg . -t node18-win-x64 --output $BIN_FILE_WINDOWS_X64 --no-bytecode --public-packages "*" --public
 
+
 .sign_macos:
     script:
         # Sign excecutable
         - codesign --force --options=runtime --entitlements ../../../Resources/macApp/Signing/entitlements.plist --sign $SIGN_DEV_ID_APP --keychain $SIGN_LOGIN_KEYCHAIN_PATH --timestamp ${BIN_NAME}
+
         # Package and notarize the app
         - xcrun notarytool store-credentials --apple-id $SIGN_APPLE_ID --team-id $SIGN_TEAM_ID --password $SIGN_APP_PASSWORD --keychain $SIGN_LOGIN_KEYCHAIN_PATH $SIGN_KEYCHAIN_PROFILE
         - ditto ${BIN_NAME} ${BIN_NAME}_pkg/usr/local/bin/
         - productbuild --identifier $SIGN_IDENTIFIER --version $VERSION --sign $SIGN_DEV_ID_INST --keychain $SIGN_LOGIN_KEYCHAIN_PATH --timestamp --root ${BIN_NAME}_pkg / ${MACOS_PKG_BIN_NAME}
         - xcrun notarytool submit ${BIN_NAME}.pkg --keychain $SIGN_LOGIN_KEYCHAIN_PATH --keychain-profile $SIGN_KEYCHAIN_PROFILE --wait
         - xcrun stapler staple ${BIN_NAME}.pkg
-        #Clean folder
+
+        # Clean folder
         - rm -Rf ${BIN_NAME}_pkg
 
+
 .clean_release:
     script:
         # Delete release if it already exists
         - 'curl --request DELETE --header "JOB-TOKEN: $CI_JOB_TOKEN" "${GITLAB_API_PROJECT_URL}/releases/${VERSION}"'
+
         # Delete tag if it already exists (use private-token because job-token don't have permission to delete tags)
         - 'curl --request DELETE --header "PRIVATE-TOKEN: $GITLAB_PROJECT_ACCESS_TOKEN" "${GITLAB_API_PROJECT_URL}/repository/tags/${VERSION}"'
 
+
 .clean_packages:
     script:
         # Get all packages of the project
         - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" "${GITLAB_API_PROJECT_URL}/packages" > gitlabPackages.json'
+
         # Filter and select packages to delete (based on version)
         - packagesToDelete=`jq -r '.[] | select(.version=="'${VERSION}'") | ._links.delete_api_path' gitlabPackages.json`
+
         # Delete packages by calling Gitlab API
         - >
             for deletePath in $packagesToDelete; do
@@ -127,10 +151,13 @@ test:build:
         - apt update
         - apt install -y jq
         - !reference [.get_version, script]
+
+        # Build
         - !reference [.build_cli, script]
     rules:
         - if: '$CI_COMMIT_TAG =~ "/^$/" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $CI_COMMIT_BRANCH !~ /^v[0-9]+(\.[0-9]+)*$/'
 
+
 build:version:
     stage: build
     tags:
@@ -142,6 +169,8 @@ build:version:
         - !reference [.get_version, script]
         - mkdir -p $ARTIFACTS_FOLDER
         - echo $VERSION > $VERSION_FILE
+
+        # Build
         - !reference [.build_cli, script]
     artifacts:
         untracked: true
@@ -151,6 +180,7 @@ build:version:
     rules:
         - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^v[0-9]+(\.[0-9]+)*$/'
 
+
 sign:macos:
     stage: sign
     tags:
@@ -160,17 +190,22 @@ sign:macos:
     script:
         - VERSION=$(cat $VERSION_FILE)
         - security unlock-keychain -p $SIGN_KEYCHAIN_PASSWORD $SIGN_LOGIN_KEYCHAIN_PATH
+
+        # Sign Apple Silicon binary
         - cd $BIN_FOLDER_MACOS_ARM64
         - !reference [.sign_macos, script]
+
+        # Sign Intel binary
         - cd $BIN_FOLDER_MACOS_X64
         - !reference [.sign_macos, script]
     artifacts:
         paths:
             - $ARTIFACTS_FOLDER/*
-        expire_in: 1 day
+        expire_in: 1 hour
     rules:
         - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^v[0-9]+(\.[0-9]+)*$/'
 
+
 clean:release:
     stage: clean
     tags:
@@ -182,6 +217,7 @@ clean:release:
     rules:
         - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^v[0-9]+(\.[0-9]+)*$/'
 
+
 clean:packages:
     stage: clean
     tags:
@@ -193,6 +229,7 @@ clean:packages:
     rules:
         - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^v[0-9]+(\.[0-9]+)*$/'
 
+
 clean:dev:release:
     stage: clean
     tags:
@@ -205,6 +242,7 @@ clean:dev:release:
     rules:
         - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
 
+
 clean:dev:packages:
     stage: clean
     tags:
@@ -217,6 +255,7 @@ clean:dev:packages:
     rules:
         - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
 
+
 upload:packages:
     stage: upload
     tags:
@@ -227,20 +266,94 @@ upload:packages:
     script:
         - !reference [.get_version, script]
         - !reference [.get_packages_url, script]
-        #macOS
+
+        # macOS
         - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${BIN_FILE_MACOS_ARM64} "${PACKAGE_URL_MACOS_ARM64_BIN}";'
         - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${BIN_FILE_MACOS_X64} "${PACKAGE_URL_MACOS_X64_BIN}";'
         - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${BIN_PKG_FILE_MACOS_ARM64} "${PACKAGE_URL_MACOS_ARM64_PKG}";'
         - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${BIN_PKG_FILE_MACOS_X64} "${PACKAGE_URL_MACOS_X64_PKG}";'
-        #Linux
+
+        # Linux
         - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${BIN_FILE_LINUX_ARM64} "${PACKAGE_URL_LINUX_ARM64_BIN}";'
         - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${BIN_FILE_LINUX_X64} "${PACKAGE_URL_LINUX_X64_BIN}";'
-        #Windows
+
+        # Windows
         - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${BIN_FILE_WINDOWS_ARM64} "${PACKAGE_URL_WINDOWS_ARM64_BIN}";'
         - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${BIN_FILE_WINDOWS_X64} "${PACKAGE_URL_WINDOWS_X64_BIN}";'
     rules:
         - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^v[0-9]+(\.[0-9]+)*$/'
 
+
+upload:packages:wiki:
+    stage: upload
+    tags:
+        - gitlab_package
+    image: registry.gitlab.com/gitlab-ci-utils/curl-jq:latest
+    script:
+        # Install dependencies
+        - apk update
+        - apk add xz
+
+        - !reference [.get_version, script]
+        - !reference [.get_packages_url, script]
+
+        # Create archive
+        - WIKI_ARCHIVE_PATH="${ARTIFACTS_FOLDER}/${WIKI_ARCHIVE_NAME}"
+        - tar -v -c -C "${CI_PROJECT_DIR}/${WIKI_FOLDER}" -J -f "${WIKI_ARCHIVE_PATH}" . # Ubuntu: tar --verbose --create --cd wiki-test-2 --xz --file file.tar.bz2
+
+        # Send package
+        - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${WIKI_ARCHIVE_PATH} "${PACKAGE_URL_WIKI}";'
+    rules:
+        - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^v[0-9]+(\.[0-9]+)*$/'
+
+
+release:wiki:
+    stage: release
+    tags:
+        - release
+    image: alpine:latest
+    script:
+        - !reference [.get_version, script]
+
+        - apk update
+        - apk add git
+
+        # Define URL for the wiki in terms of project-agnostic predefined variables
+        - WIKI_URL="${CI_SERVER_PROTOCOL}://project_${CI_PROJECT_ID}_bot:${GITLAB_PROJECT_ACCESS_TOKEN}@${CI_SERVER_HOST}:${CI_SERVER_PORT}/${CI_PROJECT_PATH}.wiki.git"
+
+        # Clone this project's wiki under /tmp
+        - rm -rf "/tmp/${CI_PROJECT_NAME}.wiki"
+        - cd /tmp
+        - git clone "${WIKI_URL}"
+
+        # Enter the cloned repo
+        - cd "${CI_PROJECT_NAME}.wiki"
+
+        # Update the file
+        - mv .git/ ../
+        - rm -rf ./*
+        - mv ../.git/ ./
+        - cp "${CI_PROJECT_DIR}/.gitignore" .
+        - cp -R "${CI_PROJECT_DIR}/${WIKI_FOLDER}/." .
+
+        # Set committer info
+        - git config user.name "$GITLAB_USER_NAME"
+        - git config user.email "$GITLAB_USER_EMAIL"
+
+        # Commit the gitignore file
+        - git add ".gitignore"
+        - git commit -m "Add gitignore file" || true
+
+        # Commit the file
+        - git add .
+        - git commit -m "${VERSION}" || true
+
+        # Push the change back to the master branch of the wiki
+        - git push origin "HEAD:main"
+    rules:
+        - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+
+
 release:gitlab:
     stage: release
     tags:
@@ -249,11 +362,12 @@ release:gitlab:
     script:
         - !reference [.get_version, script]
         - !reference [.get_packages_url, script]
-        - echo 'Running release_job'
+
         # Extract description from CHANGELOG.md
         - CHANGELOG_LINE_START=`awk '/##\ [0-9]+\.[0-9]+\.[0-9]+/{print NR; exit;}' CHANGELOG.md`
         - CHANGELOG_LINE_END=`awk '/##\ [0-9]+\.[0-9]+\.[0-9]+/{ count++; if(count>1) {print NR; exit;}}' CHANGELOG.md`
         - DESCRIPTION=`awk 'NR > '$CHANGELOG_LINE_START' && NR < '$CHANGELOG_LINE_END'' CHANGELOG.md`
+
         # Create Release (can't be done by release_step of gitlab image because it don't have access to env var defined in script_step)
         - >
             RELEASE_DATA=$(jq --null-input --arg version "$VERSION" --arg description "# Changelog (version $VERSION) $DESCRIPTION" --arg tag_name "$VERSION" --arg ref "$CI_COMMIT_SHORT_SHA" '{
@@ -285,8 +399,11 @@ release:gitlab:
                             "name": "macOS (Intel) package",
                             "url": "'${PACKAGE_URL_MACOS_X64_PKG}'",
                         },{
-                          "name": "macOS (Apple Silicon) package",
-                          "url": "'${PACKAGE_URL_MACOS_ARM64_PKG}'",
+                            "name": "macOS (Apple Silicon) package",
+                            "url": "'${PACKAGE_URL_MACOS_ARM64_PKG}'",
+                        },{
+                          "name": "Wiki",
+                          "url": "'${PACKAGE_URL_WIKI}'",
                         }
                     ]                       
                 }
diff --git a/Wiki/Home.md b/Wiki/Home.md
new file mode 100644
index 0000000000000000000000000000000000000000..ec072aec5347c5ca75c7fe301cb07585dc56fad6
--- /dev/null
+++ b/Wiki/Home.md
@@ -0,0 +1 @@
+# Wiki of the CLI of Dojo
\ No newline at end of file