High-performance P2P Swarm implementation via Official Hyperswarm Bindings
Project description
KadePy
High-Performance P2P Swarm Implementation via Official Hyperswarm Bindings
KadePy is a robust and efficient library for connecting to the Hyperswarm network. It leverages the official, battle-tested Hyperswarm stack (Node.js) through a high-performance native binding, ensuring 100% protocol compliance, reliable holepunching, and secure communications.
Features
- Official Hyperswarm Stack: Powered by
hyperswarm,hyperdht,dht-rpc, andlibudx. - Full Compatibility: Guaranteed wire compatibility with any Hyperswarm peer (Node.js, Holepunch, etc.).
- Native Bindings:
- Uses a lightweight, managed Node.js daemon for protocol handling.
- Transparent IPC bridge for high-performance communication between Python and the swarm.
- Secure:
- Noise Handshake (XX Pattern): Authenticated, encrypted connections using
libsodium(Ed25519/Curve25519). - UDX Transport: Reliable, congestion-controlled UDP transport.
- Noise Handshake (XX Pattern): Authenticated, encrypted connections using
- Easy to Use: Simple Python API for joining topics, finding peers, and exchanging data.
- Zero-Config: Automatically handles dependency management and process lifecycle.
Installation
Requirements
- Python 3.10+
- Node.js & npm (Required for the underlying native bindings)
From Source
git clone https://github.com/ON00dev/KadePy.git
cd KadePy
pip install .
Quick Start
Basic Swarm Node
from kadepy import Swarm
import hashlib
import time
# Create a node (automatically initializes the native backend)
node = Swarm()
print("Node started!")
# Generate a topic key (32-byte hex string or bytes)
topic = hashlib.sha256(b"my-app-topic").digest().hex()
print(f"Joining topic: {topic}")
# Join the swarm for this topic
node.join(topic)
# Define callback for new connections
def on_connection(socket, info):
print(f"New connection! Peer Key: {info.get('publicKey')}")
# Send a greeting
socket.sendall(b"Hello from KadePy!")
# Receive data in a loop (simple example)
while True:
data = socket.recv(1024)
if not data: break
print(f"Received: {data.decode()}")
# Register the callback
node.on("connection", on_connection)
# Keep the process alive
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("Stopping...")
node.close()
Architecture
KadePy v0.3.0 adopts a "Native Binding" architecture:
- Python Frontend: Provides the idiomatic
Swarmclass and event handling. - Native Daemon: A pinned, vendored version of the official Hyperswarm stack running as a managed subprocess.
- IPC Bridge: High-speed local TCP bridge for stream piping, allowing Python to interact with raw UDX streams as if they were local sockets.
This architecture ensures that KadePy behaves exactly like a native Node.js Hyperswarm peer on the network layer, eliminating protocol drift and implementation bugs.
Contributing
Contributions are welcome! Please check out the CONTRIBUTING.md guide for details.
License
Distributed under the MIT License. See LICENSE for more information.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kadepy-0.3.0.tar.gz.
File metadata
- Download URL: kadepy-0.3.0.tar.gz
- Upload date:
- Size: 4.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f1e635de72524b2412d442dfed47a8c714c1c7594a948f1c85eb747ab1cf203
|
|
| MD5 |
abd81be4bd7edaedbecddb6f58c87d28
|
|
| BLAKE2b-256 |
c681b27dba3a5de951ad4420b65d7cc5000404e43dac44d9ff7bfbc878a790d2
|
File details
Details for the file kadepy-0.3.0-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: kadepy-0.3.0-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 242.5 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f3e836bd8a73f12a85e3ea6afad6807ab216efc63e273b9b268160130e36aef
|
|
| MD5 |
2ac2c2ac45cf24d21fd339229e050b61
|
|
| BLAKE2b-256 |
3688e32bd30236a844c77a475992f0c6d94786dd0d7a29f07a30d722490fcb3c
|