v0.2Local-first

Documentation Xytherion

Tout ce qu'il faut savoir pour installer, configurer et tirer le meilleur de Xytherion — la plateforme de monitoring de serveurs 100% locale.

01

Introduction

Xytherion est une plateforme de monitoring de serveurs conçue pour ceux qui refusent de confier leurs données d'infrastructure à un tiers. Elle collecte, analyse et visualise l'état de vos machines en temps réel — CPU, mémoire, disque, réseau, processus, ports, connexions — sans jamais sortir de votre réseau local.

Pas de compte à créer, pas d'abonnement, pas de données qui partent vers le cloud. Ce qui se passe sur vos serveurs reste sur vos serveurs.

Ce que Xytherion surveille

  • ✓CPU — Charge par cœur, pourcentage global, tendance
  • ✓Mémoire — RAM, cache, swap, pourcentage d'utilisation
  • ✓Disque — Espace utilisé, vitesse de lecture/écriture, IOPS
  • ✓Réseau — Bande passante montante/descendante en Mo/s
  • ✓Processus — Top CPU/RAM, anomalies comportementales
  • ✓Ports — Tous les ports en écoute, classification risque
  • ✓Connexions TCP — Connexions établies en temps réel
  • ✓SSH — Historique des dernières connexions entrantes
  • ✓Pare-feu — macOS (pf, pare-feu applicatif) · Linux (ufw, firewalld, nftables, iptables)
  • ✓HTTP — Latence, statut, expiration SSL des sites surveillés
  • ✓Historique — Moyenne par minute conservée 7 jours, même après un redémarrage
02

Philosophie

La plupart des outils de monitoring modernes fonctionnent selon le même schéma : vos métriques sont envoyées vers des serveurs distants, agrégées dans une base de données centrale, puis renvoyées vers votre navigateur via une API. Vous ne contrôlez pas où vos données vont, ni combien de temps elles sont conservées.

Xytherion prend le chemin inverse. L'agent tourne directement sur la machine à surveiller. Le dashboard s'y connecte en direct. Aucun intermédiaire. C'est le modèle de Zabbix ou Prometheus, mais sans base de données à déployer, sans YAML de 300 lignes, sans conteneurs.

100% Local

Aucune donnée ne quitte votre réseau

Zéro dépendance

Un seul binaire Go, aucune installation préalable

Temps réel

SSE à 1 seconde d'intervalle, aucun polling

03

Architecture

Le système repose sur deux composants distincts qui communiquent directement sur votre réseau local.

Serveur AAgent Xytherion:9001Agent XytherionServeur B · :9001SSEDashboardIntégré à l'agentVue d'ensembleSécurité · RéseauAlertes · Replaylocalhost:9001UDP broadcast · :9002NavigateurInterface temps réelGraphs · Alertes · ReplayDNA · Time CapsuleHTTP

L'agent (xytherion)

Un binaire Go compilé statiquement qui tourne sur chaque machine à surveiller. Il collecte les métriques toutes les secondes via gopsutil, les pousse dans un ring buffer en mémoire (3 600 points = 1 heure), évalue les alertes et diffuse tout via Server-Sent Events sur le port 9001.

