Help Peer Python SDK
A Python SDK for asynchronously sharing large file dumps (AI model weights) via the Help Peer network.
Agents: every CLI command takes --json (one JSON object on stdout, exit code 0/1), and receive is safe to retry. The output fields and retry rules are in the main README.
Installation
pip install helppeer
Or from a clone of this repo: pip install ./sdk. Use 0.2.0 or later: 0.1.0 predates the current protocol, has weak transfer codes, and has been yanked.
Quick Start
import helppeer
# Send a model directory
code = helppeer.send("./my-model", name="Llama-3-70B")
print(f"Transfer code: {code}")
# Share this code with the recipient. Data lives for 24 hours.
# Receive a transfer
helppeer.receive("orbit-velvet-zoom-candle-harbor-ember", output_dir="./received")
Configuration
import helppeer
# Use custom relay and storage nodes
helppeer.configure(
relay="https://relay.helppeer.dev",
storage_nodes=["https://node1.helppeer.dev", "https://node2.helppeer.dev"],
)
# Or use environment variables:
# HELPEER_RELAY_URL, HELPEER_STORAGE_NODES (comma-separated)
Agent Integration
import helppeer
import json
# Send and get structured result
result = helppeer.send("./model-weights", name="my-model", return_details=True)
# result = {"code": "orbit-velvet-zoom-candle-harbor-ember", "transfer_name": "my-model", "files": 4, "total_bytes": 1056}
# Receive with progress callback
def on_progress(file_path, segment, total_segments):
print(f" {file_path}: {segment}/{total_segments} segments")
helppeer.receive("orbit-velvet-zoom-candle-harbor-ember", output_dir="./received", progress=on_progress)
CLI
The SDK also installs a helppeer CLI:
helppeer send ./my-model --name "Llama-3-70B"
helppeer send ./model.safetensors --message "Checkpoint from step 12k" # single file, with a note
helppeer info orbit-velvet-zoom-candle-harbor-ember # preview name, message and files without downloading
helppeer receive orbit-velvet-zoom-candle-harbor-ember --output ./received
helppeer cancel orbit-velvet-zoom-candle-harbor-ember # withdraw a transfer before it expires
# Global flags go before the subcommand
helppeer --relay https://relay.example.com --nodes https://n1.example.com,https://n2.example.com,https://n3.example.com send ./my-model
helppeer --json receive orbit-velvet-zoom-candle-harbor-ember # machine-readable output
python -m helppeer works the same way.
Usernames and inbox
On a Help Peer website, create an API token on the Account page, then:
import helppeer
helppeer.login("https://helppeer.example.com", "hp_...") # saved for the SDK and CLI
helppeer.send("./my-model", to=["alice", "bob@example.com"]) # usernames go to their inbox
for item in helppeer.inbox(): # transfers sent to you
helppeer.receive(item["code"], output_dir="./received") # also clears the inbox item
helppeer.logout()
The CLI equivalents are helppeer login --server ... --token ..., helppeer send PATH --to alice,bob@example.com, helppeer inbox and helppeer logout. While logged in, the SDK uses the website's relay and storage nodes unless you configure() others.
Transfers are fully compatible with the Rust CLI and the web UI: a code from any of them can be received with any other. Every shard and every received file is checked against its BLAKE3 hash.
If a download fails partway (e.g. a storage node is briefly unreachable), run receive again with the same code: the relay keeps the transfer until a receiver confirms it was fully received. receive() returns "acknowledged": True once that confirmation succeeds. Retries resume where the previous attempt stopped: progress is kept in <output_dir>/.helppeer/ (and removed on success), segments already on disk are re-checked against their hashes, and "resumed_segments" in the result says how many were reused. The Rust CLI uses the same format, so either can finish a download the other started.
Metadata
Release files for helppeer 0.3.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 | |
|---|---|---|---|
| helppeer-0.3.0.tar.gz | 59.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| helppeer-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 115.1 kB
Release files / helppeer-0.3.0.tar.gz
| Download URL | helppeer-0.3.0.tar.gz |
|---|---|
| Size | 59.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f8627cdeef1aa1943c50f73e53ffc4f1d4a4aad4dd7933fe5bf2acc0b122e51f
|
|
BLAKE2b-256 checksum How to use checksums |
1dc3ff537e4346b6f761600eb167c3d2145d5f1c770dde627cf42e1ddddcf787
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.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 Oct 13, 2026.
Transparency logRelease files / helppeer-0.3.0-py3-none-any.whl
| Download URL | helppeer-0.3.0-py3-none-any.whl |
|---|---|
| Size | 55.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
da77e005900b6aaac230dc1aedcf6f6a09cdb4a4b2ecf3bea4ce64c9467e87e7
|
|
BLAKE2b-256 checksum How to use checksums |
8a76733c67b9a7bcc3e0882175e6c0215ad6f7cb90107ee13d2d53da7381bbcf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.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 Oct 13, 2026.
Transparency log