Skip to main content
License Version Python versions Tests Coverage Documentation

What is aioquic?

aioquic is a library for the QUIC network protocol in Python. It features a minimal TLS 1.3 implementation, a QUIC stack and an HTTP/3 stack.

aioquic is used by Python opensource projects such as dnspython, hypercorn, mitmproxy and the Web Platform Tests cross-browser test suite. It has also been used extensively in research papers about QUIC.

To learn more about aioquic please read the documentation.

Why should I use aioquic?

aioquic has been designed to be embedded into Python client and server libraries wishing to support QUIC and / or HTTP/3. The goal is to provide a common codebase for Python libraries in the hope of avoiding duplicated effort.

Both the QUIC and the HTTP/3 APIs follow the “bring your own I/O” pattern, leaving actual I/O operations to the API user. This approach has a number of advantages including making the code testable and allowing integration with different concurrency models.

A lot of effort has gone into writing an extensive test suite for the aioquic code to ensure best-in-class code quality, and it is regularly tested for interoperability against other QUIC implementations.

Features

  • minimal TLS 1.3 implementation conforming with RFC 8446

  • QUIC stack conforming with RFC 9000 (QUIC v1) and RFC 9369 (QUIC v2)
    • IPv4 and IPv6 support

    • connection migration and NAT rebinding

    • logging TLS traffic secrets

    • logging QUIC events in QLOG format

    • version negotiation conforming with RFC 9368

  • HTTP/3 stack conforming with RFC 9114
    • server push support

    • WebSocket bootstrapping conforming with RFC 9220

    • datagram support conforming with RFC 9297

Installing

The easiest way to install aioquic is to run:

pip install aioquic

Building from source

If there are no wheels for your system or if you wish to build aioquic from source you will need the OpenSSL development headers.

Linux

On Debian/Ubuntu run:

sudo apt install libssl-dev python3-dev

On Alpine Linux run:

sudo apk add openssl-dev python3-dev bsd-compat-headers libffi-dev

OS X

On OS X run:

brew install openssl

You will need to set some environment variables to link against OpenSSL:

export CFLAGS=-I$(brew --prefix openssl)/include
export LDFLAGS=-L$(brew --prefix openssl)/lib

Windows

On Windows the easiest way to install OpenSSL is to use Chocolatey.

choco install openssl

You will need to set some environment variables to link against OpenSSL:

$Env:INCLUDE = "C:\Progra~1\OpenSSL\include"
$Env:LIB = "C:\Progra~1\OpenSSL\lib"

Running the examples

aioquic comes with a number of examples illustrating various QUIC usecases.

You can browse these examples here: https://github.com/aiortc/aioquic/tree/main/examples

License

aioquic is released under the BSD license.

Release files for aioquic 1.3.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 aioquic 1.3.0
File Size Uploaded
aioquic-1.3.0.tar.gz 181.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for aioquic 1.3.0
File
aioquic-1.3.0-cp310-abi3-win_arm64.whl CPython 3.10 abi3 Windows ARM64 Details
aioquic-1.3.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
aioquic-1.3.0-cp310-abi3-win32.whl CPython 3.10 abi3 Windows x86-32 Details
aioquic-1.3.0-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
aioquic-1.3.0-cp310-abi3-musllinux_1_2_i686.whl CPython 3.10 abi3 Linux musl 1.2+ x86-32 Details
aioquic-1.3.0-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details
aioquic-1.3.0-cp310-abi3-manylinux_2_28_i686.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-32 Details
aioquic-1.3.0-cp310-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 Details
aioquic-1.3.0-cp310-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
aioquic-1.3.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
aioquic-1.3.0-cp310-abi3-macosx_10_9_x86_64.whl CPython 3.10 abi3 macOS 10.9+ x86-64 Details

Total release size: 23.8 MB

Release files / aioquic-1.3.0.tar.gz

Download URL aioquic-1.3.0.tar.gz
Size 181.9 kB
Tags Source
SHA-256 checksum
How to use checksums
28d070b2183e3e79afa9d4e7bd558960d0d53aeb98bc0cf0a358b279ba797c92
BLAKE2b-256 checksum
How to use checksums
6b0c858bb02e0ff96b40735b09ed7be25690197851e4c1bcde51af3348c851fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aioquic-1.3.0-cp310-abi3-win_arm64.whl

Download URL aioquic-1.3.0-cp310-abi3-win_arm64.whl
Size 1.2 MB
Tags CPython 3.10 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
9d15a89213d38cbc4679990fa5151af8ea02655a1d6ce5ec972b0a6af74d5f1c
BLAKE2b-256 checksum
How to use checksums
4360a8cb5f85c5a6a3cc630124a45644ca5a0ab3eecae2df558b6e0ab7847e1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aioquic-1.3.0-cp310-abi3-win_amd64.whl

