IA : Xbot
XorMon propose son propre modèle de langage pour XBot, xbot-trained-v1, destiné aux installations qui ne doivent envoyer
aucune donnée à un fournisseur cloud.
Il s’agit de Qwen3.5-9B affiné sur les outils propres à XorMon. Il s’exécute sur votre serveur dans
Ollama. Ollama n’est que le programme qui exécute le modèle ; le modèle lui-même ne figure pas dans
le catalogue d’Ollama, vous le téléchargez chez nous.
nvidia-smi doit lister la carte) et environ 25 Go d’espace disque libre.sudo).Téléchargez xbot-trained-v1.
Le téléchargement contient :
model-12m4b-q8_0.gguf : le modèle (9 786 060 160 octets)Modelfile : la façon dont Ollama crée le modèlexbot-warmup.json : une première requête qui charge en mémoire les instructions de XBot et ses 41 outilsSHA256SUMS : sommes de contrôleCopiez les fichiers dans un même répertoire sur le serveur GPU, par exemple /opt/xbot-trained-v1, et vérifiez-les à cet endroit :
cd /opt/xbot-trained-v1
sha256sum -c SHA256SUMS
Chaque ligne doit se terminer par OK.
Si Ollama n’est pas encore installé (voir ollama.com/download) :
curl -fsSL https://ollama.com/install.sh | sh
ollama --version
Le programme d’installation crée le service ollama.service. La version doit être 0.34.4 ou plus récente.
Ne modifiez pas ollama.service lui-même : une mise à niveau d’Ollama l’écrase. Placez les réglages dans un fichier de surcharge :
mkdir -p /etc/systemd/system/ollama.service.d
cat > /etc/systemd/system/ollama.service.d/override.conf <<'EOF'
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="LLAMA_ARG_CHECKPOINT_MIN_SPACING_NT=1024"
Environment="OLLAMA_GO_TEMPLATE=1"
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="OLLAMA_MAX_LOADED_MODELS=1"
Environment="OLLAMA_NUM_PARALLEL=1"
Environment="OLLAMA_FLASH_ATTENTION=1"
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
EOF
systemctl daemon-reload
systemctl restart ollama
systemctl show ollama -p Environment
La dernière commande doit afficher toutes les variables ci-dessus. Si ce n’est pas le cas, le service ne les utilise pas : le modèle est déchargé au bout d’un moment, ou les longues instructions de XBot sont tronquées.
Rôle des réglages :
OLLAMA_HOST=0.0.0.0:11434 : Ollama écoute sur toutes les adresses du serveur, afin que XorMon puisse le joindre.
Ollama n’a pas de mot de passe : quiconque atteint le port peut utiliser le modèle. N’autorisez le port 11434 que depuis le
serveur XorMon (voir Sécurité). Si XorMon s’exécute sur le même serveur, utilisez
127.0.0.1:11434 à la place.LLAMA_ARG_CHECKPOINT_MIN_SPACING_NT=1024 : Ollama réutilise d’une question à l’autre les instructions déjà traitées
au lieu de les relire. Sans cela, chaque question est plus lente.OLLAMA_GO_TEMPLATE=1 : Ollama utilise le modèle de formatage issu du Modelfile. Sans cela, le modèle reçoit ses
entrées sous une forme différente de celle sur laquelle il a été entraîné et répond mal.OLLAMA_KEEP_ALIVE=-1 : le modèle reste en permanence dans la mémoire GPU.OLLAMA_MAX_LOADED_MODELS=1 et OLLAMA_NUM_PARALLEL=1 : une seule copie du modèle, une seule question
à la fois. Davantage de copies ne tiennent pas dans la mémoire GPU.OLLAMA_FLASH_ATTENTION=1 et OLLAMA_KV_CACHE_TYPE=q8_0 : économisent la mémoire GPU. Nécessaires sur une carte de 16 Go ;
sur une carte de 24 Go ou plus, vous pouvez omettre ces deux lignes.cd /opt/xbot-trained-v1
ollama create xbot-trained-v1 -f Modelfile
ollama list
Le nom doit être exactement xbot-trained-v1 (une étiquette telle que xbot-trained-v1:latest convient).
XorMon reconnaît le modèle à ce nom et lui envoie les instructions sous la forme sur laquelle il a été entraîné. Sous tout autre
nom, le modèle reçoit les instructions génériques de XorMon et répond mal.
Le Modelfile définit le modèle de formatage et un contexte de 65 536 jetons. N’abaissez pas le contexte : les instructions de XBot seraient tronquées et le modèle ne verrait pas ses outils.
La première question après un démarrage est lente, car le modèle doit lire les longues instructions de XBot et les descriptions de ses 41 outils. Une requête de préchauffage s’en charge juste après le démarrage du serveur, si bien que la première vraie question est rapide.
Copiez la requête de préchauffage et créez le script :
install -d /usr/local/share/xbot-trained-v1
cp /opt/xbot-trained-v1/xbot-warmup.json /usr/local/share/xbot-trained-v1/
cat > /usr/local/bin/xbot-trained-v1-warmup.sh <<'EOF'
#!/bin/bash
for _ in $(seq 1 60); do
curl -sf http://127.0.0.1:11434/api/version >/dev/null && break
sleep 1
done
curl -sf http://127.0.0.1:11434/api/chat \
-H "Content-Type: application/json" \
--data-binary @/usr/local/share/xbot-trained-v1/xbot-warmup.json \
-o /var/lib/xbot-trained-v1-warmup.json
EOF
chmod 755 /usr/local/bin/xbot-trained-v1-warmup.sh
Créez le service qui l’exécute après le démarrage d’Ollama :
cat > /etc/systemd/system/xbot-trained-v1-warmup.service <<'EOF'
[Unit]
Description=Warm up xbot-trained-v1 after Ollama starts
After=ollama.service
Requires=ollama.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/xbot-trained-v1-warmup.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now xbot-trained-v1-warmup.service
Vérification :
ollama ps
Le modèle xbot-trained-v1 doit apparaître avec 100% GPU, un contexte de 65536 et UNTIL
Forever. Si PROCESSOR indique une part CPU, le modèle n’a pas tenu dans la mémoire GPU et les réponses sont lentes.
Le préchauffage s’exécute au démarrage du serveur. Si vous ne redémarrez qu’Ollama, lancez-le manuellement :
systemctl restart xbot-trained-v1-warmup.service
Interface ➡ Settings ➡ Application ➡ AI ➡ XBot AI Chat :
http://<gpu-server>:11434/api/chat (http://<gpu-server>:11434
fonctionne aussi)xbot-trained-v1Enregistrez, puis appuyez sur Test. La question de test « How many devices does XorMon monitor ? » doit indiquer que la réponse correspond à XorMon.
ufw allow from <xormon-ip> to any port 11434 proto tcp
ufw deny 11434/tcp
Téléchargez les nouveaux fichiers, vérifiez-les avec sha256sum -c SHA256SUMS, puis recréez le modèle sous le
même nom et préchauffez-le :
cd /opt/xbot-trained-v1
ollama create xbot-trained-v1 -f Modelfile
systemctl restart ollama
systemctl restart xbot-trained-v1-warmup.service
Rien ne change dans XorMon.
ollama ps indique une part CPU : le modèle ne tient pas dans la mémoire GPU.
Vérifiez que les deux lignes d’économie de mémoire figurent dans le fichier de surcharge et qu’aucun autre modèle n’est chargé
(ollama ps).xbot-trained-v1) et que systemctl show ollama -p Environment liste bien
OLLAMA_GO_TEMPLATE=1.curl http://<gpu-server>:11434/api/version. Une absence de réponse signale un pare-feu, une mauvaise adresse, ou
OLLAMA_HOST positionné sur 127.0.0.1.journalctl -u ollama ; XorMon : server-nest/logs/pyxbot-agent.log
et server-nest/logs/pyxbot-agent-error.log.XorMon 2.4.0 apporte un XBot nettement enrichi, un chat IA intégré à XorMon.
Vous posez vos questions en langage courant (« Quelles VM ont le plus consommé de CPU hier ? », « Affiche la capacité de tous les pools de stockage en TB ») et XBot répond avec des tableaux, des valeurs, des graphiques et des liens vers les pages de XorMon.
Le chat IA et MCP s’exécutent dans l’agent XBot, un service Python que XorMon démarre à côté de lui (il écoute uniquement sur 127.0.0.1:8610).
apt install python3-venv). cd ~/xormon-ng/server-nest python3 -m venv pyxbotagent/.venv pyxbotagent/.venv/bin/python -m pip install -r pyxbotagent/requirements.txt
Si python3 --version est antérieur à 3.11, créez l’environnement avec une version plus récente, par exemple python3.11 -m venv pyxbotagent/.venv.
Après un redémarrage, XorMon démarre l’agent automatiquement.
server-nest/logs/pyxbot-agent.log et server-nest/logs/pyxbot-agent-error.log.Interface ➡ Settings ➡ Application ➡ AI ➡ XBot AI Chat : activez « AI chat enabled », choisissez le fournisseur, l’endpoint, la clé API et le modèle, enregistrez, puis appuyez sur Test (cela vérifie que le chat peut utiliser le modèle).
Fournisseurs pris en charge : Anthropic (Claude), OpenAI, Ollama (auto-hébergé), DeepSeek et WatsonX. Le modèle doit prendre en charge l’appel d’outils.
XBot effectue la lecture, le filtrage et les calculs dans son propre code. Le modèle choisit les outils et rédige les phrases. C’est pourquoi un modèle petit et rapide suffit pour la plupart des questions :
XorMon expose ses outils XBot via le Model Context Protocol (MCP).
Un client IA que vous utilisez déjà, comme Cursor, VS Code avec GitHub Copilot, Claude Code, Claude Desktop ou Codex, peut alors interroger XorMon sur votre infrastructure. Il voit exactement ce que votre utilisateur XorMon a le droit de voir.
https://<xormon>/api/public/v1/llm/mcp. La même page de réglages l’affiche, prête à copier, sous Client JSON.Le client envoie la clé dans l’en-tête HTTP apiKey.
Une quarantaine d’outils couvrent les objets et la recherche, les métriques, les alertes et la santé, les relations et la topologie, les résultats et les sélections, ainsi que l’aide. La liste actuelle, avec la description de chaque outil, se trouve dans interface ➡ Settings ➡ Application ➡ AI (MCP ➡ Tools ➡ show), et tout client MCP les liste après connexion.
apiKey. Cela nécessite un certificat auquel le client fait confiance, voir Certificat.npx mcp-remote, elle nécessite Node.js). Utilisez-la pour Claude Desktop, et pour tout client tant que XorMon conserve son certificat auto-signé par défaut.Fichier ~/.cursor/mcp.json (tous les projets) ou .cursor/mcp.json (un seul projet) :
{
"mcpServers": {
"xormon": {
"url": "https://<xormon>/api/public/v1/llm/mcp",
"headers": { "apiKey": "<your-api-key>" }
}
}
}
Il s’agit du Client JSON de la page de réglages XorMon. Avec le certificat auto-signé par défaut, placez plutôt dans ce même fichier la forme mcp-remote décrite dans Claude Desktop.
Documentation Cursor : https://cursor.com/docs/mcp
Fichier .vscode/mcp.json dans l’espace de travail, ou exécutez MCP : Open User Configuration pour tous les espaces de travail. VS Code demande la clé une fois et la garde hors du fichier :
{
"inputs": [
{ "type": "promptString", "id": "xormon-api-key", "description": "XorMon API key", "password": true }
],
"servers": {
"xormon": {
"type": "http",
"url": "https://<xormon>/api/public/v1/llm/mcp",
"headers": { "apiKey": "${input:xormon-api-key}" }
}
}
}
Utilisez les outils dans Copilot Chat en mode Agent. Avec le certificat auto-signé par défaut, définissez le serveur avec "type": "stdio" et les clés command, args et env de Claude Desktop.
Documentation VS Code : https://code.visualstudio.com/docs/agent-customization/mcp-servers
%USERPROFILE%\.mcp.json (toutes les solutions) ou .mcp.json dans le dossier de la solution, avec le même bloc "servers" que pour VS Code et la clé inscrite dans "headers".mcp.json depuis les réglages de Copilot. Les en-têtes se placent sous requestInit :{
"servers": {
"xormon": {
"url": "https://<xormon>/api/public/v1/llm/mcp",
"requestInit": { "headers": { "apiKey": "<your-api-key>" } }
}
}
}
Documentation : https://learn.microsoft.com/en-us/visualstudio/ide/mcp-servers et https://docs.github.com/en/copilot/how-tos/provide-context/use-mcp/extend-copilot-chat-with-mcp (couvre aussi Eclipse et Xcode).
claude mcp add --transport http xormon https://<xormon>/api/public/v1/llm/mcp --header "apiKey: <your-api-key>"
Vérifiez avec claude mcp list. Avec le certificat auto-signé par défaut, ajoutez plutôt le serveur via mcp-remote, afin que le réglage ne s’applique qu’à ce serveur :
claude mcp add --env NODE_TLS_REJECT_UNAUTHORIZED=0 --transport stdio xormon -- npx -y mcp-remote https://<xormon>/api/public/v1/llm/mcp --header apiKey:<your-api-key> --transport http-only
Documentation Claude Code : https://code.claude.com/docs/en/mcp
Ouvrez interface ➡ Settings ➡ Developer ➡ Edit Config. Le fichier est ~/Library/Application Support/Claude/claude_desktop_config.json sous macOS et %APPDATA%\Claude\claude_desktop_config.json sous Windows :
{
"mcpServers": {
"xormon": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://<xormon>/api/public/v1/llm/mcp",
"--header", "apiKey:<your-api-key>",
"--transport", "http-only"
],
"env": { "NODE_TLS_REJECT_UNAUTHORIZED": "0" }
}
}
}
Omettez la ligne env dès que XorMon dispose d’un certificat de confiance. Quittez ensuite complètement Claude Desktop et relancez-le. Les Connectors de Claude (Customize ➡ Connectors) ne peuvent pas joindre XorMon, voir Non pris en charge.
Documentation : https://modelcontextprotocol.io/docs/develop/connect-local-servers et https://github.com/geelen/mcp-remote
La CLI Codex et son extension VS Code partagent ~/.codex/config.toml :
[mcp_servers.xormon]
url = "https://<xormon>/api/public/v1/llm/mcp"
env_http_headers = { "apiKey" = "XORMON_API_KEY" }
Codex lit la clé dans la variable d’environnement XORMON_API_KEY. Pour conserver la clé dans le fichier, écrivez plutôt http_headers = { "apiKey" = "<your-api-key>" }.
Avec le certificat auto-signé par défaut :
[mcp_servers.xormon]
command = "npx"
args = ["-y", "mcp-remote", "https://<xormon>/api/public/v1/llm/mcp", "--header", "apiKey:<your-api-key>", "--transport", "http-only"]
[mcp_servers.xormon.env]
NODE_TLS_REJECT_UNAUTHORIZED = "0"
Sous Windows, écrivez command = "C:\\Program Files\\nodejs\\npx.cmd".
Documentation Codex : https://learn.chatgpt.com/docs/extend/mcp?surface=cli
apiKey.npx -y mcp-remote https://<xormon>/api/public/v1/llm/mcp --header apiKey:<your-api-key> --transport http-onlyLe certificat par défaut de XorMon est auto-signé et émis pour localhost. Un client qui se connecte par adresse IP ou par nom d’hôte le refuse.
NODE_TLS_REJECT_UNAUTHORIZED=0. Cela désactive la vérification du certificat pour ce pont uniquement. À n’utiliser que sur un réseau de confiance.npx.C:\Program Files\nodejs\npx.cmd ; c’est le cas de Codex.apiKey:<your-api-key>. Sur Windows, Cursor, Codex et Claude Desktop ne gèrent pas les arguments contenant des espaces.Les connecteurs cloud, c’est-à-dire les Claude Connectors (claude.ai, Customize ➡ Connectors) et les connecteurs ChatGPT, appellent le serveur depuis le cloud de l’éditeur.
Un XorMon situé sur le réseau de votre entreprise n’est pas joignable depuis là, et ces connecteurs ne proposent pas l’en-tête apiKey.
Utilisez un client qui s’exécute sur votre ordinateur.
inputs pour VS Code, env_http_headers pour Codex.Le point d’accès MCP conserve son adresse (/api/public/v1/llm/mcp) et l’en-tête apiKey, mais depuis la 2.4.0 il expose les outils de l’agent XBot (environ 40) au lieu des 12 outils de l’ancien serveur intégré.
-k ignore la vérification du certificat pour ce seul test) :curl -k -X POST https://<xormon>/api/public/v1/llm/mcp -H "apiKey: <your-api-key>" -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Une liste JSON d’outils signifie que l’adresse et la clé fonctionnent.
application/json et text/event-stream.claude mcp list dans Claude Code ; Claude Desktop écrit mcp*.log dans ~/Library/Logs/Claude (macOS) ou %APPDATA%\Claude\logs (Windows).![]() |
![]() |