Pular para o conteúdo

Referência de Configuração

O Wippy é configurado via arquivos .wippy.yaml. Todas as opções têm padrões sensíveis.

Qualquer valor abaixo pode ser sobrescrito na inicialização com wippy run --set section.path=value (repetível, tem precedência sobre o arquivo). Para sobrescrever entradas individuais do registro em vez destas seções de configuração, use a seção override: ou -o — veja Sobrescrevendo Entradas.

Controla o encoder do logger zap. Flags do CLI (-v, -c, -s) sobrescrevem nível/saída; a única opção controlada por yaml é a codificação.

CampoTipoPadrãoDescrição
encodingstringconsoleEncoder: console (legível) ou json (estruturado)
logger:
encoding: json

Controla o roteamento de logs do runtime. A saída do console é configurada via flags do CLI (-v, -c, -s).

CampoTipoPadrãoDescrição
propagate_downstreambooltrueEnvia logs para saída console/arquivo
stream_to_eventsboolfalsePublica logs no barramento de eventos para acesso programático
min_levelint-1Nível mínimo: -1=debug, 0=info, 1=warn, 2=error
logmanager:
propagate_downstream: true
stream_to_events: false
min_level: 0

Veja: Módulo Logger

Servidor HTTP pprof do Go para profiling de CPU/memória. Habilite com a flag -p ou configuração.

CampoTipoPadrãoDescrição
enabledboolfalseInicia servidor do profiler
addressstringlocalhost:6060Endereço de escuta
read_timeoutduration15sTimeout de leitura HTTP
write_timeoutduration15sTimeout de escrita HTTP
idle_timeoutduration60sTimeout de keep-alive
profiler:
enabled: true
address: "localhost:6060"

Acesse em http://localhost:6060/debug/pprof/

Comportamento de segurança global. Políticas individuais são definidas como entradas security.policy.

CampoTipoPadrãoDescrição
strict_modeboolfalseNega acesso quando contexto de segurança está incompleto
security:
strict_mode: true

Veja: Sistema de Segurança, Módulo Security

Armazenamento de entradas e histórico de versões. O registro armazena todas as entradas de configuração.

CampoTipoPadrãoDescrição
enable_historybooltrueRastreia versões de entradas
history_typestringmemoryArmazenamento: memory, sqlite, nil
history_pathstring.wippy/registry.dbCaminho do arquivo SQLite
registry:
history_type: sqlite
history_path: /var/lib/wippy/registry.db

Veja: Conceito de Registro, Módulo Registry

Roteamento de mensagens entre processos através de nós.

CampoTipoPadrãoDescrição
node_namestringlocalIdentificador para este nó de relay
relay:
node_name: worker-1

Veja: Modelo de Processos

Gerenciamento de ciclo de vida de serviços. Controla a caixa de mensagens de controle interna do supervisor usada para despachar eventos de ciclo de vida.

CampoTipoPadrãoDescrição
host.buffer_sizeint1024Capacidade da caixa de mensagens de controle interna
host.worker_countint16Workers despachantes concorrentes
supervisor:
host:
buffer_size: 2048
worker_count: 32

Veja: Guia de Supervisão

Workers e filas por `process.host` são configurados na própria entrada (`workers`, `queue_size`, `local_queue_size`), não nesta seção global. Veja o tipo de entrada [Process Host](system/process-host.md).

Cache de VM Lua e avaliação de expressões.

CampoTipoPadrãoDescrição
proto_cache_sizeint60000Cache de protótipos compilados
main_cache_sizeint10000Cache de chunks principais
cache.enabledboolfalsePersistir cache de bytecode/typecheck compilado em disco
cache.dirstring(diretório de cache do sistema)Caminho do diretório de cache
cache.modestringread_writeModo de cache: read_write, read_only, write_only
type_system.enabledboolfalseHabilitar verificação estática de tipos
type_system.strictboolfalseTratar avisos de tipo como erros
lua:
proto_cache_size: 60000
cache:
enabled: true
dir: .cache/lua
type_system:
enabled: true

Veja: Visão Geral Lua

Cache de busca do registro. Usado internamente para consultas de entradas.

CampoTipoPadrãoDescrição
query_cache_sizeint1000Resultados de consulta em cache
regex_cache_sizeint100Padrões regex compilados
finder:
query_cache_size: 2000

Tracing distribuído e exportação de métricas via OTLP.

