Skip to main 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.

Installation:

Install From Source:

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

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

Install From PyPI:

Run the following command to install this program:

pip3 install wisp-python

Running the Server:

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.3)

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.

Roadmap:

  • Rate limits
  • JSON based config files
  • UDP support
  • Ability to block local addresses
  • Wisp v2 support

Copyright:

This repository is licensed under the GNU AGPL v3.

A few third party libraries are used. See LICENSE_third_party.md.

Copyright Notice:

wisp-server-python: a Wisp server implementation written in Python
Copyright (C) 2025 Mercury Workshop

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

Metadata

Release files for wisp-python 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wisp-python 0.9.0
File Size Uploaded
wisp_python-0.9.0.tar.gz 26.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wisp-python 0.9.0
File Interpreter ABI Platform
wisp_python-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 55.9 kB

Release files / wisp_python-0.9.0.tar.gz

Download URL wisp_python-0.9.0.tar.gz
Size 26.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7d2b5a442f98409da427188a71346745cf5f1514d7a37809a4e8c3d0bd83a807
BLAKE2b-256 checksum
How to use checksums
29f5c14c5728fbbe0f0600842f6e356c25175d4afaea3a8167ced7d60ea8b7fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.2

Release files / wisp_python-0.9.0-py3-none-any.whl

Download URL wisp_python-0.9.0-py3-none-any.whl
Size 29.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
398e4851b01e181421d7e4357d212c80b61c78907b2c0387616ffc90dbfe8447
BLAKE2b-256 checksum
How to use checksums
7d0acdd4060a6275dc6ed943962604e9e5c3e9c1340a4ef90d9686d12de86588
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.2

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page