Le dashboard (intégré à l'agent)

L'interface web est embarquée dans le binaire de l'agent et servie sur http://localhost:9001 — rien d'autre à installer. Elle reçoit les métriques en temps réel via SSE, affiche les 2 dernières minutes en direct, les courbes sur 7 jours, et peut suivre jusqu'à 2 serveurs depuis un seul onglet en plan Free.

Découverte automatique du réseau

Les agents s'annoncent mutuellement par UDP broadcast sur le port 9002. Dès qu'un nouvel agent démarre sur votre réseau local, il apparaît automatiquement dans l'onglet Réseau sans aucune configuration.

i
Toutes les communications restent sur votre réseau local. Le dashboard se connecte directement à l'IP de chaque machine — il n'y a aucun serveur relais, aucune API centrale.
04

Installation

Quelle méthode choisir ?

  • →Vous êtes sur macOS : utilisez Homebrew — c'est la méthode recommandée, elle gère les mises à jour automatiquement.
  • →Vous êtes sur Linux (ou macOS sans Homebrew) : utilisez le Script curl — une seule commande, zéro prérequis.
  • →Vous voulez personnaliser la compilation ou contribuer : utilisez les sources — nécessite Go 1.26+.
1

Ajouter le tap Xytherion

bash
brew tap OpenDojoSystems0/xytherion
2

Installer l'agent

bash
brew install xytherion
3

Vérifier l'installation

bash
xytherion --version# → xytherion v0.3.0 (linux/amd64)
✦
Pour mettre à jour plus tard : brew upgrade xytherion

Démarrage automatique

Le script d'installation vous propose ce choix automatiquement à la fin. Si vous avez répondu non et souhaitez l'activer après coup, voici les commandes selon votre OS.

macOS — launchd

bash
# Activerlaunchctl load ~/Library/LaunchAgents/com.xytherion.agent.plist # Désactiverlaunchctl unload ~/Library/LaunchAgents/com.xytherion.agent.plist

Linux — systemd

bash
# Activersudo systemctl enable --now xytherion # Désactiversudo systemctl disable --now xytherion # Statutsystemctl status xytherion

Désinstallation

Le script de désinstallation arrête l'agent, retire le service de démarrage automatique, supprime le binaire, et vous demande si vous souhaitez effacer les données locales (~/.xytherion/ — logs et données de l'agent).

bash
curl -fsSL https://raw.githubusercontent.com/OpenDojoSystems0/xytherion-core/main/uninstall.sh | bash
i
Les données (~/.xytherion/, et sur un serveur Linux /var/lib/xytherion/ et le jeton dans /etc/xytherion/) sont conservées par défaut — le script vous demande explicitement avant de les supprimer.
!
Sur macOS, la lecture de l'état du pare-feu via pfctl nécessite les droits root. Lancez l'agent avec sudo xytherion pour activer cette fonctionnalité.
05

Démarrage rapide

1

Lancer l'agent sur le serveur à surveiller

bash
xytherion# → xytherion listening on :9001  (hostname: mon-serveur)# → dashboard: http://localhost:9001
2

Ouvrir le dashboard

Ouvrez http://localhost:9001 dans votre navigateur : le dashboard est intégré à l'agent, rien d'autre à installer. Depuis une autre machine, utilisez http://IP-du-serveur:9001.

3

Ajouter un deuxième serveur (optionnel)

Le dashboard se connecte tout seul à l'agent qui l'affiche. Pour suivre un autre serveur depuis le même onglet, donnez-lui un jeton (voir Configuration), entrez son adresse http://192.168.1.X:9001 dans la barre latérale et collez le jeton. Le plan Free suit jusqu'à 2 serveurs.

✦
L'agent est conçu pour fonctionner sans interruption : il garde la dernière heure seconde par seconde en mémoire, et une moyenne par minute sur 7 jours enregistrée sur disque.
06

Technologies exclusives

7 innovations

Xytherion intègre sept technologies propriétaires qui n'existent dans aucun autre outil de monitoring open source. Elles ont été conçues pour répondre à des problèmes concrets rencontrés lors de la gestion d'infrastructure en production.

Replay de pannes

ExclusifPro · Bientôt

Retournez dans le temps et rejouez frame par frame n'importe quelle période de l'historique. Un contrôleur de lecture (⏮ ◀ ▶ ⏸ ⏭) avec scrubber temporel et vitesses 1x/2x/5x vous permet d'analyser exactement ce qui s'est passé lors d'un incident — CPU, RAM, disque, réseau, processus — sans avoir eu besoin de configurer quoi que ce soit à l'avance.

Fingerprint de processus

Exclusif

Chaque processus accumule un profil comportemental en temps réel (fenêtre glissante de 60 secondes). Dès qu'il dévie de plus de 2 écarts-types (z-score ≥ 2.0) de sa baseline habituelle en CPU ou mémoire, un badge ⚡ 3.2σ apparaît à côté de son nom. Idéal pour détecter les fuites mémoire progressives ou les pics CPU anormaux.

Topology Map

Exclusif

Les agents s'annoncent mutuellement par UDP broadcast toutes les 8 secondes sur le port 9002. Aucune configuration nécessaire — dès qu'un nouvel agent démarre sur votre réseau local, il apparaît automatiquement dans l'onglet Réseau avec sa carte SVG interactive et un lien direct vers son interface.