CampoTipoPadrãoDescrição
enabledboolfalseHabilita OTEL
endpointstringlocalhost:4318Endpoint OTLP
protocolstringhttp/protobufProtocolo: grpc, http/protobuf
service_namestringwippy-runtimeIdentificador do serviço
service_versionstringTag de versão do serviço
insecurebooltruePermite conexão OTLP em texto plano
sample_ratefloat1.0Amostragem de trace (0.0-1.0)
propagatorsstring[][tracecontext, baggage]Propagadores de contexto
traces_enabledbooltrueExporta traces
metrics_enabledboolfalseExporta métricas
http.enabledbooltrueRastreia requisições HTTP
http.extract_headersbooltrueExtrai contexto de trace dos cabeçalhos de entrada
http.inject_headersbooltrueInjeta contexto de trace nos cabeçalhos de saída
process.enabledbooltrueRastreia ciclo de vida de processos
process.trace_lifecyclebooltrueEmite spans para spawn/terminate
interceptor.enabledbooltrueRastreia chamadas de funções
interceptor.orderint100Prioridade do interceptor
queue.enabledbooltrueRastreia publicação/consumo de filas
temporal.enabledboolfalseRastreia workflows do Temporal
otel:
enabled: true
endpoint: "http://jaeger:4318"
traces_enabled: true
process:
trace_lifecycle: true

Variáveis de ambiente OTEL padrão (OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_SERVICE_NAME, OTEL_TRACES_SAMPLER_ARG, OTEL_PROPAGATORS, OTEL_SDK_DISABLED) sobrescrevem os campos correspondentes.

Veja: Guia de Observabilidade

Comportamento de encerramento gracioso.

CampoTipoPadrãoDescrição
timeoutduration30sTempo máximo de espera para componentes pararem
shutdown:
timeout: 60s

Buffer de coleta de métricas internas.

CampoTipoPadrãoDescrição
buffer.sizeint10000Capacidade do buffer de métricas
interceptor.enabledboolfalseRastreia chamadas de funções automaticamente
metrics:
buffer:
size: 20000
interceptor:
enabled: true

Veja: Módulo Metrics, Guia de Observabilidade

Endpoint de métricas Prometheus.

CampoTipoPadrãoDescrição
enabledboolfalseInicia servidor de métricas
addressstringlocalhost:9090Endereço de escuta
prometheus:
enabled: true
address: "0.0.0.0:9090"

Expõe endpoint /metrics para scraping do Prometheus.

Veja: Guia de Observabilidade

Clustering multi-nó: associação gossip mais um núcleo Raft de consenso limitado. Consulte o Guia de Cluster para a arquitetura e modelo operacional; esta seção é a referência de chaves de configuração.

CampoTipoPadrãoDescrição
enabledboolfalseHabilita clustering
namestringhostnameNome do nó; deve ser único no cluster
failure_domainstringLabel de zona/rack; anunciado via gossip para que voters se distribuam entre domínios

Gossip SWIM via memberlist. Usado para descoberta de nós, detecção de falhas e disseminação de metadados.

CampoTipoPadrãoDescrição
membership.bind_addrstring0.0.0.0Endereço de bind do gossip
membership.bind_portint7946Porta de bind do gossip (TCP+UDP)
membership.advertise_addrstringEndereço que os peers usam para alcançar este nó (NAT/k8s)
membership.join_addrsstringPares seed host:port separados por vírgula
membership.secret_keystringChave de criptografia gossip codificada em base64 (inline)
membership.secret_filestringCaminho para arquivo contendo a chave de criptografia gossip

Malha TCP que transporta o tráfego de relay e Raft entre nós. O Raft usa esta malha (multiplexado com yamux); não há porta Raft separada.

CampoTipoPadrãoDescrição
internode.bind_addrstring0.0.0.0Endereço de bind da malha
internode.bind_portint0Porta da malha (0 = auto: 7950-7959, depois efêmera)
internode.auto_portbooltrueDescobrir a porta real no boot, fixá-la e anunciá-la via gossip

Raft limitado. O estado do Raft é durável em disco por padrão, armazenado sob raft.data_dir (padrão ~/.wippy/store); um nó reiniciado ainda rejoina o quórum a partir dos peers. As entradas store.kv.raft replicam através dele. O bootstrap é conduzido por gossip (estilo bootstrap_expect do Consul/Nomad).

