Ir al contenido

Referencia de Configuración

Wippy se configura mediante archivos .wippy.yaml. Todas las opciones tienen valores por defecto razonables.

Cualquier valor a continuación puede sobrescribirse en el arranque con wippy run --set section.path=value (repetible, tiene prioridad sobre el archivo). Para sobrescribir entradas individuales del registro en lugar de estas secciones de configuración, usa la sección override: o -o — consulta Sobrescribir entradas.

Controla el codificador del logger zap. Los flags de CLI (-v, -c, -s) sobrescriben el nivel/salida; la única opción controlada por yaml es la codificación.

CampoTipoPor defectoDescripción
encodingstringconsoleCodificador: console (humanizado) o json (estructurado)
logger:
encoding: json

Controla el enrutamiento de registros del runtime. La salida en consola se configura mediante flags de CLI (-v, -c, -s).

CampoTipoPor defectoDescripción
propagate_downstreambooltrueEnviar registros a la salida de consola/archivo
stream_to_eventsboolfalsePublicar registros al bus de eventos para acceso programático
min_levelint-1Nivel mínimo: -1=debug, 0=info, 1=warn, 2=error
logmanager:
propagate_downstream: true
stream_to_events: false
min_level: 0

Ver: Módulo Logger

Servidor HTTP de pprof de Go para perfilado de CPU/memoria. Habilitarlo con el flag -p o mediante configuración.

CampoTipoPor defectoDescripción
enabledboolfalseIniciar servidor de perfilado
addressstringlocalhost:6060Dirección de escucha
read_timeoutduration15sTiempo de espera de lectura HTTP
write_timeoutduration15sTiempo de espera de escritura HTTP
idle_timeoutduration60sTiempo de espera de keep-alive
profiler:
enabled: true
address: "localhost:6060"

Acceso en http://localhost:6060/debug/pprof/

Comportamiento de seguridad global. Las políticas individuales se definen como entradas security.policy.

CampoTipoPor defectoDescripción
strict_modeboolfalseDenegar acceso cuando el contexto de seguridad está incompleto
security:
strict_mode: true

Ver: Sistema de Seguridad, Módulo de Seguridad

Almacenamiento de entradas e historial de versiones. El registro almacena todas las entradas de configuración.

CampoTipoPor defectoDescripción
enable_historybooltrueRastrear versiones de entradas
history_typestringmemoryAlmacenamiento: memory, sqlite, nil
history_pathstring.wippy/registry.dbRuta del archivo SQLite
registry:
history_type: sqlite
history_path: /var/lib/wippy/registry.db

Ver: Concepto de Registro, Módulo de Registro

Enrutamiento de mensajes entre procesos a través de nodos.

CampoTipoPor defectoDescripción
node_namestringlocalIdentificador de este nodo relay
relay:
node_name: worker-1

Ver: Modelo de Procesos

Gestión del ciclo de vida de servicios. Controla el buzón de control interno del supervisor utilizado para despachar eventos de ciclo de vida.

CampoTipoPor defectoDescripción
host.buffer_sizeint1024Capacidad del buzón de control interno
host.worker_countint16Workers del despachador concurrentes
supervisor:
host:
buffer_size: 2048
worker_count: 32

Ver: Guía de Supervisión

Los workers y colas por `process.host` se configuran en la propia entrada (`workers`, `queue_size`, `local_queue_size`), no en esta sección global. Ver el tipo de entrada [Process Host](system/process-host.md).

Caché de la VM de Lua y evaluación de expresiones.

CampoTipoPor defectoDescripción
proto_cache_sizeint60000Caché de prototipos compilados
main_cache_sizeint10000Caché del chunk principal
cache.enabledboolfalsePersistir caché de bytecode/verificación de tipos en disco
cache.dirstring(directorio de caché del sistema)Ruta del directorio de caché
cache.modestringread_writeModo de caché: read_write, read_only, write_only
type_system.enabledboolfalseHabilitar verificación estática de tipos
type_system.strictboolfalseTratar advertencias de tipos como errores
lua:
proto_cache_size: 60000
cache:
enabled: true
dir: .cache/lua
type_system:
enabled: true

Ver: Visión General de Lua

Caché de búsqueda del registro. Usado internamente para búsquedas de entradas.

CampoTipoPor defectoDescripción
query_cache_sizeint1000Resultados de consulta en caché
regex_cache_sizeint100Patrones de regex compilados
finder:
query_cache_size: 2000

Exportación de trazas distribuidas y métricas via OTLP.

