Porquê o Vigo

Simplicidade, segurança, fiabilidade, escalabilidade e preço — onde o Vigo se diferencia de qualquer outro sistema de gestão de configuração.

Brevemente disponível O Vigo está em versão alfa e a aproximar-se do seu primeiro lançamento estável. Até lá, espere alterações incompatíveis entre versões — estamos à procura de parceiros de teste com frotas significativas em arquiteturas diversas. Saber mais →

Um recurso. Um ficheiro.

Crie um utilizador com sudo sem palavra-passe e uma chave SSH — uma tarefa que todas as equipas realizam. No Vigo é um único recurso num único ficheiro, com chaves SSH, sudo e segredos integrados.

Vigo — 1 ficheiro, 1 recurso
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

📄 Simplicidade

Um servidor a qualquer escala

Sem compile masters, sem grupos de trabalhadores, sem clusters de base de dados, sem balanceadores de carga. Um processo, um ficheiro SQLite, um diretório de configuração. A arquitetura não muda se gerir 10 nós ou 100 000.

Binário do agente estático ~8 MiB

Sem Ruby, sem Python, sem JVM, sem ecossistema de gestores de pacotes nos nós geridos. Copie o binário, execute-o. Zero dependências de runtime.

Um formato de configuração, um caminho de configuração

Existe exatamente uma forma de configurar o Vigo: editar ficheiros YAML e publicar. Sem escritas via API, sem configuração em base de dados, sem mutações na interface web. Uma única fonte de verdade, um formato, uma ferramenta.

Sem DSL

A linguagem de configuração é YAML. Templates Go aparecem apenas dentro de atributos content:. Sem linguagem personalizada para aprender, sem compilador, sem peculiaridades do parser.

Bootstrap é um único comando

curl | sudo sh transfere o binário, gera certificados TLS, regista-se no servidor, instala o serviço e verifica a conectividade. Sob gestão em 30 segundos.

Sete famílias de SO a partir de um único código

Linux, macOS, FreeBSD, OpenBSD, NetBSD, illumos e Windows. Escreva type: service e encaminha para systemd, launchctl, rc.d, rcctl, SMF ou sc.exe.

Recursos condicionais sem uma DSL if

when: "os_family('debian')" em qualquer recurso ou configcrate. Lógica booleana, builtins como has_command, arch, version_ge. O servidor avalia o que pode, passa o resto ao agente. Sem DSL, sem plugins.

Visibilidade — rastreie qualquer decisão até à sua origem

Um comando — vigocli config trace danlap — mostra a cadeia de resolução completa para qualquer nó. Cada configcrate, variável, dependência, etiqueta de conformidade, derrogação e condicional rastreado até ao ficheiro exato que o definiu.

Rastreio de configuração do Vigo mostrando árvore de herança de diretório com resolução de caminho e configcrate para danlap
Herança de caminho — a árvore de diretórios que contribui para a configuração deste nó, desde a raiz da frota até ao ficheiro de entrada folha.
Herança de configcrate do Vigo mostrando listas de configcrates por nível e expansão de roles para danlap
Herança de configcrate — quais os configcrates e roles que vieram de que ficheiro, com expansão de roles mostrando os configcrates que cada role contribui.
Cadeia de herança de variáveis do Vigo mostrando vars por nível com marcadores de substituição e fontes de resolução final
Herança de variáveis — vars definidas em cada nível de diretório, marcadores de substituição onde um filho sobrepõe um pai, e a resolução final mostrando de onde veio o valor de cada var.
Herança de dependências do Vigo mostrando arestas depends_on, notify e subscribes entre recursos
Herança de dependências — o DAG completo de arestas depends_on, notify e subscribes. Os recursos executam em ordem topológica; notify desencadeia reaplicação quando uma dependência muda.
Herança de condicionais do Vigo mostrando expressões when do lado do servidor e do lado do agente com resolução de variáveis de template
Herança de condicionais — cada expressão when: com o seu lado de avaliação. As condições do lado do servidor (como changed) são resolvidas antes do envio; as condições do lado do agente (como os_family e hour_range) correm no nó gerido. As variáveis de template são resolvidas e mostradas abaixo da expressão original.
Herança de conformidade do Vigo mapeando configcrates para controlos de frameworks em CIS, HIPAA, NIST, PCI DSS, SOC 2, ISO 27001 e HITRUST
Herança de conformidade — as etiquetas de conformidade de cada configcrate mapeadas para controlos de frameworks. Sete frameworks, de benchmarks CIS a HIPAA e PCI DSS, rastreados até ao configcrate que os aplica.
Herança de derrogações do Vigo mostrando isenções de controlos de conformidade aprovadas com aprovador e ficheiro de origem
Herança de derrogações — isenções aprovadas para controlos de conformidade específicos. Cada derrogação regista quem a aprovou, porquê e qual o ficheiro que a definiu. As derrogações herdam ao longo da cadeia de diretórios.

