raknet
Python bindings for RakNet, the UDP networking library used by Minecraft Bedrock. It ships a faithful binding of RakNet's public API and a pythonic layer on top of it, with both a synchronous and an asyncio interface.
import raknet
with raknet.create_connection(("play.example.com", 19132), timeout=5) as conn:
conn.send(b"\xfe...") # a Bedrock game packet
print(conn.recv(timeout=5))
Installation
pip install raknet
Requires Python 3.12 or newer. Prebuilt abi3 wheels are published for Windows and Linux
(x86-64); a single wheel works across all supported Python versions.
The three layers
| Module | Interface | Use it for |
|---|---|---|
raknet |
synchronous | blocking servers and clients, threads |
raknet.asyncio |
asyncio | event-loop applications; mirrors the sync API with await |
raknet.raw |
faithful C++ binding | direct access to RakPeerInterface and every RakNet type |
The two high-level layers share one connection model: a Peer accepts and initiates
connections, and each Connection is a message pipe with send / recv. Anything the
high-level layer does not cover is reachable through peer.raw.
Quick start
Server
import raknet
def handle(connection):
for message in connection: # iterates until the peer disconnects
connection.send(message) # echo it back
with raknet.create_server(("0.0.0.0", 19132), max_connections=32) as server:
server.serve_forever(handle) # one thread per connection
Client
import raknet
with raknet.create_connection(("127.0.0.1", 19132), timeout=5) as conn:
conn.send(b"\xfehello")
reply = conn.recv(timeout=5)
asyncio
The asyncio layer is the same API with await in front; per-call timeouts are left to
asyncio.timeout().
import asyncio
import raknet.asyncio
async def handle(connection):
async for message in connection:
await connection.send(message)
async def main():
server = await raknet.asyncio.create_server(("0.0.0.0", 19132))
async with server:
await server.serve_forever(handle)
asyncio.run(main())
Server-list ping
pong = raknet.ping(("play.example.com", 19132), timeout=5)
print(pong.round_trip_time, pong.data)
More runnable programs are in examples/.
Messages
send and recv move bytes verbatim; there is no added framing. RakNet reads the first byte
of every packet as a message id and only delivers packets whose id is a user id
(>= 0x86, ID_USER_PACKET_ENUM). Lower ids are consumed as RakNet's own control traffic, so
each payload must begin with a user id. Minecraft Bedrock uses 0xFE. Reliability, priority
and the ordering channel are per-call:
conn.send(data, reliability=raknet.PacketReliability.RELIABLE_ORDERED,
priority=raknet.PacketPriority.HIGH_PRIORITY, channel=0)
Errors
Failures raise exceptions rather than returning sentinels. All inherit from RakNetError, and
the connection-lifecycle ones also inherit from the builtin ConnectionError.
| Exception | Raised when |
|---|---|
StartupError |
the peer could not bind its socket |
ConnectError |
a connection attempt was rejected (.reason carries the cause) |
ConnectionClosedOK |
the remote disconnected gracefully |
ConnectionClosedError |
the connection was lost without notice |
TimeoutError |
a timeout= elapsed (the builtin) |
Building from source
Building needs a C++17 compiler and Conan. The raknet recipe is hosted on
the endstone remote:
conan remote add endstone https://conan.cloudsmith.io/endstone/conan/
pip install .
The conan-py-build backend drives Conan and CMake,
so no separate conan install step is required.
Development
pip install -e .
pytest
License
BSD-3-Clause. See LICENSE.
RakNet is © Oculus VR and released under a BSD-style license.
Metadata
Release files for raknet 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 | |
|---|---|---|---|---|
| raknet-0.4.0.tar.gz | 19.6 kB | With provenance | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| raknet-0.4.0-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| raknet-0.4.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
Total release size: 467.9 kB
Release files / raknet-0.4.0.tar.gz
| Download URL | raknet-0.4.0.tar.gz |
|---|---|
| Size | 19.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ecf4d7cd081dac194995b5f75a224474d06f9d05be983b54bfdfd25c1bdc1bc
|
|
BLAKE2b-256 checksum How to use checksums |
7143675dbc16ca85ee6dcec04d60d365eba5fee5eebcbc56c82b474956aceb6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.
Transparency logRelease files / raknet-0.4.0-cp312-abi3-win_amd64.whl
| Download URL | raknet-0.4.0-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 184.1 kB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7c545e6b5754097acbfd25a0955157c5dd9afe4209f14ddc5e29a0d73faeabd9
|
|
BLAKE2b-256 checksum How to use checksums |
c2bd756b17e53ce5429fce07c2b0a8d2fe9eef2ba7ff7fd7fa138ce98c539970
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.
Transparency logRelease files / raknet-0.4.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | raknet-0.4.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 264.1 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
c512df290bca352bfb569a17011ee7ce073d731c715c4553b4ebda1b87c7b1dd
|
|
BLAKE2b-256 checksum How to use checksums |
f5024891fb23765a1b7d1f6b1b380b561952a88ea5c79a5d9d9d936c9e136606
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.
Transparency logSecurity for raknet 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.
Full provenance
All 3 files in this release have been uploaded with provenance metadata.
Attestation for raknet-0.4.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.
Transparency logA 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.