Hermes répond déjà, mais tu veux choisir le modèle qui tourne sur ton ordinateur et garder la main sur son serveur. Nous allons relier Hermes à llama-server, le programme de llama.cpp qui reçoit les demandes et renvoie les réponses du modèle.
Le fil conducteur sera simple : demander une courte explication de la différence entre RAM et VRAM, puis vérifier un appel d’outil sans modifier de fichier. Les commandes sont un parcours à reproduire, pas le compte rendu d’un essai exécuté pour cet article.
hermes fonctionne. Sinon, commence par le tutoriel d’installation. Le parcours ci-dessous utilise Linux ou Ubuntu sous WSL, avec Hermes et llama-server dans le même environnement. Nous gardons le profil default ; si tu utilises un autre profil, remplace ce nom dans toutes les commandes Hermes.Hermes propose aussi une gestion intégrée des modèles locaux. Ici, nous suivons le branchement manuel à un serveur que tu lances toi-même. Ce choix permet de comprendre et de régler séparément le serveur et l’agent.
1. Préparer le serveur et le fichier du modèle
Retrouver llama-server
Il te faut le programme llama-server, un fichier de modèle au format GGUF, et curl pour interroger le serveur depuis le terminal. Vérifie d’abord les commandes disponibles :
hermes --version
llama-server --version
curl --version
Si llama-server est introuvable mais déjà installé, utilise son chemin complet à la place de son nom dans la suite. Après une compilation dans ~/llama.cpp, ce chemin est généralement ~/llama.cpp/build/bin/llama-server.
Tu ne l’as pas encore installé ? Les versions officielles de llama.cpp proposent des archives selon le système et le matériel. Choisis une version Linux pour ce parcours sous Ubuntu/WSL, extrais l’archive en conservant ses bibliothèques, puis repère llama-server. Pour compiler ou activer une accélération GPU particulière, suis la procédure officielle de construction, dans la section correspondant à ton matériel. Reviens ici lorsque la commande de version fonctionne. Si c’est curl qui manque, installe le paquet curl avec le gestionnaire de paquets de ta distribution.
Choisir un GGUF compatible
Choisis une variante instruct ou chat, prévue pour répondre à des consignes, et dont la fiche documente les appels d’outils avec llama.cpp. Vérifie aussi le contexte pris en charge : ce parcours utilisera 65 536 tokens. Un token est une unité de texte manipulée par le modèle ; le contexte doit accueillir les instructions d’Hermes, la description des outils, les échanges et la réponse.
Le guide pour choisir un LLM local peut t’aider à sélectionner un modèle. Consulte ensuite sa fiche de téléchargement : compatibilité llama.cpp, taille du GGUF, contexte et format des outils. Le fichier doit tenir en mémoire avec la place supplémentaire nécessaire au contexte ; sa taille sur disque ne suffit pas à prévoir toute la consommation.
Crée un dossier pour tes modèles, puis place le GGUF téléchargé dedans :
mkdir -p "$HOME/models"
ls -lh "$HOME/models"
Cette commande crée le dossier, elle ne télécharge aucun modèle. Si le téléchargement est découpé en plusieurs GGUF, conserve toutes les parties ensemble et utilise la première dans la commande de lancement, conformément à la fiche du modèle.
2. Distinguer le modèle, le serveur et l’agent
Le fichier GGUF contient les poids du modèle. llama.cpp fournit le moteur qui les utilise pour générer du texte. Son programme llama-server charge le modèle et expose une API, une interface à laquelle Hermes peut envoyer ses demandes.
L’adresse http://127.0.0.1:8080/v1 désigne cette API dans notre exemple. 127.0.0.1 renvoie à l’environnement local, 8080 au port choisi et /v1 à la base de l’API compatible OpenAI. Cette compatibilité décrit le format des échanges ; elle ne signifie pas que la demande part chez OpenAI.
Dans cet exemple : Hermes et le serveur dans le même environnement local.
Dans ce branchement manuel, Hermes n’ouvre pas le GGUF : il dialogue avec le serveur. C’est donc llama-server qu’il faut examiner si le modèle ne se charge pas, et la configuration d’Hermes si les demandes partent à une autre adresse.
3. Lancer le serveur avec un contexte explicite
Ouvre un premier terminal. Dans la commande suivante, remplace /chemin/complet/ton-modele.gguf par le chemin de ton fichier, en gardant les guillemets. Remplace aussi llama-server par son chemin complet si nécessaire.
Nous donnons au modèle le nom d’API modele-local. C’est un alias, un nom pratique pour le désigner dans Hermes ; il ne renomme pas ton fichier.
llama-server \
-m "/chemin/complet/ton-modele.gguf" \
--alias modele-local \
--host 127.0.0.1 --port 8080 \
--ctx-size 65536 --parallel 1 \
--jinja
Le serveur reste attaché à ce terminal : laisse-le ouvert pendant les essais. Lis ses messages de chargement et vérifie qu’il écoute sur le port prévu. Un échec d’allocation mémoire ou une erreur de fichier doit être résolu ici.
Les réglages ont chacun un rôle :
| Réglage | Ce qu’il fixe pour cet essai |
|---|---|
--host 127.0.0.1 | Une écoute locale, dans le même environnement qu’Hermes. |
--port 8080 | Le port repris dans toutes les adresses du parcours. |
--ctx-size 65536 | Le contexte alloué par le serveur, à faire correspondre au réglage d’Hermes. |
--parallel 1 | Un seul emplacement de traitement, pour ne pas répartir ce contexte entre plusieurs sessions. |
--jinja | Le traitement du modèle de conversation utilisé notamment pour les appels d’outils ; le modèle choisi doit lui aussi les prendre en charge. |
La documentation Hermes demande au moins 64 000 tokens par session active pour ce branchement. La valeur retenue ici suppose un modèle compatible et assez de mémoire. Si elle ne tient pas, choisis un modèle ou une quantification moins volumineux, ou revois la configuration matérielle. Annoncer un grand contexte à Hermes ne l’ajoute pas au serveur.
L’utilisation du GPU dépend de ta version de llama.cpp et de ses bibliothèques. Les journaux indiquent où les couches sont chargées. Le réglage --n-gpu-layers permet d’ajuster leur placement si ton installation le prend en charge ; il ne transforme pas une version CPU en version CUDA. Commence par vérifier le fonctionnement de la version installée avant d’optimiser ses performances.
4. Vérifier l’API avant de passer à Hermes
Dans un deuxième terminal du même environnement, interroge son état :
curl -i http://127.0.0.1:8080/health
Le résultat attendu est un code HTTP 200 avec {"status":"ok"}. Un code 503 accompagné de Loading model indique que le chargement n’est pas terminé. Une erreur de connexion signifie que le serveur n’est pas joignable à cette adresse.
Vérifie ensuite le nom du modèle proposé par l’API :
curl -fsS http://127.0.0.1:8080/v1/models
Dans la réponse JSON, repère l’identifiant id du modèle. Avec notre commande, tu dois retrouver modele-local. Si tu utilises un serveur déjà configuré avec un autre nom, conserve l’identifiant qu’il renvoie réellement.
5. Configurer le même profil Hermes
Dans le deuxième terminal, lance le sélecteur de modèle :
hermes -p default model
Choisis Custom endpoint, l’option destinée à une API que tu fournis. Son intitulé complet peut varier selon la version. Renseigne les valeurs suivantes :
| Champ | Valeur pour notre serveur |
|---|---|
| Adresse de base / Base URL | http://127.0.0.1:8080/v1 |
| Clé API | Laisse vide si l’assistant le permet : notre commande serveur n’active pas d’authentification. Si le client exige une valeur non vide, un texte comme local-key sert uniquement de valeur de remplacement. |
| Modèle | modele-local, ou l’identifiant exact relevé dans /v1/models. |
| Contexte, si demandé | 65536, correspondant au serveur lancé avec un seul emplacement. |
La clé de remplacement n’ajoute aucune protection au serveur. Si tu utilises une installation qui exige déjà une véritable clé API, fournis cette clé à Hermes.
Garde /v1 dans l’adresse de base ; n’y ajoute pas /chat/completions, qui désigne une requête particulière. Une fois le choix enregistré, consulte la configuration :
hermes -p default config show
Repère l’adresse et le modèle du profil. Si tu avais déjà configuré des fournisseurs de secours ou des modèles auxiliaires, vérifie-les aussi : le modèle principal local ne rend pas automatiquement toute l’installation hors ligne. Pour comprendre ces réglages, consulte le tutoriel sur la configuration.
6. Observer un premier échange complet
Garde le terminal serveur visible et ouvre une nouvelle conversation avec le profil configuré :
hermes -p default chat
Envoie cette demande :
Au même moment, regarde les journaux de llama-server : tu dois y retrouver le traitement de la requête. Compare aussi le modèle annoncé par la session avec celui choisi à l’étape précédente. L’activité du GPU, prise isolément, ne permet pas d’identifier la destination d’une requête.
7. Vérifier un appel d’outil sans écrire de fichier
Un agent doit aussi pouvoir demander une action et exploiter son résultat. Pour ce premier contrôle, nous allons seulement faire afficher le dossier courant avec pwd.
Dans un autre terminal, ouvre la sélection des outils du même profil :
hermes -p default tools
Vérifie que l’outil terminal est disponible. Si tu modifies la sélection, quitte la conversation de l’étape 6 et ouvre-en une nouvelle avec hermes -p default chat. Cet outil donne un accès plus large qu’à la seule commande pwd : garde les permissions adaptées à ton installation. Notre consigne limite l’essai, elle ne constitue pas une restriction du système.
Observe la trace : elle doit montrer un appel de l’outil terminal, son résultat, puis une réponse cohérente avec ce résultat. Du JSON affiché dans le texte ou une affirmation « j’ai exécuté pwd » sans appel visible ne suffit pas.
Le dossier renvoyé appartient à l’environnement d’exécution du terminal. Avec Docker ou SSH configuré dans Hermes, il peut différer du dossier depuis lequel tu as ouvert la conversation ; le tutoriel sur les lieux d’exécution explique cette distinction.
Retrouver la cause d’un blocage
| Ce que tu observes | Le premier contrôle utile |
|---|---|
Connexion refusée avec curl | Le processus serveur est-il toujours actif, au bon port et dans le même environnement ? |
/health reste en chargement ou le serveur s’arrête | Lire la fin des journaux : fichier incomplet, modèle non pris en charge, mémoire insuffisante. |
| Modèle introuvable dans Hermes | Comparer le nom configuré avec l’id renvoyé par /v1/models. |
| Erreur de contexte | Vérifier la capacité du modèle, le contexte du serveur et celui déclaré à Hermes. |
| Hermes répond sans requête vers llama-server | Vérifier le profil actif, son fournisseur et un éventuel fournisseur de secours. |
| Un appel d’outil apparaît sous forme de texte | Vérifier --jinja, le format de conversation du GGUF, la compatibilité du modèle et les outils activés. |
| Une réponse met longtemps à arriver | Lire les journaux de traitement et la répartition CPU/GPU avant de relancer. |
127.0.0.1, selon le mode réseau. Sur un VPS, cette adresse désigne le VPS. Consulte les repères réseau WSL de la documentation Hermes avant d’adapter les adresses ; ouvrir le serveur sur toutes les interfaces n’est pas nécessaire pour notre essai local.Garder une configuration facile à reprendre
Note le fichier GGUF utilisé, la version de llama.cpp, la commande de lancement et le profil Hermes. À la prochaine session, relance d’abord le serveur, vérifie /health, puis ouvre Hermes. Pour arrêter le serveur lancé au premier plan, utilise Ctrl+C dans son terminal ; les nouvelles demandes ne pourront plus y être traitées.
Tu peux maintenant poursuivre avec la lecture de la configuration Hermes, puis les outils utiles pour démarrer. Garde le même modèle pendant ces premiers essais : tu sauras plus facilement si un changement vient du serveur, d’un réglage ou de l’outil utilisé.
Sources et lectures utiles
- Fournisseurs et serveurs locaux dans Hermes : connexion à llama.cpp, contexte, appels d’outils et réseau WSL.
- Référence du serveur llama.cpp : options de lancement, alias, état du serveur et API.
- Construction de llama.cpp : installation depuis les sources et accélération selon le matériel.
- Gestion intégrée des modèles locaux dans Hermes : autre parcours, distinct du serveur piloté manuellement ici.
Révision pédagogique du 8 novembre 2026. Commandes et distinctions recoupées avec les sources officielles ; parcours non exécuté pour cet article.