muxws
HTTP/2 and HTTP/3 stream semantics over a WebSocket. Many independent, cancellable, bidirectional streams on
one socket, either end able to open one - the model HTTP/2 and HTTP/3 already settled, without needing
QUIC or an HTTP/3 stack. The wire format is the product; Python and TypeScript are the two ports that
exist today, and SPEC.md plus
conformance/ are what a third is
written from.
The mimicry is of semantics, not transport: one connection - a TCP socket or a Unix domain socket - means one global message order and no per-stream loss recovery - the rationale says what is and is not copied, and the comparison accounts for it frame by frame. muxws is not a router, not a serializer of domain objects, not an authentication mechanism, not a durable store and not an RPC framework.
Install
pip install muxws # extras: [starlette], [websockets], [msgpack]
npm install muxws # optional peers: ws, @msgpack/msgpack
Documentation
docs.velis.si/muxws is the manual - or build it yourself with
npm run docs:dev.
| Server and client in three files | Getting started |
| A browser, a socket file, and what the envelope costs | Demos |
| Every public symbol, both languages | API reference |
| The normative rules, and the fixtures a third port is written from | SPEC.md, conformance/ |
| What changed in each release, and what to change when upgrading | Changelog, Migration guide |
Status
Alpha - the first releases. Two versions that move independently: the wire is already at its
first generation and frozen there (muxws.v1.<codec> is the subprotocol, and v1 stays until a
breaking change earns a new one), while the package carries a leading zero because none of this has
been through a real deployment yet. 1.0 is what the first confirmed production use earns. Python
package muxws (PyPI); npm package muxws, browser entry plus the muxws/node and muxws/msgpack
subpaths.
Licence
MIT. Copyright © 2025 Jure Erznožnik.
Metadata
Release files for muxws 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| muxws-0.4.0.tar.gz | 94.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| muxws-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 174.5 kB
Release files / muxws-0.4.0.tar.gz
| Download URL | muxws-0.4.0.tar.gz |
|---|---|
| Size | 94.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6821b04288c9d9ead86288613a7a0326445b3485143114ed9415221442e732a2
|
|
BLAKE2b-256 checksum How to use checksums |
ae4dadcfe1ab72240d5457ceef51cdd8082bb85fdcad5bf4e3aee6908ce8304f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Release files / muxws-0.4.0-py3-none-any.whl
| Download URL | muxws-0.4.0-py3-none-any.whl |
|---|---|
| Size | 80.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
879fcb724d51d2f9073fa667fd1bacc9cc1d9292c74ee4aa93e8cbb491e3d7db
|
|
BLAKE2b-256 checksum How to use checksums |
ffe56f1a3973048764b452756a81850241fc66be9b9ec4cf369b11c9e33bd56f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Security for muxws 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.