desc:"The domain name resolving to the node's public IPv4 address",
defaultValue:""
name:"dns4-domain-name"}:string
## Relay config
relay*{.
desc:"Enable relay protocol: true|false",
defaultValue:true
name:"relay"}:bool
relayPeerExchange*{.
desc:"Enable gossipsub peer exchange in relay protocol: true|false",
defaultValue:false
name:"relay-peer-exchange"}:bool
rlnRelay*{.
desc:"Enable spam protection through rln-relay: true|false",
defaultValue:false
name:"rln-relay"}:bool
rlnRelayCredIndex*{.
desc:"the index of the onchain commitment to use",
name:"rln-relay-membership-index"}:Option[uint]
rlnRelayDynamic*{.
desc:"Enable waku-rln-relay with on-chain dynamic group management: true|false",
defaultValue:false
name:"rln-relay-dynamic"}:bool
rlnRelayIdKey*{.
desc:"Rln relay identity secret key as a Hex string",
defaultValue:""
name:"rln-relay-id-key"}:string
rlnRelayIdCommitmentKey*{.
desc:"Rln relay identity commitment key as a Hex string",
defaultValue:""
name:"rln-relay-id-commitment-key"}:string
rlnRelayTreePath*{.
desc:"Path to the RLN merkle tree sled db (https://github.com/spacejam/sled)",
defaultValue:""
name:"rln-relay-tree-path"}:string
rlnRelayBandwidthThreshold*{.
desc:"Message rate in bytes/sec after which verification of proofs should happen",
defaultValue:0# to maintain backwards compatibility
name:"rln-relay-bandwidth-threshold"}:int
staticnodes*{.
desc:"Peer multiaddr to directly connect with. Argument may be repeated."
name:"staticnode"}:seq[string]
keepAlive*{.
desc:"Enable keep-alive for idle connections: true|false",
defaultValue:false
name:"keep-alive"}:bool
topics*{.
desc:"Default topic to subscribe to. Argument may be repeated. Deprecated! Please use pubsub-topic and/or content-topic instead."
defaultValue:@["/waku/2/default-waku/proto"]
name:"topic".}:seq[string]
pubsubTopics*{.
desc:"Default pubsub topic to subscribe to. Argument may be repeated."
name:"pubsub-topic".}:seq[string]
contentTopics*{.
desc:"Default content topic to subscribe to. Argument may be repeated."
name:"content-topic".}:seq[string]
## Store and message store config
store*{.
desc:"Enable/disable waku store protocol",
defaultValue:false,
name:"store"}:bool
storenode*{.
desc:"Peer multiaddress to query for storage",
defaultValue:"",
name:"storenode"}:string
storeMessageRetentionPolicy*{.
desc:"Message store retention policy. Time retention policy: 'time:<seconds>'. Capacity retention policy: 'capacity:<count>'. Size retention policy: 'size:<xMB/xGB>'. Set to 'none' to disable.",
defaultValue:"time:"&$2.days.seconds,
name:"store-message-retention-policy"}:string
storeMessageDbUrl*{.
desc:"The database connection URL for peristent storage.",
defaultValue:"sqlite://store.sqlite3",
name:"store-message-db-url"}:string
storeMessageDbVacuum*{.
desc:"Enable database vacuuming at start. Only supported by SQLite database engine.",
defaultValue:false,
name:"store-message-db-vacuum"}:bool
storeMessageDbMigration*{.
desc:"Enable database migration at start.",
defaultValue:true,
name:"store-message-db-migration"}:bool
## Filter config
filter*{.
desc:"Enable filter protocol: true|false",
defaultValue:false
name:"filter"}:bool
filternode*{.
desc:"Peer multiaddr to request content filtering of messages.",
defaultValue:""
name:"filternode"}:string
filterTimeout*{.
desc:"Timeout for filter node in seconds.",
defaultValue:14400# 4 hours
name:"filter-timeout"}:int64
## Lightpush config
lightpush*{.
desc:"Enable lightpush protocol: true|false",
defaultValue:false
name:"lightpush"}:bool
lightpushnode*{.
desc:"Peer multiaddr to request lightpush of published messages.",
defaultValue:""
name:"lightpushnode"}:string
## JSON-RPC config
rpc*{.
desc:"Enable Waku JSON-RPC server: true|false",
defaultValue:true
name:"rpc"}:bool
rpcAddress*{.
desc:"Listening address of the JSON-RPC server.",
defaultValue:ValidIpAddress.init("127.0.0.1")
name:"rpc-address"}:ValidIpAddress
rpcPort*{.
desc:"Listening port of the JSON-RPC server.",
defaultValue:8545
name:"rpc-port"}:uint16
rpcAdmin*{.
desc:"Enable access to JSON-RPC Admin API: true|false",
defaultValue:false
name:"rpc-admin"}:bool
rpcPrivate*{.
desc:"Enable access to JSON-RPC Private API: true|false",
defaultValue:false
name:"rpc-private"}:bool
## REST HTTP config
rest*{.
desc:"Enable Waku REST HTTP server: true|false",
defaultValue:false
name:"rest"}:bool
restAddress*{.
desc:"Listening address of the REST HTTP server.",
defaultValue:ValidIpAddress.init("127.0.0.1")
name:"rest-address"}:ValidIpAddress
restPort*{.
desc:"Listening port of the REST HTTP server.",
defaultValue:8645
name:"rest-port"}:uint16
restRelayCacheCapacity*{.
desc:"Capacity of the Relay REST API message cache.",
defaultValue:30
name:"rest-relay-cache-capacity"}:uint32
restAdmin*{.
desc:"Enable access to REST HTTP Admin API: true|false",
defaultValue:false
name:"rest-admin"}:bool
restPrivate*{.
desc:"Enable access to REST HTTP Private API: true|false",
defaultValue:false
name:"rest-private"}:bool
## Metrics config
metricsServer*{.
desc:"Enable the metrics server: true|false"
defaultValue:false
name:"metrics-server"}:bool
metricsServerAddress*{.
desc:"Listening address of the metrics server."
defaultValue:ValidIpAddress.init("127.0.0.1")
name:"metrics-server-address"}:ValidIpAddress
metricsServerPort*{.
desc:"Listening HTTP port of the metrics server."
defaultValue:8008
name:"metrics-server-port"}:uint16
metricsLogging*{.
desc:"Enable metrics logging: true|false"
defaultValue:true
name:"metrics-logging"}:bool
## DNS discovery config
dnsDiscovery*{.
desc:"Enable discovering nodes via DNS"
defaultValue:false
name:"dns-discovery"}:bool
dnsDiscoveryUrl*{.
desc:"URL for DNS node list in format 'enrtree://<key>@<fqdn>'",
defaultValue:""
name:"dns-discovery-url"}:string
dnsDiscoveryNameServers*{.
desc:"DNS name server IPs to query. Argument may be repeated."