CampoTipoPor defectoDescripción
enabledboolfalseHabilitar OTEL
endpointstringlocalhost:4318Endpoint OTLP
protocolstringhttp/protobufProtocolo: grpc, http/protobuf
service_namestringwippy-runtimeIdentificador del servicio
service_versionstringEtiqueta de versión del servicio
insecurebooltruePermitir conexión OTLP en texto plano
sample_ratefloat1.0Muestreo de trazas (0.0-1.0)
propagatorsstring[][tracecontext, baggage]Propagadores de contexto
traces_enabledbooltrueExportar trazas
metrics_enabledboolfalseExportar métricas
http.enabledbooltrueTrazar solicitudes HTTP
http.extract_headersbooltrueExtraer contexto de traza de cabeceras entrantes
http.inject_headersbooltrueInyectar contexto de traza en cabeceras salientes
process.enabledbooltrueTrazar ciclo de vida de procesos
process.trace_lifecyclebooltrueEmitir spans para spawn/terminate
interceptor.enabledbooltrueTrazar llamadas a funciones
interceptor.orderint100Prioridad del interceptor
queue.enabledbooltrueTrazar publicación/consumo de colas
temporal.enabledboolfalseTrazar workflows de Temporal
otel:
enabled: true
endpoint: "http://jaeger:4318"
traces_enabled: true
process:
trace_lifecycle: true

Las variables de entorno estándar de OTEL (OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_SERVICE_NAME, OTEL_TRACES_SAMPLER_ARG, OTEL_PROPAGATORS, OTEL_SDK_DISABLED) sobrescriben los campos correspondientes.

Ver: Guía de Observabilidad

Comportamiento de apagado controlado.

CampoTipoPor defectoDescripción
timeoutduration30sTiempo máximo de espera para que los componentes se detengan
shutdown:
timeout: 60s

Buffer interno de recolección de métricas.

CampoTipoPor defectoDescripción
buffer.sizeint10000Capacidad del buffer de métricas
interceptor.enabledboolfalseRastrear automáticamente llamadas a funciones
metrics:
buffer:
size: 20000
interceptor:
enabled: true

Ver: Módulo de Métricas, Guía de Observabilidad

Endpoint de métricas de Prometheus.

CampoTipoPor defectoDescripción
enabledboolfalseIniciar servidor de métricas
addressstringlocalhost:9090Dirección de escucha
prometheus:
enabled: true
address: "0.0.0.0:9090"

Expone el endpoint /metrics para el scraping de Prometheus.

Ver: Guía de Observabilidad

Clustering multi-nodo: membresía por gossip más un núcleo de consenso Raft acotado. Ver la Guía de Cluster para la arquitectura y el modelo operativo; esta sección es la referencia de claves de configuración.

CampoTipoPor defectoDescripción
enabledboolfalseHabilitar clustering
namestringhostnameNombre del nodo; debe ser único en el cluster
failure_domainstringEtiqueta de zona/rack; anunciada en gossip para que los votantes se distribuyan entre dominios

Gossip SWIM via memberlist. Usado para descubrimiento de nodos, detección de fallos y diseminación de metadatos.

CampoTipoPor defectoDescripción
membership.bind_addrstring0.0.0.0Dirección de enlace para gossip
membership.bind_portint7946Puerto de enlace para gossip (TCP+UDP)
membership.advertise_addrstringDirección que los peers usan para llegar a este nodo (NAT/k8s)
membership.join_addrsstringPares de semilla host:port separados por coma
membership.secret_keystringClave de cifrado para gossip codificada en Base64 (en línea)
membership.secret_filestringRuta al archivo que contiene la clave de cifrado para gossip

Malla TCP que transporta el tráfico de relay y Raft entre nodos. Raft viaja por esta malla (multiplexada con yamux); no hay un puerto Raft separado.

CampoTipoPor defectoDescripción
internode.bind_addrstring0.0.0.0Dirección de enlace de la malla
internode.bind_portint0Puerto de la malla (0 = automático: 7950-7959, luego efímero)
internode.auto_portbooltrueDescubrir el puerto real en el arranque, fijarlo y anunciarlo en gossip

Raft acotado. El estado de Raft es durable en disco por defecto, almacenado bajo raft.data_dir (por defecto ~/.wippy/store); un nodo reiniciado aún se une al quórum desde sus peers. Las entradas store.kv.raft se replican a través de él. El bootstrap es dirigido por gossip (estilo Consul/Nomad bootstrap_expect).