Time Capsule

ExclusifPro · Bientôt

Capturez un état de référence nommé de votre serveur à n'importe quel moment ("après-déploiement-v2"). À tout instant, comparez l'état actuel avec cette référence : delta CPU/RAM/disque, processus apparus ou disparus. Parfait pour vérifier l'impact d'un déploiement ou diagnostiquer une régression.

Drain Score

ExclusifPro · Bientôt

Xytherion analyse la tendance de la RAM, du CPU et des disques et prédit le moment de saturation : "RAM saturée dans 4.2h", "Disque / plein dans 18 jours" — pour agir avant l'incident.

Process DNA

Exclusif

15 processus courants (nginx, postgres, redis, sshd, node, java…) ont un profil comportemental attendu intégré. Si l'un d'eux dépasse ses seuils normaux (CPU ou mémoire), une violation DNA est émise immédiatement avec le détail. Permet de détecter un nginx qui consomme anormalement ou un sshd qui tourne en dehors de son enveloppe habituelle.

Dead Man's Switch

Exclusif

Le dashboard distingue deux types de déconnexion d'un agent : l'arrêt gracieux (l'agent a envoyé un signal SSE shutdown avant de s'éteindre via SIGTERM) versus la perte de connexion brutale (crash, coupure réseau, reboot non planifié). Chaque situation affiche un message différent, permettant de distinguer une maintenance planifiée d'un incident réel.

07

Fonctionnalités

✓

Vue d'ensemble

Jauges CPU/RAM, sparklines, disques, I/O, processus

✓

Alertes

Moteur avec seuils, historique 100 événements, webhooks

✓

Sécurité

Scanner de ports, ports en écoute, audit SSH, état du pare-feu, Process DNA

✓

Medikit

Scan sécurité complet, score /100, remédiation — Plan Pro (bientôt)

✓

Moniteurs HTTP

Latence, statut HTTP, jours restants du certificat SSL

✓

Webhooks

Discord, Slack, JSON générique — déclenché sur alerte

✓

Réseau

Découverte LAN auto, carte topologique interactive

✓

Historique

Courbes CPU et RAM sur 1 h, 24 h ou 7 jours (moyenne par minute, conservée sur disque)

✓

Vue flotte

Jusqu'à 2 serveurs côte à côte avec statut agrégé (plan Free)

✓

Page de statut

Vue simplifiée sur http://localhost:9001/status

✓

Mode sombre

Bascule instantanée, persistée en localStorage

✓

Replay

Relecture d'incidents — Plan Pro (bientôt)

08

Configuration

L'agent se configure entièrement par flags CLI. Aucun fichier de configuration requis.

FlagDéfautDescription
--port9001Port d'écoute HTTP de l'agent
--interval1sIntervalle de collecte des métriques
--ring3600Taille du ring buffer (nombre de snapshots)
--corslocalhost:3092, :3093Origines CORS supplémentaires (développement du dashboard)
--version—Affiche la version et quitte
--update—Installe la dernière version signée puis quitte (redémarrez ensuite le service)

Exemples

bash
# Agent standardxytherion # Port personnalisé, collecte toutes les 2 secondesxytherion --port 9002 --interval 2s # Afficher la versionxytherion --version

Variables d'environnement

VariableRôle
XYTHERION_TOKENJeton d'accès. Sans jeton, l'API n'est accessible que depuis la machine elle-même.
XYTHERION_ALLOW_REMOTE=1Autorise l'accès réseau sans jeton (déconseillé hors réseau de confiance).
XYTHERION_ALLOWED_HOSTSNoms de domaine supplémentaires acceptés (protection anti DNS-rebinding).
XYTHERION_DATA_FILEFichier des moniteurs et webhooks (défaut : ~/.xytherion/data.json, ou /var/lib/xytherion/data.json en service Linux).
XYTHERION_AUTO_UPDATE=1Installe automatiquement les mises à jour signées (sinon : bandeau dans le dashboard).
XYTHERION_UPDATE_URLManifeste signé auto-hébergé, à la place des releases GitHub (HTTPS obligatoire).
XYTHERION_AUTOSTART=o|nPour install.sh : répond d'avance à la question du démarrage automatique (installation sans interaction).
XYTHERION_REMOVE_DATA=o|nPour uninstall.sh : supprime ou conserve les données sans poser la question.

