Pourquoi Vigo
Simplicité, sécurité, fiabilité, scalabilité et prix — ce qui distingue Vigo de tous les autres systèmes de gestion de configuration.
Une ressource. Un fichier.
Créer un utilisateur avec sudo sans mot de passe et une clé SSH — une tâche que chaque équipe accomplit. Avec Vigo, c'est une seule ressource dans un seul fichier, avec clés SSH, sudo et secrets intégrés.
name: os-users resources: - name: alice type: user username: alice comment: Alice Nguyen shell: /bin/bash groups: sudo, adm state: present password: secret:vigo/os-users/alice sudo_nopasswd: true authorized_keys: | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJqR... alice@laptop
📄 Simplicité
Un seul serveur à toute échelle
Pas de compile masters, pas de pools de workers, pas de clusters de bases de données, pas de répartiteurs de charge. Un seul processus, un seul fichier SQLite, un seul répertoire de configuration. L'architecture ne change pas, que vous gériez 10 nœuds ou 100 000.
Binaire agent statique de ~8 Mio
Pas de Ruby, pas de Python, pas de JVM, pas d'écosystème de gestionnaire de paquets sur les nœuds gérés. Copiez le binaire, exécutez-le. Zéro dépendance à l'exécution.
Un seul format de configuration, un seul chemin de configuration
Il n'existe qu'une seule façon de configurer Vigo : modifier des fichiers YAML et les publier. Pas d'écritures via l'API, pas de configuration en base de données, pas de mutations via l'interface. Une seule source de vérité, un seul format, un seul outil.
Pas de DSL
Le langage de configuration est YAML. Les templates Go n'apparaissent que dans les attributs content:. Aucun langage personnalisé à apprendre, pas de compilateur, pas de comportements inattendus d'un analyseur syntaxique.
L'amorçage tient en une seule commande
curl | sudo sh télécharge le binaire, génère les certificats TLS, s'enregistre auprès du serveur, installe le service et vérifie la connectivité. Sous gestion en 30 secondes.
Sept familles de systèmes d'exploitation à partir d'une seule base de code
Linux, macOS, FreeBSD, OpenBSD, NetBSD, illumos et Windows. Écrivez type: service et il dispatche vers systemd, launchctl, rc.d, rcctl, SMF ou sc.exe.
Ressources conditionnelles sans DSL if
when: "os_family('debian')" sur n'importe quelle ressource ou configcrate. Logique booléenne, fonctions intégrées comme has_command, arch, version_ge. Le serveur évalue ce qu'il peut, transmet le reste à l'agent. Pas de DSL, pas de plugins.
Visibilité — tracez toute décision jusqu'à sa source
Une seule commande — vigocli config trace danlap — affiche la chaîne de résolution complète pour n'importe quel nœud. Chaque configcrate, variable, dépendance, étiquette de conformité, dérogation et condition tracée jusqu'au fichier exact qui la définit.
when: avec son côté d'évaluation. Les conditions côté serveur (comme changed) sont résolues avant l'envoi ; les conditions côté agent (comme os_family et hour_range) s'exécutent sur le nœud géré. Les variables de template sont résolues et affichées sous l'expression d'origine.🔒 Sécurité
Signatures ED25519 par requête
Chaque requête d'agent est signée individuellement et vérifiée par rapport aux clés publiques stockées. Pas seulement TLS — une preuve cryptographique réelle de l'identité à chaque appel d'API. La relecture et l'usurpation d'identité exigent la clé privée, pas seulement un certificat valide.
Les secrets ne sont jamais matérialisés
Le préfixe secret: est résolu au chargement de la configuration via un fournisseur enfichable et est supprimé avant la transmission. Les secrets n'apparaissent jamais dans les fichiers YAML, les variables d'environnement, les journaux, les lignes de base de données, les charges utiles gRPC ni dans les rapports de résultats d'exécution.
Pas de mode texte brut
mTLS est le seul transport. Il n'existe pas d'indicateur --no-ssl, pas de repli en texte brut, pas de « mode développement » qui contourne le chiffrement. Le chemin non sécurisé n'existe pas dans le code source.
Jetons d'enrôlement à usage unique
Les jetons sont hachés avec bcrypt au repos et liés à des motifs glob de nom d'hôte. Un jeton correspondant à *.web.prod ne peut pas enrôler une machine nommée db01.staging. Utilisé une fois, puis invalidé définitivement.
Garde-fous d'auto-protection
Le pipeline de validation bloque toute ressource ciblant le binaire de l'agent, le binaire du serveur, le répertoire de configuration ou l'unité de service. Même le mode --dangerous ne peut pas contourner ces vérifications. Le système ne peut pas être utilisé pour se détruire lui-même.
Binaire agent vérifié
Le binaire agent est distribué avec des signatures ED25519 et des sommes de contrôle SHA-256, vérifiées à l'amorçage. Le durcissement du binaire comprend PIE, RELRO complet, protecteurs de pile, symboles supprimés et LTO.
⚡ Fiabilité
Idempotence garantie à la publication
La plupart des outils de gestion de configuration traitent l'idempotence comme une discipline que l'opérateur doit maintenir. Vigo en fait un invariant au moment de la publication : config publish valide l'idempotence en même temps que la syntaxe, de sorte qu'une configuration non idempotente échoue à la publication plutôt que de se déployer sur le parc. Cela tient parce que chaque exécuteur suit le principe vérifier-avant-d'agir — file: compare un SHA-256, package: vérifie la version installée, service: vérifie is-active/is-enabled avant toute action. Ré-évaluer une ressource 86 400 fois par jour à une cadence d'1 seconde n'engendre aucun changement et aucun bruit d'audit jusqu'à ce qu'une dérive se produise réellement.
Bundles de politique signés avec convergence hors ligne
Le serveur signe les bundles avec ED25519. L'agent vérifie, met en cache dans LMDB et continue à converger indéfiniment si le serveur disparaît. Les résultats en attente sont mis en file d'attente et vidés à la reconnexion.
Promotion de flux adaptative
Les agents utilisent par défaut un sondage léger sans état. Les flux persistants ne sont promus que lorsque le serveur a du travail à distribuer, puis relâchés. Les agents inactifs ne consomment aucune ressource de flux.
Résilience d'évaluation
Une erreur de rendu de template ou une erreur d'analyse d'une expression when: dans une ressource ignore cette ressource et continue avec le reste de l'exécution de convergence. Une seule ressource défectueuse n'interrompt pas l'ensemble de la politique.
Zéro opération en base de données sur le chemin critique
Le FleetIndex est un index entièrement en mémoire avec vidage asynchrone des modifications. Une vérification d'agent — recherche, compilation de politique et réponse — ne touche à aucune requête en base de données.
L'agent ne s'arrête jamais sur des échecs transitoires
Serveur inaccessible, échec de poignée de main TLS, réponse malformée, crash d'évaluation de politique — tout est géré avec recul et nouvelle tentative. Le binaire agent, une fois démarré, s'exécute jusqu'à ce qu'il soit explicitement arrêté.
Rechargement avec repli progressif
La publication de configuration valide, synchronise et recharge. Si la nouvelle configuration échoue à la validation, le serveur conserve la configuration précédente fonctionnelle. Pas de temps d'arrêt, pas d'état partiel.
Accès distant via navigateur et CLI (Scrier)
Terminaux SSH, bureaux RDP et observation de session en direct depuis l'interface web — ou vigocli scrier ssh depuis votre terminal via le même tunnel. Pas de VPN, pas de bastion, pas de redirection de port. Tunnel via la connexion mTLS existante de l'agent. Clés éphémères par session. Le mode Ombre/assistance permet au service d'assistance de voir et de contrôler le bureau en direct d'un utilisateur avec son consentement.
Mode observation pour une migration en toute sécurité
Exécutez Vigo aux côtés d'un gestionnaire de configuration existant. Les agents signalent ce qu'ils changeraient sans rien appliquer. Basculez lorsque vous êtes confiant. Par nœud ou à l'échelle du parc.
📈 Scalabilité
Des dizaines de milliers d'envoys par serveur
Sur une seule machine 8 vCPU / 32 Go, mesurée en direct — ~7 450 envoys à la cadence par défaut d'une seconde, ~30 000 en cadence relâchée. Vous fixez la cadence ; la capacité évolue linéairement avec les cœurs et la RAM. Pas de compile masters, pas de pools de workers, pas de clusters de bases de données. Voir l'analyse →
Chemin critique en microsecondes
Le travail critique par vérification est une vérification de signature ED25519 de ~53 µs (mesurée) ; la vérification d'horodatage, la recherche d'index et la comparaison de hachage sont chacune sub-microseconde. Pas de compilation de catalogue, pas d'interprétation Ruby, zéro requête en base de données sur le chemin critique — c'est pourquoi une cadence d'une seconde sature d'abord le CPU, et une cadence relâchée la mémoire.
Coût mémoire linéaire, mesuré
~220 Ko par envoy connecté pour le flux maintenu, ~623 Ko tout compris une fois son inventaire mis en cache — mesuré en direct, parfaitement linéaire avec la RAM. Les petits parcs fonctionnent confortablement sur un Raspberry Pi.
Pas de base de données externe
SQLite en mode WAL. Pas de cluster PostgreSQL à provisionner, régler, sauvegarder, mettre à niveau ou maintenir à 3 h du matin. La base de données est un fichier unique que vous pouvez copier avec cp.
Protocole de flux différentiel
Après la vérification initiale, les agents n'envoient que ce qui a changé — deltas de traits, fins d'exécution, battements de cœur. Pas de transferts d'état complet redondants à chaque cycle.
Fédération de pairs (spanner) pour le multi-région
Lorsqu'un seul serveur ne suffit pas, spanner distribue l'enrôlement, les requêtes et les tâches sur des serveurs pairs à égalité d'écriture. Chaque pair gère sa propre partition du parc et agrège les résultats des autres. Pas de base de données partagée.
💰 Prix
Gratuit jusqu'à 100 nœuds. Sans limite de durée.*
Pas de carte de crédit, pas de verrouillage de fonctionnalités. Chaque capacité — orchestration, workflows, requêtes, intégrations natives, export de conformité, assistant IA — est incluse à chaque niveau.
Pas de fonctionnalités réservées à l'entreprise
Il n'existe pas d'« Édition Entreprise » retenant des fonctionnalités critiques. RBAC, OIDC, jetons API, export de conformité, spanner — tout est inclus. Le niveau gratuit est le produit complet.
Coût d'infrastructure : quasi nul
Un seul processus, un seul fichier SQLite, ~6 Go de RAM à 10 000 envoys. Pas de cluster PostgreSQL, pas de Redis, pas de file de messages, pas de parc de compile masters. Le serveur qui héberge votre supervision peut aussi exécuter Vigo.
Pas de licence agent par nœud
Le binaire agent est librement redistribuable. Vous payez pour le nombre de nœuds côté serveur, pas par installation d'agent. Décommissionnez et ré-enrôlez sans problème de licence.
Tarification simple par nœud
144 $/nœud/an à partir de 101 nœuds, descendant à 96 $/nœud/an à grande échelle. Les remises sur volume sont automatiques. Pas d'appel commercial requis jusqu'à 5 000+ nœuds.
Coût total de possession le plus bas
La licence est le seul coût significatif. Pas de compile masters, pas de DBA PostgreSQL, pas d'ingénieurs CM dédiés — le serveur qui héberge votre supervision peut aussi exécuter Vigo.
Voir comment Vigo se compare
Une comparaison détaillée avec les outils de gestion de configuration établis, et des guides pour effectuer la migration.
* Le niveau gratuit est fourni EN L'ÉTAT sans obligation de support. Voir les Conditions commerciales.