epoxy-server is a performant, multi-threaded server implementation of the Wisp protocol, written in Rust and built specifically for use with epoxy-client. It multiplexes TCP and UDP streams over a single WebSocket (or length-delimited) connection, giving browser-based clients full network access through an unprivileged channel. The server uses jemalloc as its allocator and the Tokio async runtime, and is designed to handle many concurrent Wisp clients with minimal overhead.Documentation 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.
Key features
Multi-threaded Tokio runtime
Choose between
SingleThread, MultiThread (default), or ThreadPerCore runtimes to match your deployment hardware.Wisp v1 and v2
Full support for both Wisp protocol versions, including v2 extensions for UDP, MOTD, password auth, and certificate auth.
Flexible listener types
Accepts connections on plain TCP, TLS-wrapped TCP, Unix domain sockets, or TLS-wrapped Unix domain sockets.
WebSocket and length-delimited transports
Serves Wisp over standard WebSocket upgrades or a raw little-endian length-delimited codec (
LengthDelimitedLe).Password and certificate authentication
When Wisp v2 is enabled, clients can be required to authenticate with a username/password pair or an ed25519 certificate before any streams are accepted.
Host and port filtering
Regex-based allow and block lists for hostnames (with separate TCP and UDP overrides) and inclusive port range allow/block lists guard which destinations clients can reach.
Stats endpoint
An optional HTTP stats endpoint exposes live connection and stream information. Stats can also be printed to the log by sending
SIGUSR1 to the process.TLS listener support
Supply a PEM keypair in the config to terminate TLS directly on the Wisp listener, without an external reverse proxy.
Architecture overview
Next steps
Building
Compile epoxy-server from source with optional performance flags.
Running
Generate a config file and start the server.
Configuration
Full reference for every config key in the TOML/JSON/YAML config file.