Accès à distance & jeton

Le dashboard s'ouvre sur http://localhost:9001. Par sécurité, sans jeton, l'agent n'écoute que sur la machine elle-même (127.0.0.1 et ::1) et ne s'annonce pas sur le réseau : personne d'autre ne peut lire vos métriques.

Pour consulter un serveur depuis une autre machine, définissez un jeton. Le script d'installation le fait automatiquement pour un service Linux (il l'affiche une fois et le range dans /etc/xytherion/agent.env). Ouvrez ensuite http://IP-du-serveur:9001 et collez le jeton dans « Jeton d'accès ».

bash
# Lancer l'agent avec un jeton (générez-en un long et aléatoire)XYTHERION_TOKEN="$(openssl rand -hex 32)" xytherion # Voir le jeton d'un service Linux installé par le scriptsudo cat /etc/xytherion/agent.env

Pour changer le jeton d'un service Linux (par exemple s'il a fuité), remplacez-le dans /etc/xytherion/agent.env puis redémarrez le service :

bash
echo "XYTHERION_TOKEN=$(openssl rand -hex 32)" | sudo tee /etc/xytherion/agent.env >/dev/nullsudo chmod 600 /etc/xytherion/agent.envsudo systemctl restart xytherion

Le plus sûr est de ne pas ouvrir le port 9001 sur Internet : passez par un VPN ou par un tunnel SSH, puis ouvrez http://localhost:9001 sur votre ordinateur.

bash
ssh -L 9001:127.0.0.1:9001 utilisateur@votre-serveur
i
Vue Flotte : utilisez le même jeton sur tous vos agents, le dashboard s'y connecte alors sans autre réglage. L'agent bloque aussi les requêtes forgées par d'autres sites (CSRF) et les noms de domaine inconnus (DNS rebinding) — si vous l'exposez derrière un nom de domaine, ajoutez-le à XYTHERION_ALLOWED_HOSTS. Derrière un reverse proxy installé sur la même machine, définissez toujours un jeton : l'agent voit alors toutes les requêtes comme locales.

Mises à jour

L'agent vérifie toutes les 6 heures si une nouvelle version officielle est publiée. Quand c'est le cas, le dashboard affiche un bandeau « Xytherion vX est disponible » avec un bouton Installer la mise à jour : l'agent télécharge la nouvelle version, la vérifie, la remplace et redémarre tout seul — vos données et votre historique sont conservés.

bash
# Ou en ligne de commandexytherion --updatesudo systemctl restart xytherion          # Linux (service)launchctl kickstart -k gui/$(id -u)/com.xytherion.agent   # macOS # Installation via Homebrew : passez par Homebrewbrew upgrade xytherion
✦
Chaque version est signée (ed25519) par l'équipe Xytherion. L'agent refuse toute mise à jour dont la signature ou l'empreinte SHA-256 ne correspond pas : même un dépôt ou un serveur compromis ne peut pas installer un faux binaire. Les versions de développement (dev) ne se mettent jamais à jour automatiquement.
09

Métriques & Données

Chaque snapshot émis via SSE est un objet JSON avec la structure suivante.

Snapshot complet

json
{  "agent_id": "mon-serveur-9001",  "hostname": "mon-serveur",  "os": "linux",  "arch": "amd64",  "time": "2026-07-02T20:13:57Z",  "cpu": {    "percent": 17.4,    "per_core": [12.1, 22.3, 14.8, 20.1],    "cores": 4  },  "memory": {    "total": 8589934592,    "used": 7516192768,    "available": 1073741824,    "cached": 2147483648,    "percent": 87.5,    "swap_total": 2147483648,    "swap_used": 536870912  },  "disk": [    { "device": "/dev/sda1", "mountpoint": "/", "total": 107374182400,      "used": 59055800320, "free": 48318382080, "percent": 55.0 }  ],  "disk_io": [    { "name": "sda", "read_mb_s": 0.5, "write_mb_s": 2.1,      "read_iops": 12, "write_iops": 48 }  ],  "net": {    "bytes_sent": 1234567890, "bytes_recv": 9876543210,    "packets_sent": 12345, "packets_recv": 98765  },  "net_io": { "send_mb_s": 0.13, "recv_mb_s": 0.02 },  "load": [1.25, 1.10, 0.95],  "uptime": 86400,  "procs": [    { "pid": 1234, "name": "nginx", "cpu": 0.5, "memory": 0.3 }  ]}

