Skip to content

Python Wisp Server

This is an implementation of a Wisp server, written in Python. It follows the Wisp v1 spec completely, including support for UDP connections.

This is the fastest implementation of Wisp.

Clone the repository and cd into it, then run the following commands:

python3 -m venv .venv
source .venv/bin/activate
pip3 install -e .

Run the following command to install this program:

pip3 install wisp-python

For the best performance use CPython 3.11 or newer. PyPy is not recommended as it is a lot slower than CPython here.

To start the server, run python3 -m wisp.server. The program accepts the following arguments:

usage: wisp-server-python [-h] [--host HOST] [--port PORT] [--static STATIC] [--limits] [--bandwidth BANDWIDTH] [--connections CONNECTIONS] [--window WINDOW] [--allow-loopback] [--allow-private] [--log-level LOG_LEVEL]
[--threads THREADS] [--proxy PROXY] [--block-udp] [--block-tcp]
A Wisp server implementation, written in Python (v0.8.1)
options:
-h, --help show this help message and exit
--host HOST The hostname the server will listen on.
--port PORT The TCP port the server will listen on.
--static STATIC Where static files are served from.
--limits Enable rate limits.
--bandwidth BANDWIDTH
Bandwidth limit per IP, in kilobytes per second.
--connections CONNECTIONS
New connections limit per IP.
--window WINDOW Fixed window length for rate limits, in seconds.
--allow-loopback Allow connections to loopback IP addresses.
--allow-private Allow connections to private IP addresses.
--log-level LOG_LEVEL
The log level (either debug, info, warning, error, or critical).
--threads THREADS The number of threads to run the server on. By default it uses all CPU cores. (Linux only)
--proxy PROXY The url of the socks5h, socks5, sock4a, socks4 or http proxy to use.
--block-udp Block UDP streams.
--block-tcp Block TCP streams.
  • Rate limits
  • JSON based config files
  • UDP support
  • Ability to block local addresses
  • Wisp v2 support