設定リファレンス
Wippy は .wippy.yaml ファイルからランタイム設定を読み取ります。
以下の設定フィールドは、繰り返し指定できる wippy run --set section.path=value オプションを使用して起動時に上書きできます。これらの設定セクションではなく個々のレジストリエントリを上書きするには、override: セクションまたは -o を使用します。エントリの上書きを参照してください。
設定の合成 {#config-composition}
--config は繰り返し指定でき、同じスキーマを用いてファイルを左から右に合成します:
wippy run --config .wippy.yaml --config .wippy.local.yaml
- 後のファイルは一致する値を上書きし、それ以外はすべて保持します。
- 明示的に指定したファイルはすべて存在しなければなりません。
--configなしの場合、デフォルトの.wippy.yamlは任意です。 - 最初のファイルが、相対パスの解決に使われるディレクトリを決めます。
- ファイル名に予約された意味はありません。デフォルト以外は何も自動探索されません。
設定は、合成されたファイル、選択された --profile オーバーレイ、--set の上書きの順に適用されます。パックから実行されるアプリケーションでは、パックされたランタイムデフォルトの優先順位はこれら 3 つより低くなります。ランタイムデフォルトの公開を参照してください。
プロファイル {#profiles}
設定ファイルは profiles: の下に名前付きオーバーレイを宣言できます。各プロファイルの本体は通常の設定セクションと同じ構造で、--profile <name> で選択すると、マージされたベース設定にその値がオーバーレイされます:
version: "1.0"
vars:
port: 8085
override:
app:db:kind: db.sql.sqlite
disable:
namespaces: ["legacy.**"]
profiles:
pg:
vars:
port: 18085
override:
app:db:kind: db.sql.postgres
disable:
namespaces.add: ["experimental.**"]
wippy run --profile pg
--profileは繰り返し指定できます。プロファイルはファイル合成の後、--setの前に左から右へ合成されます。未知の名前はエラーです。- 値はリーフ単位でマージされます(最後の書き込みが優先)。
profiles:セクション自体は解決後の設定から取り除かれます。 disableセクションはプロファイル内でのリスト操作をサポートします —namespaces.add、namespaces.remove、entries.add、entries.remove— これにより、プロファイルはベースのリストを置き換えるのではなく調整できます。${name}参照はマージ後のvars:セクションから補間されます。プロファイルの vars 内で OS 環境変数を参照することはできません。ベース設定で${env:NAME}を使用してください。これはファイルのロード時に解決されます。
wippy run、test、pack は --profile を受け付けます。run list、install、update、lint、registry もワークスペースプロファイル用にこれを受け付けます(--set と併せて)。アプリケーションはプロファイルをパック内に同梱できます — プロファイルの公開を参照してください。
Logger
zap ロガーのエンコーダを制御します。CLI フラグ(-v, -c, -s)はレベル/出力を上書きします。yaml で制御できる唯一のオプションはエンコーディングです。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
encoding |
string | console | エンコーダ: console(人間可読)または json(構造化) |
logger:
encoding: json
ログマネージャ
ランタイムログルーティングを制御します。コンソール出力は CLI フラグ(-v, -c, -s)で設定します。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
propagate_downstream |
bool | true | ログをコンソール/ファイル出力に送信 |
stream_to_events |
bool | false | プログラムアクセス用にログをイベントバスに公開 |
min_level |
int | 0(-v 指定時は -1) |
最小レベル: -1=debug, 0=info, 1=warn, 2=error。CLI はファイル読み込み後に自身のフラグからこのキーを書き込むため、ファイルの値は無視されます。変更するには --set logmanager.min_level=<n> を使用してください |
logmanager:
propagate_downstream: true
stream_to_events: false
参照: ロガーモジュール
プロファイラ
CPU/メモリプロファイリング用のGo pprof HTTPサーバー。-pフラグまたは設定で有効化。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled |
bool | false | プロファイラサーバーを起動 |
address |
string | localhost:6060 | リッスンアドレス |
read_timeout |
duration | 15s | HTTP読み取りタイムアウト |
write_timeout |
duration | 15s | HTTP書き込みタイムアウト |
idle_timeout |
duration | 60s | Keep-aliveタイムアウト |
profiler:
enabled: true
address: "localhost:6060"
デフォルトのアドレスで有効にすると、プロファイラは http://localhost:6060/debug/pprof/ で利用できます。
セキュリティ
グローバルなセキュリティ動作です。個別のポリシーは security.policy エントリとして定義されます。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
strict_mode |
bool | true | セキュリティコンテキストが不完全な場合にアクセスを拒否 |
security:
strict_mode: false
参照: セキュリティシステム, セキュリティモジュール
レジストリ {#registry}
エントリストレージとバージョン履歴。レジストリはすべての設定エントリを保持します。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
enable_history |
bool | true | エントリバージョンを追跡 |
history_type |
string | memory | ストレージ: memory、sqlite、postgres、nil |
history_path |
string | .wippy/registry.db | SQLiteファイルパス(history_type: sqlite の場合に使用) |
history_dsn |
string | Postgres DSN(history_type: postgres の場合に使用) |
|
history_schema |
string | Postgres スキーマ名(history_type: postgres の場合に使用) |
|
event_wait_timeout |
duration | 30s | レジストリ適用中のリスナー確認応答を待つ、操作ごとの待機時間 |
dispatch_internal_kinds |
string[] | [registry.entry, ns.dependency, ns.requirement, ns.definition] |
コンポーネントリスナーにディスパッチせず内部で処理されるエントリ種別 |
dependency_resolve_timeout |
duration | 0(なし) | 依存関係解決の上限 |
dependency_download_timeout |
duration | 0(なし) | 各モジュールのダウンロードおよびダウンロードURL要求の上限 |
dependency_lock_path |
string | 検出された wippy.lock |
依存関係ハンドラが読み書きするロックファイル |
dependency_vendor_dir |
string | <lock dir>/<directories.modules>/vendor |
ダウンロードされたモジュールパックを格納するディレクトリ |
registry:
history_type: sqlite
history_path: /var/lib/wippy/registry.db
registry:
history_type: postgres
history_dsn: ${env:WIPPY_REGISTRY_HISTORY_DSN}
history_schema: wippy_registry
参照: レジストリコンセプト, レジストリモジュール
アーティファクト
実体化されたビルド時アーティファクトの出力ルート。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
materialization_root |
string | 依存関係の vendor ディレクトリの親 | 各アーティファクト形式が自身のサブツリーを書き込む、アプリケーション所有のルート |
artifact:
materialization_root: build/wippy
参照: ビルド時アーティファクト
ワークスペース
org/module をキーとするローカルモジュールの置き換え。値はディレクトリで、相対パスは最初の --config ファイルのディレクトリを基準に解決されます。null は、以前の設定レイヤーやプロファイルから継承した置き換えを無効化します。
workspace:
replacements:
acme/http: ../local-http
acme/sql: null
置き換えが wippy.lock に書き込まれることはありません。置き換えによるローカル開発を参照してください。
リレー
ノード間のプロセス間メッセージルーティング。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
node_name |
string | インスタンスごとに導出される ID | このリレーノードの識別子(デフォルト: machine-id/ホスト名 + 作業ディレクトリの UUIDv5。WIPPY_NODE_ID / WIPPY_RELAY_NODE_NAME で上書き可能) |
relay:
node_name: worker-1
参照: プロセスモデル
スーパーバイザ
サービスライフサイクル管理。ライフサイクルイベントのディスパッチに使用されるスーパーバイザの内部制御メールボックスを制御します。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
host.buffer_size |
int | 1024 | 内部制御メールボックスの容量 |
host.worker_count |
int | 16 | 同時ディスパッチャーワーカー数 |
supervisor:
host:
buffer_size: 2048
worker_count: 32
参照: スーパービジョンガイド
Luaランタイム
Lua VMキャッシュと式評価。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
cache.enabled |
bool | type_system.enabled |
コンパイル済みバイトコード/型チェックキャッシュをディスクに永続化。明示的に設定しない限り type_system.enabled に従う |
cache.dir |
string | .wippy/cache/lua |
キャッシュディレクトリパス(設定/作業ディレクトリからの相対) |
cache.mode |
string | readwrite |
キャッシュモード: readwrite(デフォルト)、readonly、off。未知の値は readwrite にフォールバックする |
cache.compile.enabled |
bool | true | コンパイル済みバイトコードを永続化(cache.enabled の場合) |
cache.typecheck.enabled |
bool | true | 型チェック結果を永続化(cache.enabled の場合) |
cache.max_bytes |
int | 1073741824 | ディスク上のキャッシュサイズ上限(バイト) |
cache.max_entries |
int | 20000 | キャッシュエントリの最大数 |
cache.prune_interval |
int | 256 | キャッシュの整理パス間の書き込み回数 |
type_system.enabled |
bool | false | 静的型チェックを有効化 |
type_system.strict |
bool | false | 型警告をエラーとして扱う |
invalidation_wait_timeout |
duration | registry.event_wait_timeout(30s) |
エントリ変更後、コードの無効化が確認応答されるまでの待機時間 |
eval.max_steps |
int | 10000 | eval 実行のデフォルトのスケジューラステップ予算。負の値は拒否される |
eval.cache_size |
int | 256 | 評価されたソースのコンパイル済みプログラムキャッシュのエントリ数 |
eval.cache_ttl |
duration | 0(期限なし) | キャッシュされたコンパイル済みプログラムの寿命 |
lua:
cache:
enabled: true
dir: .cache/lua
type_system:
enabled: true
参照: Lua概要
スケジューラ
WASM ランタイム向けのコア分割。有効にすると reserved_cores 個の CPU が WASM 実行のために確保され、残りがアクターのスケジューラに割り当てられます。不正な分割(たとえば利用可能な数より多いコアの予約)はログに記録され、無視されます。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
wasm_isolation.enabled |
bool | false | WASM とアクターの作業でコアを分割 |
wasm_isolation.reserved_cores |
int | 1 | WASM 実行のために確保するコア数 |
scheduler:
wasm_isolation:
enabled: true
reserved_cores: 2
ファインダー
レジストリ検索キャッシュ。エントリルックアップに内部的に使用されます。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
query_cache_size |
int | 1000 | キャッシュされたクエリ結果 |
regex_cache_size |
int | 100 | コンパイル済み正規表現パターン |
finder:
query_cache_size: 2000
OpenTelemetry
OTLPによる分散トレーシングとメトリクスエクスポート。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled |
bool | false | OTELを有効化 |
endpoint |
string | localhost:4318 | OTLPエンドポイント |
protocol |
string | http/protobuf | プロトコル: grpc, http/protobuf |
service_name |
string | wippy-runtime | サービス識別子 |
service_version |
string | サービスバージョンタグ | |
insecure |
bool | true | 平文 OTLP 接続を許可 |
sample_rate |
float | 1.0 | トレースサンプリング(0.0-1.0) |
propagators |
string[] | [tracecontext, baggage] |
コンテキストプロパゲータ |
traces_enabled |
bool | true | トレースをエクスポート |
metrics_enabled |
bool | false | メトリクスをエクスポート |
http.enabled |
bool | true | HTTPリクエストをトレース |
http.extract_headers |
bool | true | 受信ヘッダからトレースコンテキストを抽出 |
http.inject_headers |
bool | true | HTTP レスポンスにトレースコンテキストを注入 |
process.enabled |
bool | true | プロセスライフサイクルをトレース |
process.trace_lifecycle |
bool | true | spawn/terminate の span を発行 |
interceptor.enabled |
bool | true | 関数呼び出しをトレース |
interceptor.order |
int | 100 | デコードされる互換性フィールド。ランタイム v0.3.32a は、この値にかかわらずインターセプタを順序 100 で登録 |
queue.enabled |
bool | true | キューの publish/consume をトレース |
temporal.enabled |
bool | false | Temporal ワークフローをトレース |
otel:
enabled: true
endpoint: "http://jaeger:4318"
traces_enabled: true
process:
trace_lifecycle: true
標準 OTEL 環境変数(OTEL_SDK_DISABLED、OTEL_EXPORTER_OTLP_ENDPOINT、OTEL_EXPORTER_OTLP_PROTOCOL、OTEL_EXPORTER_OTLP_INSECURE、OTEL_SERVICE_NAME、OTEL_SERVICE_VERSION、OTEL_TRACES_SAMPLER、OTEL_TRACES_SAMPLER_ARG、OTEL_PROPAGATORS)は一致するフィールドを上書きします。
参照: 可観測性ガイド
シャットダウン
グレースフルシャットダウン動作。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
timeout |
duration | 30s | コンポーネント停止の最大待機時間 |
shutdown:
timeout: 60s
メトリクス
内部メトリクス収集バッファ。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
buffer.size |
int | 10000 | メトリクスバッファ容量 |
interceptor.enabled |
bool | true | 関数呼び出しを自動追跡 |
metrics:
buffer:
size: 20000
interceptor:
enabled: true
参照: メトリクスモジュール, 可観測性ガイド
Prometheus
Prometheusメトリクスエンドポイント。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled |
bool | false | メトリクスサーバーを起動 |
address |
string | リッスンアドレス。enabled: true の場合は明示的に設定する必要があります。設定しないとメトリクスサーバーは起動しません |
|
max_cardinality |
int | 1024 | メトリクスごとに保持される個別のラベルセット数(LRU)。0 以下はデフォルトを使用 |
prometheus:
enabled: true
address: "0.0.0.0:9090"
Prometheusスクレイピング用の/metricsエンドポイントに加え、/livezを公開します。
参照: 可観測性ガイド
クラスタ {#cluster}
マルチノードクラスタリング: ゴシップメンバーシップと有界 Raft コンセンサスコア。アーキテクチャと運用モデルについてはクラスタガイドを参照してください。このセクションは設定キーのリファレンスです。
トップレベル
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled |
bool | false | クラスタリングを有効化 |
name |
string | hostname | ノード名。クラスタ全体で一意でなければならない |
failure_domain |
string | ゾーン/ラックラベル。ゴシップで通知され、投票ノードがドメインをまたぐように分散される | |
kv_crdt_tombstone_retention |
duration | 0 | store.kv.crdt の削除トゥームストーンが回収されるまでの経過時間。0 は経過時間による GC を無効化 |
kv_crdt_tombstone_gc_alive_peers |
bool | false | 現在の alive メンバーシップをトゥームストーンの確認応答集合として使用 |
メンバーシップ(ゴシップ)
memberlist による SWIM ゴシップ。ノード探索、障害検出、メタデータ伝播に使用されます。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
membership.bind_addr |
string | 0.0.0.0 | ゴシップバインドアドレス |
membership.bind_port |
int | 7946 | ゴシップバインドポート (TCP+UDP) |
membership.advertise_addr |
string | ピアがこのノードに到達するためのアドレス (NAT/k8s) | |
membership.join_addrs |
string | カンマ区切りのシード host:port ペア |
|
membership.secret_key |
string | Base64エンコードされたゴシップ暗号化キー(インライン) | |
membership.secret_file |
string | ゴシップ暗号化キーを保持するファイルのパス | |
membership.gossip_interval |
duration | 500ms | ゴシップ配布の周期 |
membership.push_pull_interval |
duration | 5s | 完全な状態同期の周期 |
membership.dead_node_reclaim_time |
duration | 30s | デッドノードの名前/アドレスが再利用可能になるまでの時間 |
membership.probe_interval |
duration | 1s | 障害検出プローブのサイクル |
membership.probe_timeout |
duration | 200ms | プローブごとの Ack 待機時間 |
membership.tcp_timeout |
duration | 1s | TCP フォールバックプローブのタイムアウト |
membership.suspicion_mult |
int | 3 | サスピションタイムアウトの乗数 |
ゴシップシークレットは必須です。membership.secret_key または membership.secret_file を設定してください(両方を指定した場合はファイルが優先されます)。どちらも指定しないと、クラスタコンポーネントは起動に失敗します。値は base64 エンコードされます。
4つのプローブキーは、未設定の場合 memberlist のローカルネットワーク向けデフォルトを継承します。レイテンシの高いリンクでは値を引き上げてください(例: probe_interval: 2s、probe_timeout: 500ms、suspicion_mult: 5)。
ノード間(トランスポート)
ノード間でリレーと Raft トラフィックを運ぶ TCP メッシュ。Raft はノード間のリクエスト/リプライを介してこのメッシュ上を走行し、独立した Raft ポートはありません。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
internode.bind_addr |
string | 0.0.0.0 | メッシュバインドアドレス |
internode.bind_port |
int | 0 | メッシュポート(0 = 自動: 7950-7959、その後エフェメラル) |
internode.auto_port |
bool | true | 起動時に実際のポートを探索して固定し、ゴシップで通知する |
internode.advertise_addr |
string | アップグレード済みピア向けに公開される追加のリレーエンドポイント(IP または DNS 名)— NAT やロードバランサ経由の到達性のため | |
internode.advertise_port |
int | 0 | advertise_addr 用のポート(0 = バインドポート。advertise_addr が必要) |
internode.identity_key |
string | このノードを識別する base64 エンコードされた ed25519 秘密鍵(インライン) | |
internode.identity_key_file |
string | その鍵を保持するファイルのパス | |
internode.trusted_peer_keys |
map | 自ノードを含む各ノード名ごとの、base64 エンコードされた ed25519 公開鍵 |
advertise_addr/advertise_port はノードメタデータに追加のエンドポイントを公開し、バインドエンドポイントは変わらず通知され続けるため、バージョンが混在するクラスタでもローリングアップグレード中に接続が維持されます。
クラスタリングが有効な場合、ノード間アイデンティティは必須です。identity_key と identity_key_file は排他的で、いずれか一方が必要です。値は(標準または raw の base64 で)32 バイトの ed25519 シードまたは 64 バイトの ed25519 秘密鍵にデコードされます。trusted_peer_keys は各ノード名をそのノードの 32 バイト ed25519 公開鍵にマッピングし、ローカルの cluster.name に対応するエントリを含み、その値はローカルのアイデンティティと一致していなければなりません。一致しない場合は起動に失敗します。クラスタガイドを参照してください。
Raft(コンセンサス)
有界 Raft コアは、デフォルトで raft.data_dir(~/.wippy/store)の下に永続状態を保存します。再起動したノードはピアからクォーラムに再参加します。store.kv.raft エントリはこのコアを通じてレプリケートされ、ゴシップが bootstrap_expect モデルによるブートストラップを調整します。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
raft.data_dir |
string | ~/.wippy/store |
fs 永続化された Raft 状態と永続 CRDT スナップショットのディレクトリ(<data_dir>/_sys/ の下)。パスが解決されない場合(ホームディレクトリがなく未設定)のみディスクレス |
raft.enabled |
bool | true | Raft ノードを実行。false にするとゴシップのみのクライアントになる |
raft.role |
string | server | server は Raft ノードを実行。client はゴシップのみ |
raft.eligible |
bool | true | このノードが投票ノードまたはスタンバイとして選択されるかどうか。false の場合は Raft 外のクライアントとなる |
raft.priority |
int | 100 | 投票ノード選択の優先度(値が小さいほど優先) |
raft.bootstrap_expect |
int | 1 | 初期クォーラムサイズ: 0=既存クラスタに参加、1=単一ノード、N=ローカルノードを含む N 個の適格ノードを待ってからクォーラムを形成 |
raft.max_voters |
int | 5 | 投票ノードの上限(奇数でなければならない)。さらに最大 max_standbys 個の適格ノードがスタンバイとなり、残りはクライアントとなる |
raft.max_standbys |
int | 4 | 昇格に備えて保持する非投票メンバー数。投票ノード+スタンバイを超えたノードは Raft メンバーではない |
raft.reconcile_debounce |
duration | 2s | ゴシップイベント後、投票ノード調整ロジックが実行されるまでの集約ウィンドウ |
raft.reconcile_timeout |
duration | 2s | 調整パスごとの上限時間 |
raft.heartbeat_timeout |
duration | 3s | フォロワーが選挙を開始するまでのアイドル待機時間 |
raft.election_timeout |
duration | 3s | 候補ノードの選挙タイムアウト(ハートビート以上にクランプされる) |
raft.commit_timeout |
duration | 500ms | リーダーのアイドルハートビート間隔 |
raft.snapshot_threshold |
uint64 | 8192 | 新しいスナップショットを作成するまでの最後のスナップショット以降のログエントリ数 |
raft.snapshot_interval |
duration | 2m | スナップショットチェック間隔 |
raft.snapshot_retain |
int | 3 | 保持するスナップショット数 |
raft.trailing_logs |
uint64 | 10240 | スナップショット後に保持するログエントリ数 |
raft.max_append_entries |
int | 16 | AppendEntries RPC あたりの最大エントリ数 |
raft.leader_probe_interval |
duration | 3s | グローバルレジストリのリーダー到達可能性プローブ間隔 |
raft.leader_probe_grace |
int | 3 | リーダーが到達不能と宣言されるまでの連続プローブ失敗回数 |
raft.registry_backend |
string | kv | クラスタ名前レジストリの実装: kv(共有 kv キースペース)または fsm(専用の Raft FSM) |
raft.global_dissem_tombstone_retention |
duration | 0 | グローバル名の伝播キャッシュが削除トゥームストーンを保持する期間 |
単一ノード(開発用)— クラスタリング有効、即座にブートストラップ:
cluster:
enabled: true
name: dev
membership:
secret_key: "d2lwcHktZG9jcy1nb3NzaXAtc2VjcmV0LTMyYnl0ZXM="
internode:
identity_key: "d2lwcHktZG9jcy1kZXYtbm9kZS1leGFtcGxlc2VlZCE="
trusted_peer_keys:
dev: "rNqImcjOzef28dzvma80mSrCW1px5LBAc5TbaYqAgm0="
raft:
bootstrap_expect: 1
3ノード投票クラスタ — 各ノードが他のノードをシードとして指定し、3つ全てが揃うのを待ってからクォーラムを形成。すべてのノードが同一の trusted_peer_keys マップと自身の秘密鍵を持ちます:
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
internode:
identity_key_file: /etc/wippy/node-1.key
trusted_peer_keys:
node-1: "okmamN3PKkMpPwPBurknHy2Wi3dwp/rz+uTM2fF9aD0="
node-2: "PWX+oOYrFdtjUxbgmTkXCFI0KEvG++ZM52HOWfDkqP8="
node-3: "QfP0fgllbj4s95VAztTORhy3bv9mst1l0lwuUNvO/hE="
raft:
bootstrap_expect: 3
max_voters: 5
ゴシップのみのクライアント — 名前付けやメッセージングのためにクラスタに参加するが、Raft は実行しない。これにも自身のアイデンティティが必要で、すべてのノードの信頼マップに含まれている必要があります:
cluster:
enabled: true
name: edge-7
membership:
join_addrs: "node-1:7946,node-2:7946"
secret_file: /etc/wippy/cluster.key
internode:
identity_key_file: /etc/wippy/edge-7.key
trusted_peer_keys:
node-1: "okmamN3PKkMpPwPBurknHy2Wi3dwp/rz+uTM2fF9aD0="
node-2: "PWX+oOYrFdtjUxbgmTkXCFI0KEvG++ZM52HOWfDkqP8="
node-3: "QfP0fgllbj4s95VAztTORhy3bv9mst1l0lwuUNvO/hE="
edge-7: "7lzP4jBAkC3P+0jq4vtMsC45571BlVXk3mSlOD/Z0SA="
raft:
role: client
LSP
エディタ統合のためのLanguage Server Protocolサーバー。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled |
bool | false | LSP サービスと TCP サーバーを有効化。HTTP トランスポートにも必要 |
address |
string | :7777 | TCPリッスンアドレス |
http_enabled |
bool | false | HTTPトランスポートを有効化 |
http_address |
string | :7778 | HTTPリッスンアドレス |
http_path |
string | /lsp | HTTPエンドポイントパス |
http_allow_origin |
string | * | CORS許可オリジン |
max_message_bytes |
int | 8388608 | 受信メッセージの最大サイズ |
lsp:
enabled: true
address: ":7777"
http_enabled: true
参照: LSPガイド
ネットワークサービス
オーバーレイネットワークマネージャ(SOCKS5、I2P、Tailscaleドライバ)。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
state_dir |
string | .wippy/net | ドライバ状態ストレージディレクトリ |
default_network |
string | エントリで network を省略した場合に適用されるデフォルトネットワークID |
network_service:
state_dir: /var/lib/wippy/net
default_network: app:tailscale
参照: ネットワークオーバーレイ
HTTPディスパッチャ
HTTP ディスパッチ関数や送信リクエストで使用される共有 HTTP クライアントプールのチューニング。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
dispatcher.http.timeout |
duration | 0 (なし) | リクエストごとのタイムアウト |
dispatcher.http.max_idle_conns |
int | 0 (stdlib) | 全ホスト合計のアイドル接続数上限 |
dispatcher.http.max_idle_per_host |
int | 0 (stdlib) | ホストごとのアイドル接続数上限 |
dispatcher.http.idle_conn_timeout |
duration | 0 (stdlib) | アイドル接続タイムアウト |
dispatcher.http.max_clients |
int | 0 (無制限) | プールする個別クライアントの上限 |
dispatcher:
http:
timeout: 30s
max_idle_per_host: 32
モジュール
wippy install/update で使用されるモジュールレジストリクライアント。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
registry_url |
string | https://hub.wippy.ai | レジストリエンドポイント |
modules:
registry_url: https://internal-registry.example.com
拡張機能
起動時に読み込まれるネイティブGoプラグイン拡張機能(Unixのみ)。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled |
bool | true | 拡張機能を読み込む |
paths |
string[] | プラグインファイルパス(設定ディレクトリからの相対パス) |
extensions:
enabled: true
paths:
- ./extensions/myplugin.so
環境変数
| 変数 | 説明 |
|---|---|
GOMEMLIMIT |
--memory-limit フラグが未設定の場合のメモリ制限フォールバック(優先順位: --memory-limit フラグ > GOMEMLIMIT > デフォルト 1G) |
ノード間 TLS
cluster.internode.tls でノード間 TCP mesh の相互 TLS を有効にできます。この mesh 上の relay と Raft の通信も保護されます。既存の cluster 設定に次の設定を追加します。
cluster:
internode:
tls:
enabled: true
cert_file: /etc/wippy/node.crt
key_file: /etc/wippy/node.key
ca_file: /etc/wippy/cluster-ca.pem
TLS は既定で無効です。enabled: true の場合、空でない 3 つのファイルパスがすべて必要です。PEM 証明書、対応する秘密鍵、server と client の証明書検証に使用する PEM CA bundle を指定します。最小バージョンは TLS 1.2 です。接続するすべての peer に互換性のある証明書と信頼ルートを設定してください。ed25519 identity と trusted peer key map も引き続き必要です。
不明な TLS 設定、不正な型、欠落または不正な認証情報、不正な CA bundle、enabled: true を指定しないファイルパスは起動エラーになります。不正な明示的設定から平文通信へ暗黙にフォールバックすることはありません。