Endpoints REST disponibles

EndpointMéthodeDescription
/api/streamGET (SSE)Flux temps réel de tous les événements
/api/metricsGETDernier snapshot JSON
/api/history?n=60GETN derniers snapshots (max 3600)
/api/trends?range=24hGETHistorique long : 1 point par minute (1h, 24h ou 7d)
/api/alertsGETAlertes actives
/api/alerts/historyGETHistorique des 100 dernières alertes
/api/scanGETRésultat du dernier scan de ports
/api/scan/runPOSTDéclenche un nouveau scan
/api/monitorsGET/POST/DELETEMoniteurs HTTP
/api/sshGETDernières connexions SSH
/api/firewallGETÉtat du pare-feu
/api/portsGETPorts en écoute
/api/topologyGETAgents découverts sur le LAN
/api/updateGET/POSTÉtat des mises à jour / installer la dernière version signée
/api/webhooksGET/POST/DELETEGestion des webhooks
/healthGETStatut de l'agent
i
Les API des fonctionnalités Plan Pro (Replay, Time Capsule, Drain Score, Medikit) seront documentées à la sortie du Pro.
10

Alertes

Le moteur d'alertes est intégré à l'agent. Les seuils sont évalués à chaque collecte (toutes les secondes). Une alerte ne se déclenche que si le seuil est dépassé pendant 10 secondes consécutives, ce qui évite les faux positifs liés aux pics momentanés.

Seuils par défaut

MétriqueSeuilGravité
CPU85 %Avertissement
Mémoire RAM90 %Critique
Disque (par partition)90 %Critique
Charge système2.0 par cœurAvertissement

Format d'un événement d'alerte (SSE)

json
{  "id": "cpu",  "metric": "CPU élevé",  "message": "CPU à 87.3% (seuil 85%)",  "value": 87.3,  "threshold": 85,  "severity": "warning",  "active": true,  "fired_at": "2026-07-02T20:15:00Z"}
✦
Les alertes sont automatiquement acheminées vers les webhooks configurés. Quand la métrique repasse sous le seuil, la même alerte est renvoyée avec "active": false et cleared_at.
11

Sécurité & Ports

L'onglet Sécurité regroupe cinq modules indépendants. Le Medikit (scan avancé) est disponible dans le Plan Pro — voir la section dédiée.

Scanner de ports

Scan TCP parallèle sur 30 ports réputés dangereux (SSH, Telnet, RDP, bases de données exposées, services legacy…). Chaque port reçoit un score de risque sur 5 niveaux : critique, élevé, moyen, faible, info. Un score de sécurité global est calculé à partir des ports ouverts.

Ports en écoute

Liste complète de tous les ports en état LISTEN, lus directement depuis les tables de sockets du noyau via gopsutil. Plus rapide et plus précis qu'un scan TCP — chaque port est accompagné de : protocole, adresse de bind, processus associé, PID et classification de risque.

L'état Ouvert indique que le port écoute sur 0.0.0.0 (accessible depuis le réseau). L'état Local indique un port lié à 127.0.0.1 (accessible uniquement en local).

Audit SSH

Lecture des 20 dernières connexions SSH via la commande last. Affiche les connexions réussies : utilisateur, IP source, terminal et date.

État du pare-feu

Détection automatique de l'outil actif. Sur macOS : pf (si l'agent tourne en root), sinon le pare-feu applicatif de macOS (Réglages Système → Réseau → Pare-feu). Sur Linux, dans cet ordre : ufw, firewalld (Fedora, RHEL, Rocky…), nftables (Debian 11+, Ubuntu récents) puis iptables. Affiche l'état (actif/inactif), le moteur détecté et le nombre de règles. Certains moteurs exigent les droits root : en service systemd, l'agent les possède.

12

Medikit

Pro
i
Le Medikit est une fonctionnalité du Plan Pro, actuellement en développement. Il ne fait pas partie du plan Free ni de l'agent open source.