CampoTipoPadrãoDescrição
raft.data_dirstring~/.wippy/storeDiretório para o estado durável do Raft em disco e snapshots duráveis do CRDT (sob <data_dir>/_sys/). Sem disco apenas quando nenhum caminho é resolvido (sem diretório home e nenhum definido)
raft.enabledbooltrueExecuta um nó Raft; false torna este um cliente apenas gossip
raft.rolestringserverserver executa um nó Raft; client é apenas gossip
raft.eligiblebooltrueSe este nó pode ser selecionado como voter
raft.priorityint100Prioridade de seleção de voter (menor é preferido)
raft.bootstrap_expectint1Tamanho inicial do quórum: 0=apenas se juntar a um existente, 1=nó único, N=aguardar N peers elegíveis antes de formar quórum
raft.max_votersint5Teto de voters (deve ser ímpar); nós elegíveis extras tornam-se standbys
raft.max_standbysint4Membros não-votantes mantidos prontos para promoção; nós além de voters+standbys não são membros Raft
raft.reconcile_debounceduration2sJanela de coalescência após um evento gossip antes do reconciliador de voters executar
raft.reconcile_timeoutduration2sLimite por passagem de reconciliação
raft.heartbeat_timeoutduration3sTempo de espera ocioso do follower antes de iniciar uma eleição
raft.election_timeoutduration3sTimeout de eleição do candidato (limitado a >= heartbeat)
raft.commit_timeoutduration500msCadência de heartbeat do leader ocioso
raft.snapshot_thresholduint648192Entradas de log desde o último snapshot antes de criar um novo
raft.snapshot_intervalduration2mIntervalo de verificação de snapshot
raft.snapshot_retainint3Snapshots retidos
raft.trailing_logsuint6410240Entradas de log retidas após um snapshot
raft.max_append_entriesint16Máximo de entradas por RPC AppendEntries
raft.leader_probe_intervalduration3sCadência de sondagem de alcançabilidade do leader do registro global
raft.leader_probe_graceint3Falhas consecutivas de sondagem antes de declarar o leader inacessível

Nó único (desenvolvimento) — clustering ativo, bootstrap imediato:

cluster:
enabled: true
name: dev
raft:
bootstrap_expect: 1

Cluster de três voters — cada nó lista os outros como seeds e aguarda os três antes de formar quórum:

cluster:
enabled: true
name: node-1
failure_domain: us-east-1a
membership:
bind_port: 7946
join_addrs: "node-2:7946,node-3:7946"
secret_file: /etc/wippy/cluster.key
raft:
bootstrap_expect: 3
max_voters: 5

Cliente apenas gossip — junta-se ao cluster para nomeação/mensagens mas nunca executa Raft:

cluster:
enabled: true
name: edge-7
membership:
join_addrs: "node-1:7946,node-2:7946"
raft:
role: client

Servidor do Language Server Protocol para integrações com editores.

CampoTipoPadrãoDescrição
enabledboolfalseHabilitar o servidor TCP
addressstring:7777Endereço de escuta TCP
http_enabledboolfalseHabilitar o transporte HTTP
http_addressstring:7778Endereço de escuta HTTP
http_pathstring/lspCaminho do endpoint HTTP
http_allow_originstring*Origem permitida por CORS
max_message_bytesint8388608Tamanho máximo de mensagem recebida
lsp:
enabled: true
address: ":7777"
http_enabled: true

Veja: Guia do LSP

Gerenciador de redes overlay (drivers SOCKS5, I2P, Tailscale).

CampoTipoPadrãoDescrição
state_dirstring.wippy/netDiretório de armazenamento do estado do driver
default_networkstringID de rede padrão aplicado quando entradas omitem network
network_service:
state_dir: /var/lib/wippy/net
default_network: app:tailscale

Veja: Overlays de Rede

Ajuste para o pool de clientes HTTP compartilhado usado por funções despachadas via HTTP e requisições de saída.

CampoTipoPadrãoDescrição
dispatcher.http.timeoutduration0 (nenhum)Timeout por requisição
dispatcher.http.max_idle_connsint0 (stdlib)Máximo de conexões ociosas em todos os hosts
dispatcher.http.max_idle_per_hostint0 (stdlib)Máximo de conexões ociosas por host
dispatcher.http.idle_conn_timeoutduration0 (stdlib)Timeout de conexão ociosa
dispatcher.http.max_clientsint0 (ilimitado)Máximo de clientes distintos em pool
dispatcher:
http:
timeout: 30s
max_idle_per_host: 32

Cliente do registro de módulos usado por wippy install/update.

CampoTipoPadrãoDescrição
registry_urlstringhttps://hub.wippy.aiEndpoint do registro
modules:
registry_url: https://internal-registry.example.com

Extensões nativas de plugin Go carregadas no boot (somente Unix).

CampoTipoPadrãoDescrição
enabledbooltrueCarregar extensões
pathsstring[]Caminhos dos arquivos de plugin (relativos ao diretório de configuração)
extensions:
enabled: true
paths:
- ./extensions/myplugin.so
VariávelDescrição
GOMEMLIMITLimite de memória (sobrescreve flag --memory-limit)