Skip to content

Config reference

WaveLedger reads configuration from a TOML file passed via --config <path>. Anything not in the file falls back to either CLI flags or compile-time defaults from core/constants.py.

The full schema is below. All sections optional; common defaults are sensible.

[node]

Key Type Default Notes
data_dir string .waveledger Where chain.db + identity + wallets live
port int 8333 (mainnet) / 18333 (testnet) P2P listen port
host string 0.0.0.0 P2P bind address
max_peers int 25 Cap on concurrent peer connections
testnet bool false Use testnet genesis + magic + port
relay_only bool false Run as a relay/seed (no mining)

[mining]

Key Type Default Notes
enabled bool false Master switch. --mine CLI flag also enables.
miner_address string "" Hex address to receive coinbase; auto-create wallet if blank
qrng_host string 127.0.0.1 Entropy aggregator hostname
qrng_port int 8420 Entropy aggregator port

[discovery]

Key Type Default Notes
enable_mdns bool true LAN service discovery
enable_upnp bool false NAT punchthrough
enable_dns_seeds bool true Resolve hardcoded DNS seed hosts
enable_hardcoded_seeds bool true Hardcoded peer addresses
bootstrap_nodes list[string] [] host:port strings; tried first

[dashboard]

Key Type Default Notes
enabled bool true Run the monitoring server
port int 8080 Bind port
host string 0.0.0.0 Bind host. Use 127.0.0.1 for loopback-only.

[messenger]

Key Type Default Notes
enabled bool true Run the chat dApp server
port int 8081 Bind port
host string 0.0.0.0 Bind host

[security]

Key Type Default Notes
require_auth bool false If true, GET endpoints on the dashboard also require a Bearer key

Env vars

A handful of settings are pulled from env vars (cannot be in the TOML):

Env var Used by Default
WAVELEDGER_ADMIN_USER Messenger admin auth admin
WAVELEDGER_ADMIN_PASSWORD Messenger admin auth change-me-via-env (insecure!)
PYTHONUNBUFFERED systemd / Docker recommended 1
WAVELEDGER_ROLE Fly container entrypoint entropy | chat | miner

Examples

Public testnet miner

[node]
data_dir   = "/var/lib/waveledger-testnet"
port       = 18333
host       = "0.0.0.0"
testnet    = true

[mining]
enabled   = true
qrng_host = "entropy.waveledger.net"
qrng_port = 443

[discovery]
enable_mdns           = false
enable_upnp           = false
enable_dns_seeds      = true
enable_hardcoded_seeds= true
bootstrap_nodes       = ["seed.waveledger.net:18333"]

[dashboard]
enabled = true
port    = 8080
host    = "127.0.0.1"

[messenger]
enabled = false

[security]
require_auth = true

Public testnet seed (no mining)

[node]
data_dir   = "/var/lib/waveledger-testnet"
port       = 18333
host       = "0.0.0.0"
testnet    = true
relay_only = true

[mining]
enabled = false

[discovery]
bootstrap_nodes       = ["seed.waveledger.net:18333"]
enable_dns_seeds      = true
enable_hardcoded_seeds= true

[dashboard]
enabled = true
host    = "127.0.0.1"

[messenger]
enabled = false

[security]
require_auth = true

Local dev (everything on one box, mDNS for LAN miners)

[node]
data_dir = ".waveledger-dev"
port     = 18333
testnet  = true

[mining]
enabled = true

[discovery]
enable_mdns           = true
enable_upnp           = true
bootstrap_nodes       = []

[dashboard]
enabled = true
host    = "0.0.0.0"           # expose locally for browsing

[messenger]
enabled = true
host    = "0.0.0.0"

[security]
require_auth = false           # ok for local dev only