TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/MercuryWorkshop/epoxy-tls/llms.txt
Use this file to discover all available pages before exploring further.
[wisp] section of the epoxy-server configuration file controls everything related to the Wisp protocol layer: which version of the protocol is negotiated, which Wisp v2 extensions are advertised to clients, how authentication is enforced, and what message of the day is sent on connect. These settings are independent of the network listener (configured in [server]) and the per-stream filtering rules (configured in [stream]).
[wisp] fields
Enable Wisp version 2 handshaking and extension negotiation. When
true (the default), the server performs the Wisp v2 handshake and advertises the extensions listed in extensions. When false, the server falls back to Wisp v1, which has no extension support.Disable this only when you need to support clients that do not implement Wisp v2.List of Wisp v2 protocol extensions advertised during the handshake. Only applies when
The authentication extension (
wisp_v2 = true.| Value | Description |
|---|---|
"udp" | Enables Wisp v2 UDP stream support |
"motd" | Sends the motd_extension string to clients on connect |
"wispnet" | Unofficial Wispnet-like extension for inter-server routing |
"password" or "certificate") is not listed here — it is configured separately via the auth_extension field.Wisp v2 authentication extension to advertise. When set, clients must complete the chosen authentication challenge during the Wisp v2 handshake. Requires
Only one authentication method can be active at a time.
wisp_v2 = true.| Value | Description |
|---|---|
"password" | Username/password authentication — see password_extension_users |
"certificate" | Ed25519 public-key authentication — see certificate_extension_keys |
null | No authentication (default) |
Flow-control buffer size advertised to clients in the Wisp handshake, expressed as a number of packets. Clients use this value to determine how many packets they may send before waiting for the server to acknowledge receipt.Increase this value to improve throughput on high-latency connections. Very large values may increase memory usage under load.
URL path prefix for the Wisp endpoint. The server strips this prefix before handling the WebSocket upgrade. Do not include a trailing slash.Leave empty (the default) to serve Wisp at the root path
/.Allow legacy wsproxy connections in addition to the Wisp protocol. wsproxy is an older, simpler tunneling protocol that predates Wisp. Disable this if you only want to accept Wisp clients and want to reduce attack surface.
Maximum read throughput in bytes per second applied across all streams within a single Wisp connection. When the aggregate incoming data rate exceeds this limit the connection is throttled. The default is
Infinity (no limit).This field is only available when epoxy-server is compiled with the
speed-limit feature flag. It has no effect in standard release builds that omit this feature.Maximum write throughput in bytes per second applied across all streams within a single Wisp connection. When the aggregate outgoing data rate exceeds this limit the connection is throttled. The default is
Infinity (no limit).This field is only available when epoxy-server is compiled with the
speed-limit feature flag. It has no effect in standard release builds that omit this feature.Map of This field is omitted from the serialized default config when it is empty.
username → password pairs used when auth_extension = "password". Clients must supply a matching username and password during the Wisp v2 handshake to be permitted.When
true (the default) and auth_extension = "password", authentication is mandatory — clients that do not present valid credentials are rejected. Set to false to make authentication optional (clients that skip the challenge are still allowed).Paths to Ed25519 public key files in PEM format, used when This field is omitted from the serialized default config when it is empty.
auth_extension = "certificate". Clients must possess the corresponding private key and prove ownership during the Wisp v2 handshake.When
true (the default) and auth_extension = "certificate", certificate authentication is mandatory. Set to false to permit connections from clients that do not provide a certificate.The message of the day sent to clients via the Wisp v2 MOTD extension. Only delivered when
"motd" is included in extensions. The default value includes the server version string, git SHA, and compiler info.Authentication examples
Password authentication
Certificate authentication
Generate an Ed25519 keypair for each user (for example withopenssl), distribute the private key to the client, and add the public key path to the server config: