+ A set of libraries and programs for securely bypassing CORS end-to-end-encrypted by running TLS in the browser through WebAssembly.
+ The client is built in Rust with the rustls TLS implementation and hyper HTTP implementation.
+ It uses the Wisp protocol as a TCP proxy to connect to and communicate with remote servers.
+
+
Demo
+
+
Features
+
+
A blazingly fast Wisp server: epoxy-server
+
+
As of January 2025, the fastest Wisp server measured in Wispmark, a benchmarking tool for Wisp servers, achieving 4.3GiB/s throughput with 5 clients connecting with 10 streams each
+
Very configurable, with support for speed limits, domain blacklist/whitelist, statistics over HTTP, and listening on TCP, Unix sockets, and files all in a single TOML/JSON/YAML file
+
Has robust logging, showing every client connected and every stream created
+
Supports the WispNet protocol extension, allowing for peer-to-peer communication over Wisp
+
Supports the twisp protocol extension, allowing for terminals to be multiplexed over Wisp
+
+
A CORS bypassing fetch and WebSocket implementation for the web: epoxy-client
+
+
Very small: the WASM is 780K uncompressed and 304K compressed (minimal version)
+
Supports HTTP/1.1 and HTTP/2 for increased performance
+
Supports WebSockets through the fastwebsockets library
+
Supports HTTP/2 full-duplex, allowing for streaming requests and responses at the same time
+
+
A Rust crate implementing the Wisp protocol
+
+
Fully async, benefitting from the IO optimizations of popular async runtimes
+
Built to be runtime and IO agnostic, allowing for use in non-Tokio environments
+
Multiplexed streams implement the familiar futures IO traits like Stream<Item = Bytes> + Sink<Bytes> and AsyncRead + AsyncWrite
+
+
This allows for multiplexed streams to be easily plugged into other popular crates like hyper and async-tungstenite
+
+
Supports custom protocol extensions, allowing you to quickly add on authentication and other features to the existing Wisp protocol