Pourquoi Vigo

Simplicité, sécurité, fiabilité, scalabilité et prix — ce qui distingue Vigo de tous les autres systèmes de gestion de configuration.

Bientôt disponible Vigo est en version alpha et approche de sa première version stable. Attendez-vous à des changements incompatibles entre les versions d'ici là — nous recherchons des partenaires de test disposant de parcs conséquents sur des architectures variées. En savoir plus →

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.

Vigo — 1 fichier, 1 ressource
configcrates/os-users.vgo
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.

Trace de configuration Vigo affichant l'arborescence d'héritage de répertoires avec la résolution du chemin et du configcrate pour danlap
Héritage de chemin — l'arborescence de répertoires qui contribue à la configuration de ce nœud, depuis la racine du parc jusqu'au fichier d'entrée feuille.
Héritage de configcrate Vigo affichant les listes de configcrates par niveau et l'expansion des rôles pour danlap
Héritage de configcrate — quels configcrates et rôles proviennent de quel fichier, avec l'expansion des rôles indiquant les configcrates que chaque rôle apporte.
Chaîne d'héritage de variables Vigo affichant les variables par niveau avec les marqueurs de surcharge et les sources de résolution finale
Héritage de variables — les variables définies à chaque niveau de répertoire, les marqueurs de surcharge là où un enfant remplace un parent, et la résolution finale indiquant la provenance de la valeur de chaque variable.
Héritage de dépendances Vigo affichant les arêtes depends_on, notify et subscribes entre les ressources
Héritage de dépendances — le DAG complet des arêtes depends_on, notify et subscribes. Les ressources s'exécutent dans l'ordre topologique ; notify déclenche une ré-application lorsqu'une dépendance change.
Héritage de conditions Vigo affichant les expressions when côté serveur et côté agent avec la résolution des variables de template
Héritage de conditions — chaque expression 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.
Héritage de conformité Vigo associant les configcrates aux contrôles de cadre pour CIS, HIPAA, NIST, PCI DSS, SOC 2, ISO 27001 et HITRUST
Héritage de conformité — les étiquettes de conformité de chaque configcrate associées aux contrôles de cadre. Sept cadres de conformité, de CIS à HIPAA et PCI DSS, tracés jusqu'au configcrate qui les applique.
Héritage de dérogations Vigo affichant les exemptions approuvées pour des contrôles de conformité spécifiques, avec l'approbateur et le fichier source
Héritage de dérogations — exemptions approuvées pour des contrôles de conformité spécifiques. Chaque dérogation enregistre qui l'a approuvée, pourquoi, et quel fichier la définit. Les dérogations héritent à travers la chaîne de répertoires.

🔒 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.