Le Medikit est le module de sécurité proactive de Xytherion Pro. Il analyse l'intégrité de la machine elle-même : rootkits, malwares, fichiers système altérés, tâches cron suspectes, et durcissement de configuration — avec un score global sur 100 et des actions correctives intégrées (quarantaine, liste blanche).

Il orchestre les outils de sécurité existants (rkhunter, chkrootkit, ClamAV, Lynis), normalise leurs résultats, et vous permet de corriger ou d'ignorer chaque finding directement depuis le dashboard.

Disponible dans le Plan Pro :

  • ◆7 moteurs de sécurité (natifs Go + outils externes)
  • ◆Score de sécurité /100 avec Hardening Index
  • ◆Remédiation intégrée : quarantaine & liste blanche
  • ◆Historique des scans et journal d'audit
13

Webhooks

Xytherion envoie une notification (requête POST JSON) à chaque déclenchement ou résolution d'alerte. Jusqu'à 50 webhooks par agent.

Types supportés

TypeFormat envoyéCompatible avec
discord{"content": "🔴 [ALERTE] ..."}Discord, Guilded
slack{"text": "🔴 [ALERTE] ..."}Slack, Mattermost
generic{"hostname", "status", "alert", "timestamp"}n8n, Make, Zapier, custom
!
Par sécurité (protection SSRF), l'agent refuse les URL qui pointent vers un réseau privé ou local : localhost, 127.x, 10.x, 172.16–31.x, 192.168.x, 169.254.x et équivalents IPv6. Un service auto-hébergé (n8n, Mattermost…) doit donc être joignable par une adresse publique en HTTPS. Les redirections sont refusées.

Ajouter un webhook via l'API

bash
# Si l'agent a un jeton, ajoutez : -H "Authorization: Bearer VOTRE_JETON"curl -X POST http://localhost:9001/api/webhooks \  -H "Content-Type: application/json" \  -d '{    "name": "Alertes Discord",    "url": "https://discord.com/api/webhooks/...",    "type": "discord",    "enabled": true  }'
14

Stack technique

Chaque technologie a été choisie pour une raison précise, pas par habitude.

Go 1.26Agent de monitoring

Compilation en binaire statique unique — zéro dépendance runtime. Performance native pour le traitement temps réel. Cross-compilation triviale pour macOS/Linux/arm64/amd64. Goroutines pour la collecte parallèle sans overhead.

gopsutil/v3Collecte système cross-platform

La seule bibliothèque Go qui abstrait correctement les appels système macOS (sysctl, IOKit) et Linux (/proc, /sys) derrière une API unifiée. Alternative : écrire 2000 lignes de code natif pour chaque OS.

Server-Sent EventsTransport temps réel

Unidirectionnel serveur → client, pas de latence de polling, nativement supporté par tous les navigateurs, compatible avec les proxies HTTP. WebSocket aurait été surdimensionné — on n'a pas besoin de communication bidirectionnelle.

Next.js 16Dashboard web

Le dashboard est une app React exportée en fichiers statiques (≈ 1 Mo) puis embarquée dans le binaire Go : aucun serveur Node.js à faire tourner, l'agent sert l'interface lui-même sur le port 9001. Les données temps réel arrivent côté navigateur via SSE.

Tailwind CSS v4Styles

Génération CSS à la compilation, aucun runtime. Note : Tailwind v4 (Lightning CSS) purge les sélecteurs custom — le mode sombre est donc géré via CSS custom properties injectées en JS directement sur document.documentElement.style.

15

Concepts clés

Comprendre ces mécanismes vous permettra de mieux interpréter ce que vous voyez dans le dashboard.

Ring buffer

L'historique des métriques est stocké dans un anneau de taille fixe (3 600 entrées). Quand l'anneau est plein, le point le plus ancien est écrasé par le plus récent. Cela garantit une empreinte mémoire constante quelle que soit la durée de fonctionnement de l'agent. En parallèle, l'agent calcule une moyenne par minute (CPU, RAM, disque, charge, réseau) qu'il conserve 7 jours et enregistre sur disque toutes les 5 minutes : c'est l'historique long, qui survit aux redémarrages.

Calcul des deltas (I/O réseau et disque)

