Zum Inhalt springen

Konfigurationsreferenz

Wippy wird über .wippy.yaml-Dateien konfiguriert. Alle Optionen haben sinnvolle Standardwerte.

Jeder Wert unten kann beim Start mit wippy run --set section.path=value überschrieben werden (wiederholbar, hat Vorrang vor der Datei). Um einzelne Registry-Einträge statt dieser Konfigurationsabschnitte zu überschreiben, verwenden Sie den Abschnitt override: oder -o — siehe Einträge überschreiben.

Steuert den zap-Logger-Encoder. CLI-Flags (-v, -c, -s) überschreiben Level/Ausgabe; die einzige yaml-gesteuerte Option ist die Kodierung.

FeldTypStandardBeschreibung
encodingstringconsoleEncoder: console (menschenlesbar) oder json (strukturiert)
logger:
encoding: json

Steuert das Runtime-Log-Routing. Konsolenausgabe wird über CLI-Flags (-v, -c, -s) konfiguriert.

FeldTypStandardBeschreibung
propagate_downstreambooltrueLogs an Konsolen-/Dateiausgabe senden
stream_to_eventsboolfalseLogs für programmatischen Zugriff zum Event-Bus veröffentlichen
min_levelint-1Minimales Level: -1=debug, 0=info, 1=warn, 2=error
logmanager:
propagate_downstream: true
stream_to_events: false
min_level: 0

Siehe: Logger-Modul

Go pprof HTTP-Server für CPU-/Speicher-Profiling. Mit -p Flag oder Konfiguration aktivieren.

FeldTypStandardBeschreibung
enabledboolfalseProfiler-Server starten
addressstringlocalhost:6060Adresse zum Lauschen
read_timeoutduration15sHTTP Read-Timeout
write_timeoutduration15sHTTP Write-Timeout
idle_timeoutduration60sKeep-Alive-Timeout
profiler:
enabled: true
address: "localhost:6060"

Zugriff unter http://localhost:6060/debug/pprof/

Globales Sicherheitsverhalten. Individuelle Richtlinien werden als security.policy-Einträge definiert.

FeldTypStandardBeschreibung
strict_modeboolfalseZugriff verweigern wenn Sicherheitskontext unvollständig
security:
strict_mode: true

Siehe: Sicherheitssystem, Sicherheitsmodul

Eintragsspeicherung und Versionshistorie. Die Registry enthält alle Konfigurationseinträge.

FeldTypStandardBeschreibung
enable_historybooltrueEintragsversionen verfolgen
history_typestringmemorySpeicher: memory, sqlite, nil
history_pathstring.wippy/registry.dbSQLite-Dateipfad
registry:
history_type: sqlite
history_path: /var/lib/wippy/registry.db

Siehe: Registry-Konzept, Registry-Modul

Nachrichtenrouting zwischen Prozessen über Knoten hinweg.

FeldTypStandardBeschreibung
node_namestringlocalBezeichner für diesen Relay-Knoten
relay:
node_name: worker-1

Siehe: Prozessmodell

Dienst-Lebenszyklus-Verwaltung. Steuert das interne Steuerungs-Postfach des Supervisors, das zum Versand von Lebenszyklus-Ereignissen verwendet wird.

FeldTypStandardBeschreibung
host.buffer_sizeint1024Kapazität des internen Steuerungs-Postfachs
host.worker_countint16Nebenläufige Dispatcher-Worker
supervisor:
host:
buffer_size: 2048
worker_count: 32

Siehe: Supervision-Anleitung

Worker und Warteschlangen pro `process.host` werden am Eintrag selbst konfiguriert (`workers`, `queue_size`, `local_queue_size`), nicht in diesem globalen Abschnitt. Siehe den [Process Host](system/process-host.md)-Eintragstyp.

Lua-VM-Caching und Expression-Auswertung.

FeldTypStandardBeschreibung
proto_cache_sizeint60000Kompilierter Prototype-Cache
main_cache_sizeint10000Main-Chunk-Cache
cache.enabledboolfalseKompilierten Bytecode-/Typecheck-Cache auf Disk persistieren
cache.dirstring(System-Cache-Verzeichnis)Cache-Verzeichnis-Pfad
cache.modestringread_writeCache-Modus: read_write, read_only, write_only
type_system.enabledboolfalseStatische Typprüfung aktivieren
type_system.strictboolfalseTypwarnungen als Fehler behandeln
lua:
proto_cache_size: 60000
cache:
enabled: true
dir: .cache/lua
type_system:
enabled: true

Siehe: Lua-Übersicht

Registry-Such-Caching. Wird intern für Eintrags-Lookups verwendet.

FeldTypStandardBeschreibung
query_cache_sizeint1000Gecachte Abfrageergebnisse
regex_cache_sizeint100Kompilierte Regex-Muster
finder:
query_cache_size: 2000

Verteiltes Tracing und Metrik-Export über OTLP.

