Skip to main content

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, and libudx.
  • 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.
  • 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:

  1. Python Frontend: Provides the idiomatic Swarm class and event handling.
  2. Native Daemon: A pinned, vendored version of the official Hyperswarm stack running as a managed subprocess.
  3. 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

kadepy-0.3.0.tar.gz (4.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kadepy-0.3.0-cp314-cp314-win_amd64.whl (242.5 kB view details)

Uploaded CPython 3.14Windows x86-64

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

Hashes for kadepy-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5f1e635de72524b2412d442dfed47a8c714c1c7594a948f1c85eb747ab1cf203
MD5 abd81be4bd7edaedbecddb6f58c87d28
BLAKE2b-256 c681b27dba3a5de951ad4420b65d7cc5000404e43dac44d9ff7bfbc878a790d2

See more details on using hashes here.

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

Hashes for kadepy-0.3.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 6f3e836bd8a73f12a85e3ea6afad6807ab216efc63e273b9b268160130e36aef
MD5 2ac2c2ac45cf24d21fd339229e050b61
BLAKE2b-256 3688e32bd30236a844c77a475992f0c6d94786dd0d7a29f07a30d722490fcb3c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page