Les compteurs système (octets envoyés, octets lus) sont monotoniquement croissants depuis le démarrage. Pour obtenir un débit en Mo/s, l'agent soustrait la valeur précédente de la valeur actuelle et divise par l'intervalle. Une structure protégée par mutex conserve l'état précédent entre deux collectes.

Z-score (Fingerprint)

Le z-score mesure combien d'écarts-types une valeur s'éloigne de la moyenne. Un z-score de 2 signifie que la valeur actuelle est 2 fois l'écart-type au-dessus de la normale. Le seuil de 2.0 est un équilibre entre sensibilité (détecter les vraies anomalies) et précision (éviter les faux positifs).

text
z = |valeur_actuelle - moyenne| / écart_type z < 2.0  → comportement normalz ≥ 2.0  → anomalie signalée  ⚡z ≥ 3.0  → anomalie significative

UDP broadcast (Topology)

Un paquet envoyé à 255.255.255.255:9002 est automatiquement livré à tous les hôtes du sous-réseau local. Chaque agent qui reçoit un broadcast d'un autre agent l'enregistre comme peer. Les peers non-vus depuis 30 secondes sont automatiquement purgés.

16

FAQ

Est-ce que Xytherion envoie des données vers Internet ?+
Non, jamais vos métriques. L'agent ne contacte Internet que pour ce que vous configurez vous-même : les webhooks d'alerte, les sites que vous ajoutez aux moniteurs HTTP, et la mise à jour automatique si vous l'activez. Le dashboard est servi par l'agent : tout reste entre votre navigateur et vos machines.
Combien de mémoire consomme l'agent ?+
Environ 20 à 30 Mo de RAM en régime permanent (mesuré sur macOS), dont une bonne part pour l'historique d'une heure en mémoire. Le binaire, dashboard inclus, pèse une douzaine de Mo.
Peut-on surveiller des serveurs dans des VLANs différents ?+
Oui. La découverte automatique par UDP broadcast est limitée au sous-réseau local, mais vous pouvez ajouter manuellement n'importe quelle adresse IP accessible depuis le dashboard — même à travers un VPN. Configurez le même jeton (XYTHERION_TOKEN) sur chaque agent.
Où sont stockées les données ? Que se passe-t-il si l'agent redémarre ?+
La dernière heure, seconde par seconde, est gardée en mémoire vive et disparaît au redémarrage. L'historique long (une moyenne par minute sur 7 jours) et votre configuration (moniteurs HTTP, webhooks) sont enregistrés sur disque dans ~/.xytherion/ (ou /var/lib/xytherion/ pour un service Linux), avec des droits réservés à leur propriétaire.
Peut-on utiliser Xytherion sur Windows ?+
gopsutil supporte Windows en théorie, mais Xytherion n'a pas encore été testé sur cet OS. Les modules SSH audit et pare-feu sont spécifiques à macOS et Linux. Soyons honnêtes : nous n'avons tout simplement pas voulu déployer sur Windows. Nous ne portons pas cet OS dans notre cœur.
Combien de serveurs peut-on surveiller simultanément ?+
Il n'y a pas de limite technique imposée par le logiciel. En pratique, chaque serveur ouvre une connexion SSE persistante depuis le navigateur. La limite est celle de votre navigateur (généralement 6 connexions max par domaine, mais SSE utilise un domaine différent par agent).
Le Fingerprint de processus fonctionne immédiatement ?+
Non. Il faut au minimum 10 secondes de données pour établir une baseline. Le profil s'affine sur 60 secondes (fenêtre glissante). Les premières minutes après un redémarrage de l'agent ne génèrent donc pas d'anomalies.
Comment fonctionne le Dead Man's Switch concrètement ?+
Quand l'agent reçoit SIGTERM (arrêt propre via systemctl stop ou Ctrl+C), il émet un événement SSE 'shutdown' avant de s'arrêter. Le dashboard l'intercepte et affiche 'Arrêt gracieux'. Si la connexion se coupe sans ce signal préalable, c'est un crash ou une coupure réseau et le dashboard affiche 'Connexion perdue'.

Prêt à surveiller vos serveurs ?

Xytherion v0.2 — Tout en local, rien dans le cloud.

Ouvrir mon dashboard localhost:9001 →