🔒 Segurança

Assinaturas ED25519 por pedido

Cada pedido do agente é individualmente assinado e verificado contra as chaves públicas armazenadas. Não apenas TLS — prova criptográfica real de identidade em cada chamada API. A repetição e a personificação requerem a chave privada, não apenas um certificado válido.

Os segredos nunca são materializados

O prefixo secret: resolve no carregamento da configuração através de um provider configurável e é removido antes da transmissão. Os segredos nunca aparecem em ficheiros YAML, variáveis de ambiente, logs, linhas de base de dados, payloads gRPC ou relatórios de resultados de execução.

Sem modo de texto simples

mTLS é o único transporte. Não existe flag --no-ssl, sem fallback em texto simples, sem "modo de desenvolvimento" que ignore a encriptação. O caminho inseguro não existe no código.

Tokens de inscrição de utilização única

Os tokens são armazenados com hash bcrypt e vinculados a padrões glob de nome de host. Um token que corresponde a *.web.prod não pode inscrever uma máquina com o nome db01.staging. Utilizado uma vez, depois permanentemente invalidado.

Proteções de autodefesa

O pipeline de validação bloqueia qualquer recurso que aponte para o binário do agente, binário do servidor, diretório de configuração ou unidade de serviço. Mesmo o modo --dangerous não pode contornar estas verificações. O sistema não pode ser usado para se destruir a si próprio.

Binário do agente verificado

O binário do agente é distribuído com assinaturas ED25519 e checksums SHA-256, verificados no bootstrap. O hardening do binário inclui PIE, RELRO completo, protetores de pilha, símbolos removidos e LTO.

⚡ Fiabilidade

Idempotência aplicada no momento da publicação

A maioria das ferramentas de gestão de configuração trata a idempotência como uma disciplina que o operador tem de manter. O Vigo torna-a um invariante no momento da publicação: config publish valida a idempotência a par da sintaxe, pelo que uma configuração não idempotente falha na publicação em vez de chegar à frota. Mantém-se porque cada executor é verificar-antes-de-agir — file: compara um SHA-256, package: verifica a versão instalada, service: verifica is-active/is-enabled antes de fazer qualquer coisa. Reavaliar um recurso 86 400 vezes por dia a uma cadência de 1 segundo não produz alterações nem ruído de auditoria até que algo realmente desvie.

Pacotes de política assinados com convergência offline

O servidor assina pacotes com ED25519. O agente verifica, guarda em cache em LMDB e continua a convergir indefinidamente se o servidor desaparecer. Os resultados pendentes ficam em fila e são enviados na reconexão.

Promoção adaptativa de streams

Os agentes utilizam por defeito polling leve sem estado. Streams persistentes são promovidos apenas quando o servidor tem trabalho a distribuir, depois são libertados. Agentes inativos não consomem recursos de stream.

Resiliência de avaliação

Um erro de renderização de template ou um erro de parsing de when: num recurso ignora esse recurso e continua com o resto da execução de convergência. Um único recurso defeituoso não aborta toda a política.

Zero operações de base de dados no caminho crítico

O FleetIndex é um índice totalmente em memória com flush assíncrono de dirty-set. Uma verificação do agente — pesquisa, compilação de política e resposta — não toca em zero consultas à base de dados.

O agente nunca sai por falhas transitórias

Servidor inacessível, falha de handshake TLS, resposta malformada, falha na avaliação de política — todos tratados com backoff e nova tentativa. O binário do agente, uma vez iniciado, corre até ser explicitamente parado.

Recarga com fallback gracioso

A publicação de configuração valida, sincroniza e recarrega. Se a nova configuração falhar a validação, o servidor mantém a configuração anterior em funcionamento. Sem paragem, sem estado parcial.