Download URL aioquic-1.3.0-cp310-abi3-win_amd64.whl
Size 1.7 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
2d7957ba14a6c5efcc14fdc685ccda7ecf0ad048c410a2bdcad1b63bf9527e8e
BLAKE2b-256 checksum
How to use checksums
82454e47404984d65ee31cc9e1370f1fbc4e8c92b25da71f61429dbdba437246
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aioquic-1.3.0-cp310-abi3-win32.whl

Download URL aioquic-1.3.0-cp310-abi3-win32.whl
Size 1.3 MB
Tags CPython 3.10 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
ba30016244e45d9222fdd1fbd4e8b0e5f6811e81a5d0643475ad7024a537274a
BLAKE2b-256 checksum
How to use checksums
23f27b1908feffb29b89d2f6d4adc583e83543cd559676354f85c5b4b77a6428
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aioquic-1.3.0-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL aioquic-1.3.0-cp310-abi3-musllinux_1_2_x86_64.whl
Size 2.5 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
a8881239801279188e33ced6f9849cedf033325a48a6f44d7e55e583abc555a3
BLAKE2b-256 checksum
How to use checksums
bcf43c674f4608883e7fc7212f067c599d1321b0c5dd45bda5c77ab5a1e73924
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aioquic-1.3.0-cp310-abi3-musllinux_1_2_i686.whl

Download URL aioquic-1.3.0-cp310-abi3-musllinux_1_2_i686.whl
Size 2.4 MB
Tags CPython 3.10 Linux musl 1.2+ x86-32 abi3
SHA-256 checksum
How to use checksums
0538acdfbf839d87b175676664737c248cd51f1a2295c5fef8e131ddde478a86
BLAKE2b-256 checksum
How to use checksums
5250b421e7aedff4a96840bf8734c2c11c18a8434c780c0cb59dff7f0906cee8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aioquic-1.3.0-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL aioquic-1.3.0-cp310-abi3-musllinux_1_2_aarch64.whl
Size 2.8 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
48292279a248422b6289fffd82159eba8d8b35ff4b1f660b9f74ff85e10ca265
BLAKE2b-256 checksum
How to use checksums
87bea141aafe8984ed380e610397d606a9d9818ef30ce352aa9ede048a966d81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aioquic-1.3.0-cp310-abi3-manylinux_2_28_i686.whl

Download URL aioquic-1.3.0-cp310-abi3-manylinux_2_28_i686.whl
Size 2.4 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-32 abi3
SHA-256 checksum
How to use checksums
4098afc6337adf19bdb54474f6c37983988e7bfa407892a277259c32eb664b00
BLAKE2b-256 checksum
How to use checksums
d57af020815b9fa6ea9b83354deb213b90a25fd01466f5a8e517e1c0e672be8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aioquic-1.3.0-cp310-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL aioquic-1.3.0-cp310-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags CPython 3.10 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
396e5f53f6ddb27713d9b5bb11d8f0f842e42857b7e671c5ae203bf618528550
BLAKE2b-256 checksum
How to use checksums
b90066f9a2f95db35ccbe1d9384d44beae28072fceec6ca0ffa29f6c640516c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aioquic-1.3.0-cp310-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL aioquic-1.3.0-cp310-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 2.8 MB
Tags CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
019b16580d53541b5d77b4a44a61966921156554fad2536d74895713c800caa5
BLAKE2b-256 checksum
How to use checksums
a865383f3b3921e1d6b9b757bff3c805c24f7180eda690aecb5e8df50eb7b028
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aioquic-1.3.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL aioquic-1.3.0-cp310-abi3-macosx_11_0_arm64.whl
Size 2.2 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
48590fa38ec13f01a3d4e44fb3cfd373661094c9c7248f3c54d2d9512b6c3469
BLAKE2b-256 checksum
How to use checksums
9eeaac91850a3e6c915802d8c0ee782f966ddfaeed9f870696c1cdb98b25c9a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aioquic-1.3.0-cp310-abi3-macosx_10_9_x86_64.whl

Download URL aioquic-1.3.0-cp310-abi3-macosx_10_9_x86_64.whl
Size 1.9 MB
Tags CPython 3.10 abi3 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
59da070ff0f55a54f5623c9190dbc86638daa0bcf84bbdb11ebe507abc641435
BLAKE2b-256 checksum
How to use checksums
c7419a6cf092f2d21768091969dccd4723270f4cd8138d00097160d9c8eabeb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

1.3.0 This release

12 release files

1.1.0

26 release files

1.0.0

23 release files

0.9.7

27 release files

0.9.6

19 release files

0.9.5

19 release files

0.9.4

19 release files

0.9.3

19 release files

0.9.0

19 release files

0.8.8

19 release files

0.8.7

19 release files

0.8.6

1 release file

0.8.5

1 release file

0.8.4

1 release file

0.8.3

1 release file

0.8.2

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.0

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.0

1 release file

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