Hermesone : Installer et mettre à jour Hermes One
hermesone (v0.2.0) est le package npm qui installe et met à jour l'app desktop Hermes One. Il détecte l'OS/arch de l'hôte, télécharge la release GitHub correspondante, vérifie sa somme de contrôle sha512, et l'installe — sur macOS l'app signée se place directement dans /Applications, prête à être lancée (sans étape de drag). Il fournit une CLI et une API programmatique.
⚠️ Ceci installe et exécute du code natif tiers sur la machine de l'utilisateur. Le package atténue ce risque — il vérifie chaque téléchargement contre le manifeste sha512 de l'éditeur (et refuse d'exécuter une build non vérifiée), et dans un terminal interactif il demande une confirmation d'abord — mais installer un logiciel reste une action au niveau de l'hôte. Voir Sécurité et approbation.
- Site officiel : https://hermesone.org
- Dépôt du package : https://github.com/hermesonehq/hermesonejs
- App releases provenant de :
fathah/hermes-desktop(GitHub releases)
Nommage : l'app s'appelle Hermes One (anciennement "Hermes Desktop"). Le dépôt GitHub depuis lequel elle est release s'appelle toujours
fathah/hermes-desktop, et le bundle macOS installé estHermes One.app— vous verrez donc les deux noms. Utilisez "Hermes One" auprès des utilisateurs ; le slughermes-desktopc'est juste l'endroit où vivent les assets de release.
Pourquoi ça se trouve dans Bankr Skills. Hermes One se construit vers une économie d'agents, avec Bankr comme couche de transaction primaire pour les paiements d'agents. Cette skill est le point d'entrée : elle fait installer et maintenir à jour Hermes One sur l'hôte afin qu'un agent puisse participer. Aujourd'hui le package fait install/update/version uniquement — pas de comptes, clés, ou actions onchain. Les transactions settlées par Bankr et les hooks d'économie d'agents sont sur la roadmap et seront documentés ici à leur sortie.
Sécurité et approbation
Installer ou mettre à jour Hermes One modifie l'hôte. Le package impose deux garde-fous pour vous : il vérifie la sha512 avant d'installer (fail-closed — il refuse si aucune somme publiée n'est trouvée), et sur un terminal interactif il affiche un prompt de confirmation avec la release, la taille, et le statut de checksum. Respectez quand même ces règles :
- Exigez une approbation explicite de l'utilisateur avant toute installation ou mise à jour. Ne déclenchez jamais l'une silencieusement comme effet secondaire d'une autre tâche ou d'un workflow autonome.
- En contextes non-interactifs/agents, le prompt de confirmation est ignoré (et
--yesfait la même chose). Là, vous êtes la porte d'approbation : exécutez d'abordhermesone plan, montrez à l'utilisateur la release/asset/taille/sha512 résolue, obtenez un oui, puis exécutezinstall. - Ne contournez pas la vérification. Ne définissez
HERMESONE_ALLOW_UNVERIFIED=1que si l'utilisateur accepte explicitement d'installer une build sans somme publiée. - Épinglez ce que vous installez (
@0.2.0pour le package ; une release tag pour l'app) quand la reproducibilité compte — voir Épinglage.
Flux recommandé
Installer le package npm n'installe plus l'app comme effet secondaire (voir Comportement postinstall). Le chemin propre est : installer la CLI, prévisualiser, puis installer sur confirmation.
# 1. Installez la CLI (pas de changement hôte — l'app n'est pas encore installée).
npm install -g hermesone@0.2.0
# 2. Prévisualisez la release exacte qui serait installée.
hermesone plan
# 3. Installez. Les terminaux interactifs affichent un prompt de confirmation + la progression en direct ;
# les contextes non-interactifs procèdent (ajoutez --yes pour être explicite) et impriment des lignes simples.
hermesone install
hermesone update est sûr à exécuter à répétition — il no-ops quand déjà à jour et télécharge uniquement quand une release plus récente existe.
Prévisualiser une release
hermesone plan [tag] résout et affiche ce qui serait installé — tag de release, asset, taille, et la sha512 attendue — sans télécharger ni installer quoi que ce soit. Utilisez-le pour montrer à l'utilisateur avant de lui demander d'approuver une installation.
Référence CLI
hermesone <command> [tag]
| Commande | Description |
|---|---|
install [tag] |
Télécharger, vérifier (sha512), et installer Hermes One — dernière version, ou une release tag épinglée. |
update [tag] |
Mettre à jour Hermes One si une release plus récente existe (no-op quand à jour). |
plan [tag] |
Afficher ce qui serait téléchargé (tag, asset, taille, checksum attendu). Aucune modification. |
version |
Afficher la version installée d'Hermes One, ou un message "non installé". |
help |
Afficher l'utilisation. |
| Flag / Env | Effet |
|---|---|
-y, --yes |
Ignorer le prompt de confirmation (pour installs non-interactives/scriptées). |
HERMESONE_VERSION=<tag> |
Épingler la release tag (identique à l'argument [tag]). |
HERMESONE_ALLOW_UNVERIFIED=1 |
Procéder même si aucune somme publiée n'est trouvée. Non recommandé. |
Dans un terminal interactif, install affiche une boîte de confirmation, une barre de progression de téléchargement en direct, et le statut par étape (resolve → download → verify → install). En contexte non-interactif il affiche des lignes de statut simples et ne bloque jamais. La couleur respecte NO_COLOR.
Ce qui s'installe par OS
| OS | Artifact | Comportement |
|---|---|---|
| macOS | *-mac.zip (signée) |
Vérifiée, décompressée, installée dans /Applications (ou ~/Applications), puis lancée — sans drag. Les mises à jour remplacent sur place. |
| Windows | *-setup.exe |
Vérifiée, puis l'installateur est lancé. |
| Linux | *.AppImage |
Vérifiée, marquée executable, puis lancée. |
Épingler une release spécifique
install/update utilisent la dernière release par défaut. Pour installer une build connue, passez un tag ou définissez la var env :
hermesone install v0.6.35
HERMESONE_VERSION=v0.6.35 hermesone install
Vérification de checksum (intégrée)
Chaque téléchargement est vérifié contre la sha512 en base64 publiée dans le manifeste electron-builder de la release (latest-mac.yml / latest.yml / latest-linux.yml). En cas de désaccord le fichier est supprimé et rien n'est installé. Si une release ne publie aucune somme pour l'asset, install refuse sauf si HERMESONE_ALLOW_UNVERIFIED=1 est défini. Vous n'avez pas besoin de vérifier manuellement — surfacez le résultat de plan à l'utilisateur et laissez le package l'imposer.
API programmatique
import { plan, install, update, getInstalledVersion } from "hermesone";
// Prévisualiser sans télécharger — montrez-le à l'utilisateur pour approbation.
const p = await plan(); // { tag, asset, url, size, sha512 }
// Installer (vérifie sha512 avant d'installer). Épinglez optionnellement un tag, et/ou
// abonnez-vous aux événements de progression pour afficher votre propre UI.
await install({
tag: "v0.6.35",
onProgress: (e) => console.log(e.phase), // resolve|download|verify|extract|launch|installed...
});
await update(); // no-op si déjà à jour
const current = await getInstalledVersion(); // p.ex. "0.6.35", ou null
Aussi exportés : fetchRelease, parseChecksums, selectAsset, getTarget, isNewer, et les types Release, ReleaseAsset, State, Target, InstallOptions, InstallPlan, ProgressEvent. La librairie n'affiche rien d'elle-même — tout output est piloté par votre handler onProgress.
Suivi de version
- La version installée est d'abord détectée à partir de l'app sur disque. Sur macOS ceci lit
CFBundleShortVersionStringdeHermes One.app/Contents/Info.plist(/Applicationset~/Applications), donc les installs manuels sont reconnus aussi. - Sinon elle retombe à
~/.hermesone/state.json, écrit après chaque install/update effectué par cet outil. versionretournenull(CLI affiche "Hermes One is not installed.") quand aucune source ne produit une version.
Comportement postinstall
npm install hermesone ne télécharge ni ne lance l'app — exécuter un installateur comme effet secondaire silencieux de npm install est surprenant, donc c'est opt-in. Après installation du package il affiche la prochaine étape (npx hermesone install). Contrôles :
Env (défini avant npm install) |
Effet |
|---|---|
| (aucun) | Affiche des conseils ; n'installe pas l'app. |
HERMESONE_AUTO_INSTALL=1 |
Exécute l'installation automatiquement lors du postinstall. |
HERMESONE_SKIP_INSTALL=1 |
Réduit au silence l'avis postinstall entièrement. |
Dépannage
| Symptôme | Cause / solution |
|---|---|
No published checksum found for <asset> |
La release n'a aucune entrée de manifeste sha512 pour cet asset. Préférez une release qui en a ; contournez uniquement avec HERMESONE_ALLOW_UNVERIFIED=1 si l'utilisateur l'accepte. |
Checksum mismatch for <asset> |
Le téléchargement ne correspondait pas à la sha512 publiée — le fichier a été supprimé et rien n'a été installé. Réessayez ; si ça persiste, la release/asset peut être compromise ou corrompue. |
Failed to fetch release ...: 403 |
Rate limit GitHub API (non authentifié). Attendez et réessayez. |
No Hermes One build available for <platform>/<arch> |
La release n'a aucun asset pour cet OS/arch. Vérifiez la page releases. |
| Le prompt n'est pas apparu / ça a juste procédé | Pas un TTY (CI, pipe, agent). C'est normal — ça fonctionne non-interactivement. Utilisez plan d'abord pour gater, ou --yes pour être explicite. |
version dit non installé après une installation manuelle |
Uniquement macOS auto-détecte depuis disque. Sur Windows/Linux, installez une fois via cet outil afin que ~/.hermesone/state.json soit écrit. |
Notes et garde-fous
- Exécution de code au niveau de l'hôte. Install/update téléchargent une build native depuis
fathah/hermes-desktopet l'exécutent. Le package vérifie sha512 et (interactivement) demande, mais exécutez-le uniquement sur l'intention explicite de l'utilisateur — jamais automatiquement depuis un workflow d'agent. - Prévisualisez, puis installez. Utilisez
planpour afficher la release/asset/taille/sha512 ; en contextes non-interactifs cette prévisualisation est votre porte d'approbation. - Pas de credentials. L'outil n'a besoin d'aucune clé API ni compte et n'effectue aucune action onchain ou de paiement.