FeldTypStandardBeschreibung
enabledboolfalseOTEL aktivieren
endpointstringlocalhost:4318OTLP-Endpunkt
protocolstringhttp/protobufProtokoll: grpc, http/protobuf
service_namestringwippy-runtimeDienst-Bezeichner
service_versionstringDienst-Versions-Tag
insecurebooltrueUnverschlüsselte OTLP-Verbindung zulassen
sample_ratefloat1.0Trace-Sampling (0.0-1.0)
propagatorsstring[][tracecontext, baggage]Context-Propagatoren
traces_enabledbooltrueTraces exportieren
metrics_enabledboolfalseMetriken exportieren
http.enabledbooltrueHTTP-Anfragen tracen
http.extract_headersbooltrueTrace-Context aus eingehenden Headern extrahieren
http.inject_headersbooltrueTrace-Context in ausgehende Header einfügen
process.enabledbooltrueProzess-Lebenszyklus tracen
process.trace_lifecyclebooltrueSpans für spawn/terminate ausgeben
interceptor.enabledbooltrueFunktionsaufrufe tracen
interceptor.orderint100Interceptor-Priorität
queue.enabledbooltrueQueue publish/consume tracen
temporal.enabledboolfalseTemporal-Workflows tracen
otel:
enabled: true
endpoint: "http://jaeger:4318"
traces_enabled: true
process:
trace_lifecycle: true

Standard-OTEL-Umgebungsvariablen (OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_SERVICE_NAME, OTEL_TRACES_SAMPLER_ARG, OTEL_PROPAGATORS, OTEL_SDK_DISABLED) überschreiben die entsprechenden Felder.

Siehe: Observability-Anleitung

Verhalten beim kontrollierten Herunterfahren.

FeldTypStandardBeschreibung
timeoutduration30sMaximale Wartezeit für Komponenten zum Stoppen
shutdown:
timeout: 60s

Interner Metriken-Sammlungspuffer.

FeldTypStandardBeschreibung
buffer.sizeint10000Metriken-Puffer-Kapazität
interceptor.enabledboolfalseFunktionsaufrufe automatisch verfolgen
metrics:
buffer:
size: 20000
interceptor:
enabled: true

Siehe: Metriken-Modul, Observability-Anleitung

Prometheus-Metriken-Endpunkt.

FeldTypStandardBeschreibung
enabledboolfalseMetriken-Server starten
addressstringlocalhost:9090Adresse zum Lauschen
prometheus:
enabled: true
address: "0.0.0.0:9090"

Stellt /metrics-Endpunkt für Prometheus-Scraping bereit.

Siehe: Observability-Anleitung

Multi-Node-Clustering: Gossip-Mitgliedschaft plus ein begrenzter Raft-Konsenskern. Siehe den Cluster-Leitfaden für Architektur und Betriebsmodell; dieser Abschnitt ist die Konfigurationsschlüssel-Referenz.

FeldTypStandardBeschreibung
enabledboolfalseClustering aktivieren
namestringhostnameKnotenname; muss im Cluster eindeutig sein
failure_domainstringZonen-/Rack-Label; im Gossip beworben, damit Voter über Domains verteilt werden

SWIM-Gossip über memberlist. Wird für Knotenentdeckung, Fehlererkennung und Metadaten-Verbreitung verwendet.

FeldTypStandardBeschreibung
membership.bind_addrstring0.0.0.0Gossip-Bind-Adresse
membership.bind_portint7946Gossip-Bind-Port (TCP+UDP)
membership.advertise_addrstringAdresse, die Peers verwenden, um diesen Knoten zu erreichen (NAT/k8s)
membership.join_addrsstringKommagetrennte Seed-host:port-Paare
membership.secret_keystringBase64-kodierter Gossip-Verschlüsselungsschlüssel (inline)
membership.secret_filestringPfad zur Datei mit dem Gossip-Verschlüsselungsschlüssel

TCP-Mesh für Relay- und Raft-Verkehr zwischen Knoten. Raft nutzt dieses Mesh (yamux-multiplexiert); es gibt keinen separaten Raft-Port.

FeldTypStandardBeschreibung
internode.bind_addrstring0.0.0.0Mesh-Bind-Adresse
internode.bind_portint0Mesh-Port (0 = auto: 7950-7959, dann ephemer)
internode.auto_portbooltrueTatsächlichen Port beim Start ermitteln, festlegen und im Gossip bewerben

Begrenztes Raft. Der Raft-Zustand ist standardmäßig fs-dauerhaft und wird unter raft.data_dir (Standard ~/.wippy/store) gespeichert; ein neugestarteter Knoten tritt dem Quorum dennoch von Peers wieder bei. store.kv.raft-Einträge replizieren darüber. Bootstrap ist gossip-gesteuert (Consul/Nomad bootstrap_expect-Stil).