CampoTipoPor defectoDescripción
raft.data_dirstring~/.wippy/storeDirectorio para el estado de Raft durable en disco y los snapshots durables de CRDT (bajo <data_dir>/_sys/). Sin disco solo cuando no se resuelve ninguna ruta (sin directorio home y ninguna establecida)
raft.enabledbooltrueEjecutar un nodo Raft; false convierte este nodo en un cliente solo-gossip
raft.rolestringserverserver ejecuta un nodo Raft; client es solo-gossip
raft.eligiblebooltrueSi este nodo puede ser seleccionado como votante
raft.priorityint100Prioridad de selección de votante (valor menor es preferido)
raft.bootstrap_expectint1Tamaño inicial del quórum: 0=unirse a uno existente, 1=nodo único, N=esperar N peers elegibles para formar quórum
raft.max_votersint5Límite de votantes (debe ser impar); los nodos elegibles adicionales se convierten en standbys
raft.max_standbysint4Miembros no votantes mantenidos en espera para promoción; los nodos más allá de voters+standbys no son miembros Raft
raft.reconcile_debounceduration2sVentana de consolidación tras un evento de gossip antes de que se ejecute el reconciliador de votantes
raft.reconcile_timeoutduration2sLímite por pasada de reconciliación
raft.heartbeat_timeoutduration3sTiempo de espera inactivo del seguidor antes de iniciar una elección
raft.election_timeoutduration3sTiempo de espera de elección del candidato (limitado a >= heartbeat)
raft.commit_timeoutduration500msCadencia de heartbeat del líder inactivo
raft.snapshot_thresholduint648192Entradas de log desde el último snapshot antes de crear uno nuevo
raft.snapshot_intervalduration2mIntervalo de verificación de snapshots
raft.snapshot_retainint3Snapshots retenidos
raft.trailing_logsuint6410240Entradas de log retenidas tras un snapshot
raft.max_append_entriesint16Máximo de entradas por RPC AppendEntries
raft.leader_probe_intervalduration3sCadencia de sonda de alcanzabilidad del líder del registro global
raft.leader_probe_graceint3Fallos consecutivos de sonda antes de declarar al líder inalcanzable

Nodo único (desarrollo) — clustering activado, se bootstrapea inmediatamente:

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

Cluster de votación de tres nodos — cada nodo lista los otros como semillas y espera a los tres 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 solo-gossip — se une al cluster para naming/mensajería pero nunca ejecuta Raft:

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

Servidor del Protocolo de Servidor de Lenguaje para integraciones con editores.

CampoTipoPor defectoDescripción
enabledboolfalseHabilitar el servidor TCP
addressstring:7777Dirección de escucha TCP
http_enabledboolfalseHabilitar el transporte HTTP
http_addressstring:7778Dirección de escucha HTTP
http_pathstring/lspRuta del endpoint HTTP
http_allow_originstring*Origen permitido por CORS
max_message_bytesint8388608Tamaño máximo de mensaje entrante
lsp:
enabled: true
address: ":7777"
http_enabled: true

Ver: Guía de LSP

Gestor de red superpuesta (drivers SOCKS5, I2P, Tailscale).

CampoTipoPor defectoDescripción
state_dirstring.wippy/netDirectorio de almacenamiento del estado del driver
default_networkstringID de red por defecto aplicado cuando las entradas omiten network
network_service:
state_dir: /var/lib/wippy/net
default_network: app:tailscale

Ver: Redes Superpuestas

Ajuste del pool de clientes HTTP compartido utilizado por funciones despachadas HTTP y solicitudes salientes.

CampoTipoPor defectoDescripción
dispatcher.http.timeoutduration0 (ninguno)Tiempo de espera por solicitud
dispatcher.http.max_idle_connsint0 (stdlib)Máximo de conexiones inactivas en todos los hosts
dispatcher.http.max_idle_per_hostint0 (stdlib)Máximo de conexiones inactivas por host
dispatcher.http.idle_conn_timeoutduration0 (stdlib)Tiempo de espera de conexión inactiva
dispatcher.http.max_clientsint0 (ilimitado)Máximo de clientes distintos en el pool
dispatcher:
http:
timeout: 30s
max_idle_per_host: 32

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

CampoTipoPor defectoDescripción
registry_urlstringhttps://hub.wippy.aiEndpoint del registro
modules:
registry_url: https://internal-registry.example.com

Extensiones de plugin nativo de Go cargadas al inicio (solo Unix).

CampoTipoPor defectoDescripción
enabledbooltrueCargar extensiones
pathsstring[]Rutas de archivos de plugin (relativas al directorio de configuración)
extensions:
enabled: true
paths:
- ./extensions/myplugin.so
VariableDescripción
GOMEMLIMITLímite de memoria (sobrescribe el flag --memory-limit)