diff --git a/src/app/pluginadapter.cpp b/src/app/pluginadapter.cpp
index edfa0d4ceee0aebb50bc40837c312615e31ff96a..c01d69e8b408bdf806b97e66fb3839618c9482fd 100644
--- a/src/app/pluginadapter.cpp
+++ b/src/app/pluginadapter.cpp
@@ -90,7 +90,8 @@ PluginAdapter::getPluginsFromStore()
                                            Q_EMIT storeNotAvailable();
                                        });
     pluginVersionManager_
-        ->sendGetRequest(QUrl(baseUrl_ + "?arch=" + Utils::getPlatformString()),
+        ->sendGetRequest(QUrl(baseUrl_
+                              + "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"]),
                          [this, errorHandler](const QByteArray& data) {
                              auto result = QJsonDocument::fromJson(data).array();
                              auto pluginsInstalled = lrcInstance_->pluginModel().getPluginsId();
@@ -112,18 +113,19 @@ PluginAdapter::getPluginsFromStore()
 void
 PluginAdapter::getPluginDetails(const QString& pluginId)
 {
-    pluginVersionManager_->sendGetRequest(QUrl(baseUrl_ + "/details/" + pluginId
-                                               + "?arch=" + Utils::getPlatformString()),
-                                          [this](const QByteArray& data) {
-                                              auto result = QJsonDocument::fromJson(data).object();
-                                              // my response is a json object and I want to convert
-                                              // it to a QVariantMap
-                                              auto plugin = result.toVariantMap();
-                                              if (!plugin.contains("id")) {
-                                                  plugin["id"] = plugin["name"];
-                                              }
-                                              pluginStoreListModel_->addPlugin(plugin);
-                                          });
+    pluginVersionManager_
+        ->sendGetRequest(QUrl(baseUrl_ + "/details/" + pluginId
+                              + "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"]),
+                         [this](const QByteArray& data) {
+                             auto result = QJsonDocument::fromJson(data).object();
+                             // my response is a json object and I want to convert
+                             // it to a QVariantMap
+                             auto plugin = result.toVariantMap();
+                             if (!plugin.contains("id")) {
+                                 plugin["id"] = plugin["name"];
+                             }
+                             pluginStoreListModel_->addPlugin(plugin);
+                         });
 }
 
 void
@@ -204,11 +206,13 @@ PluginAdapter::baseUrl() const
 QString
 PluginAdapter::getIconUrl(const QString& pluginId) const
 {
-    return baseUrl_ + "/icons/" + pluginId + "?arch=" + Utils::getPlatformString();
+    return baseUrl_ + "/icons/" + pluginId
+           + "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"];
 }
 
 QString
 PluginAdapter::getBackgroundImageUrl(const QString& pluginId) const
 {
-    return baseUrl_ + "/backgrounds/" + pluginId + "?arch=" + Utils::getPlatformString();
+    return baseUrl_ + "/backgrounds/" + pluginId
+           + "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"];
 }
diff --git a/src/app/pluginversionmanager.cpp b/src/app/pluginversionmanager.cpp
index e508402b9765fe5f8ae7f22e0d4e7a57732353de..04c850d3f57b2b61618effdd03a162e0573d08d9 100644
--- a/src/app/pluginversionmanager.cpp
+++ b/src/app/pluginversionmanager.cpp
@@ -103,8 +103,8 @@ public:
             return;
         }
 