Acesso remoto via browser e CLI (Scrier)

Terminais SSH, ambientes de trabalho RDP e shadowing de sessões em direto a partir da interface web — ou vigocli scrier ssh a partir do seu terminal pelo mesmo túnel. Sem VPN, sem bastion, sem reencaminhamento de portas. Cria túnel através da ligação mTLS existente do agente. Chaves efémeras por sessão. O modo sombra/assistência permite ao help desk ver e controlar o ambiente de trabalho em direto de um utilizador com consentimento.

Modo de observação para migração segura

Execute o Vigo a par da gestão de configuração existente. Os agentes reportam o que mudariam sem aplicar nada. Mude quando tiver confiança. Por nó ou em toda a frota.

📈 Escalabilidade

Dezenas de milhares de envoys por servidor

Num único servidor de 8 vCPU / 32 GB, medido em direto — ~7 450 envoys à cadência padrão de um segundo, ~30 000 a uma cadência alargada. É você que define a cadência; a capacidade escala linearmente com os núcleos e a RAM. Sem compile masters, sem grupos de trabalhadores, sem clusters de base de dados. Ver a análise →

Caminho crítico em microssegundos

O trabalho crítico por verificação é uma verificação de assinatura ED25519 de ~53 µs (com benchmark); a verificação de timestamp, pesquisa no índice e comparação de hash são cada uma sub-microssegundo. Sem compilação de catálogos, sem interpretação Ruby, zero consultas à base de dados no caminho crítico — razão pela qual uma cadência de um segundo satura primeiro a CPU, e uma cadência alargada a memória.

Custo de memória linear e medido

~220 KB por envoy ligado para o stream mantido, ~623 KB no total assim que o seu inventário fica em cache — medido em direto, perfeitamente linear com a RAM. Frotas pequenas correm confortavelmente num Raspberry Pi.

Sem base de dados externa

SQLite em modo WAL. Sem cluster PostgreSQL para provisionar, ajustar, fazer backup, atualizar ou manter de madrugada. A base de dados é um único ficheiro que pode copiar com cp.

Protocolo de streaming delta

Após a verificação inicial, os agentes enviam apenas o que mudou — deltas de traits, conclusões de execução, heartbeats. Sem transferências redundantes de estado completo em cada ciclo.

Federação de pares (spanner) para multi-região

Quando um servidor não basta, o spanner distribui a inscrição, consultas e tarefas por servidores pares com escrita igualitária. Cada par gere a sua partição da frota e agrega resultados dos outros. Sem base de dados partilhada.

💰 Preço

Gratuito para 100 nós. Sem limite de tempo.*

Sem cartão de crédito, sem bloqueio de funcionalidades. Todas as capacidades — orquestração, fluxos de trabalho, consultas, integrações nativas, exportação de conformidade, assistente de IA — incluídas em todos os níveis.

Sem funcionalidades exclusivas para empresas

Não existe "Enterprise Edition" com funcionalidades críticas retidas. RBAC, OIDC, tokens de API, exportação de conformidade, spanner — tudo incluído. O nível gratuito é o produto completo.

Custo de infraestrutura: próximo de zero

Um processo, um ficheiro SQLite, ~6 GB de RAM a 10 000 envoys. Sem cluster PostgreSQL, sem Redis, sem fila de mensagens, sem frota de compile masters. O servidor que corre a sua monitorização pode correr o Vigo também.

Sem licenciamento por agente

O binário do agente é de distribuição livre. Paga pela contagem de nós do lado do servidor, não por instalação de agente. Desative e reinscreva sem problemas de licença.

Preços simples por nó

$144/nó por ano a 101 nós, descendo para $96/nó por ano à escala. Descontos por volume são automáticos. Sem chamadas de vendas necessárias até 5 000+ nós.

Custo total de posse mais baixo

A licença é o único custo significativo. Sem compile masters, sem DBA PostgreSQL, sem engenheiros de gestão de configuração dedicados — o servidor que corre a sua monitorização pode correr o Vigo também.

Veja como se compara

Uma comparação detalhada com as ferramentas de gestão de configuração estabelecidas, e guias para a migração.

* O nível gratuito é fornecido TAL COMO ESTÁ sem obrigação de suporte. Ver Condições Comerciais.