FeldTypStandardBeschreibung
raft.data_dirstring~/.wippy/storeVerzeichnis für fs-dauerhaften Raft-Zustand und dauerhafte CRDT-Snapshots (unter <data_dir>/_sys/). Festplatten-los nur, wenn kein Pfad aufgelöst wird (kein Home-Verzeichnis und keiner gesetzt)
raft.enabledbooltrueRaft-Knoten betreiben; false macht diesen zum reinen Gossip-Client
raft.rolestringserverserver betreibt einen Raft-Knoten; client ist nur Gossip
raft.eligiblebooltrueOb dieser Knoten als Voter ausgewählt werden darf
raft.priorityint100Voter-Auswahlpriorität (niedrigerer Wert wird bevorzugt)
raft.bootstrap_expectint1Initiale Quorumgröße: 0=bestehendem beitreten, 1=Einzelknoten, N=auf N berechtigte Peers warten, dann Quorum bilden
raft.max_votersint5Voter-Obergrenze (muss ungerade sein); zusätzliche berechtigte Knoten werden Standbys
raft.max_standbysint4Nicht-abstimmende Mitglieder, warm gehalten für Beförderung; Knoten jenseits voters+standbys sind keine Raft-Mitglieder
raft.reconcile_debounceduration2sKoaleszenzfenster nach einem Gossip-Ereignis, bevor der Voter-Reconciler läuft
raft.reconcile_timeoutduration2sSchranke pro Reconcile-Durchlauf
raft.heartbeat_timeoutduration3sFollower-Leerlaufwartzeit vor dem Start einer Wahl
raft.election_timeoutduration3sKandidaten-Wahltimeout (mindestens heartbeat)
raft.commit_timeoutduration500msHeartbeat-Takt des Leerlauf-Leaders
raft.snapshot_thresholduint648192Log-Einträge seit dem letzten Snapshot, bevor ein neuer erstellt wird
raft.snapshot_intervalduration2mSnapshot-Prüfintervall
raft.snapshot_retainint3Beibehaltene Snapshots
raft.trailing_logsuint6410240Nach einem Snapshot beibehaltene Log-Einträge
raft.max_append_entriesint16Maximale Einträge pro AppendEntries RPC
raft.leader_probe_intervalduration3sTakt der Globale-Registry-Leader-Erreichbarkeits-Probe
raft.leader_probe_graceint3Aufeinanderfolgende Probe-Fehler, bevor Leader als nicht erreichbar gilt

Einzelknoten (Entwicklung) — Clustering aktiviert, bootstrappt sich sofort:

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

Drei-Knoten-Voting-Cluster — jeder Knoten listet die anderen als Seeds und wartet auf alle drei vor der Quorumbildung:

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

Gossip-only-Client — tritt dem Cluster für Benennung/Messaging bei, betreibt nie Raft:

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

Language-Server-Protocol-Server für Editor-Integrationen.

FeldTypStandardBeschreibung
enabledboolfalseTCP-Server aktivieren
addressstring:7777TCP-Listen-Adresse
http_enabledboolfalseHTTP-Transport aktivieren
http_addressstring:7778HTTP-Listen-Adresse
http_pathstring/lspHTTP-Endpunkt-Pfad
http_allow_originstring*CORS Allowed-Origin
max_message_bytesint8388608Maximale Größe eingehender Nachrichten
lsp:
enabled: true
address: ":7777"
http_enabled: true

Siehe: LSP-Anleitung

Overlay-Netzwerk-Manager (SOCKS5-, I2P-, Tailscale-Treiber).

FeldTypStandardBeschreibung
state_dirstring.wippy/netVerzeichnis für Treiber-Statusspeicherung
default_networkstringStandard-Netzwerk-ID, die angewendet wird, wenn Einträge network weglassen
network_service:
state_dir: /var/lib/wippy/net
default_network: app:tailscale

Siehe: Netzwerk-Overlays

Tuning für den gemeinsamen HTTP-Client-Pool, der von HTTP-dispatched Funktionen und ausgehenden Anfragen verwendet wird.

FeldTypStandardBeschreibung
dispatcher.http.timeoutduration0 (kein)Timeout pro Anfrage
dispatcher.http.max_idle_connsint0 (stdlib)Maximale Leerlaufverbindungen über alle Hosts
dispatcher.http.max_idle_per_hostint0 (stdlib)Maximale Leerlaufverbindungen pro Host
dispatcher.http.idle_conn_timeoutduration0 (stdlib)Leerlaufverbindungs-Timeout
dispatcher.http.max_clientsint0 (unbegrenzt)Maximale unterschiedliche gepoolte Clients
dispatcher:
http:
timeout: 30s
max_idle_per_host: 32

Modul-Registry-Client, der von wippy install/update verwendet wird.

FeldTypStandardBeschreibung
registry_urlstringhttps://hub.wippy.aiRegistry-Endpunkt
modules:
registry_url: https://internal-registry.example.com

Native Go-Plugin-Erweiterungen, die beim Booten geladen werden (nur Unix).

FeldTypStandardBeschreibung
enabledbooltrueErweiterungen laden
pathsstring[]Plugin-Dateipfade (relativ zum Konfigurationsverzeichnis)
extensions:
enabled: true
paths:
- ./extensions/myplugin.so
VariableBeschreibung
GOMEMLIMITSpeicherlimit (überschreibt --memory-limit Flag)