-        parent_.sendGetRequest(QUrl(parent_.baseUrl + "/versions/" + plugin.id
-                                    + "?arch=" + Utils::getPlatformString()),
+        parent_.sendGetRequest(QUrl(parent_.baseUrl + "/versions/" + plugin.id + "?arch="
+                                    + lrcInstance_->pluginModel().getPlatformInfo()["os"]),
                                [this, plugin](const QByteArray& data) {
                                    // `data` represents the version in this case.
                                    if (plugin.version < data) {
@@ -121,7 +121,8 @@ public:
     void installRemotePlugin(const QString& pluginId)
     {
         parent_.downloadFile(
-            QUrl(parent_.baseUrl + "/download/" + Utils::getPlatformString() + "/" + pluginId),
+            QUrl(parent_.baseUrl + "/download/"
+                 + lrcInstance_->pluginModel().getPlatformInfo()["os"] + "/" + pluginId),
             pluginId,
             0,
             [this, pluginId](bool success, const QString& error) {
diff --git a/src/app/utils.cpp b/src/app/utils.cpp
index cbd725b8748489074a9e6d82ea14791d4b8286b9..57fe7e6aadde58eb19652daaa282d74fce7a94ed 100644
--- a/src/app/utils.cpp
+++ b/src/app/utils.cpp
@@ -931,9 +931,3 @@ Utils::generateUid()
 {
     return QUuid::createUuid().toString(QUuid::Id128);
 }
-
-QString
-Utils::getPlatformString()
-{
-    return "desktop";
-}
diff --git a/src/app/utils.h b/src/app/utils.h
index 6f7bed819deb6f22629d1b22bb9e1dc0e057674d..6e762be25f97d5c49a04d7a7b14bea53fd7e1eb2 100644
--- a/src/app/utils.h
+++ b/src/app/utils.h
@@ -126,6 +126,4 @@ QString generateUid();
 // Misc
 QString humanFileSize(qint64 fileSize);
 QString getDebugFilePath();
-
-QString getPlatformString();
 } // namespace Utils
diff --git a/src/libclient/api/pluginmodel.h b/src/libclient/api/pluginmodel.h
index 2faafeac0f66179caa836493f69e51439702a22e..88bdae9399cc906ba338daa8792134b91163f0a4 100644
--- a/src/libclient/api/pluginmodel.h
+++ b/src/libclient/api/pluginmodel.h
@@ -102,6 +102,7 @@ public:
      */
     QString getPluginPath(const QString& pluginId);
 
+    MapStringString getPlatformInfo();
     /**
      * @brief fetch all plugins path and id
      *
diff --git a/src/libclient/pluginmodel.cpp b/src/libclient/pluginmodel.cpp
index 7afd2acb10eeeb76306810488e416abbe4b40bef..7e80d30c6cfd644ec873552ac9c225c4f9a9c444 100644
--- a/src/libclient/pluginmodel.cpp
+++ b/src/libclient/pluginmodel.cpp
@@ -109,6 +109,12 @@ PluginModel::getPluginDetails(const QString& path)
     return result;
 }
 
+MapStringString
+PluginModel::getPlatformInfo()
+{
+    return PluginManager::instance().getPlatformInfo();
+}
+
 bool
 PluginModel::installPlugin(const QString& jplPath, bool force)
 {
diff --git a/src/libclient/qtwrapper/pluginmanager.cpp b/src/libclient/qtwrapper/pluginmanager.cpp
index cc6c13db407c0d5840bf17d6af995664ae7b5d9e..af74942f2a3c4e874a8f0e76159bcc718570517a 100644
--- a/src/libclient/qtwrapper/pluginmanager.cpp
+++ b/src/libclient/qtwrapper/pluginmanager.cpp
@@ -60,6 +60,12 @@ PluginManagerInterface::uninstallPlugin(const QString& pluginRootPath)
     return libjami::uninstallPlugin(pluginRootPath.toStdString());
 }
 
+MapStringString
+PluginManagerInterface::getPlatformInfo()
+{
+    return convertMap(libjami::getPlatformInfo());
+}
+
 QStringList
 PluginManagerInterface::getCallMediaHandlers()
 {
diff --git a/src/libclient/qtwrapper/pluginmanagerMock.cpp b/src/libclient/qtwrapper/pluginmanagerMock.cpp
index c0194f22cde789cee2a68ec0eea4532c1971f271..4b89113a02c2902fa95a77aa06671dfba7d95ccf 100644
--- a/src/libclient/qtwrapper/pluginmanagerMock.cpp
+++ b/src/libclient/qtwrapper/pluginmanagerMock.cpp
@@ -61,6 +61,12 @@ PluginManagerInterface::uninstallPlugin(const QString& pluginRootPath)
     return 0;
 }
 
+MapStringString
+PluginManagerInterface::getPlatformInfo()
+{
+    return {};
+}
+
 QStringList
 PluginManagerInterface::getCallMediaHandlers()
 {
diff --git a/src/libclient/qtwrapper/pluginmanager_wrap.h b/src/libclient/qtwrapper/pluginmanager_wrap.h
index 9e2a6befc8b3ddf1902b29a9435d9187036c5027..cbf35edfbab626d5989b8e3c3509dcbfc0aa7387 100644
--- a/src/libclient/qtwrapper/pluginmanager_wrap.h
+++ b/src/libclient/qtwrapper/pluginmanager_wrap.h
@@ -58,6 +58,8 @@ public Q_SLOTS: // METHODS
 
     int uninstallPlugin(const QString& pluginRootPath);
 
+    MapStringString getPlatformInfo();
+
     QStringList getCallMediaHandlers();
 
     void toggleCallMediaHandler(const QString& mediaHandlerId, const QString& callId, bool toggle);