This release is a pre-release and may not be stable for production use.
zelpy
zelpy is an async Python client for sending and receiving text and Ogg Opus
voice messages with the Zello Channel API. The library operates entirely on
in-memory data; the included CLI provides convenient file and audio conversion
support for testing.
Library usage
from zelpy import TextMessage, VoiceMessage, Zello, ZelloCredentials
credentials = ZelloCredentials(
developer_token="...",
username="...",
password="...",
issuer="...",
public_key="...",
private_key="...",
)
async with Zello(credentials, "my-channel") as client:
await client.send_text("Hello from Python")
async for message in client.messages():
if isinstance(message, TextMessage):
print(message.sender, message.text)
elif isinstance(message, VoiceMessage):
print(message.sender, message.audio)
Pass complete Ogg Opus bytes to client.send_voice(audio). Received
VoiceMessage.audio values are also complete Ogg Opus byte strings.
CLI usage
# Listen for text and voice messages
uv run zelpy --channel my-channel receive
# Send a text message
uv run zelpy --channel my-channel send-text "Hello from Python"
# Send an audio file
uv run zelpy --channel my-channel send-voice message.wav
The CLI accepts native Ogg Opus audio directly. For other audio formats, it
uses ffmpeg when available. Received voice messages are saved under
./received/ by default.
zello.yaml
The CLI reads credentials from ./zello.yaml in the current working directory:
developer_token: "..."
username: "..."
password: "..."
issuer: "..."
public_key: |
-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----
private_key: |
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
Use a different file with --credentials /path/to/zello.yaml.
Obtaining credentials
See Zello's Channel API authentication guide, then:
- Go to the Zello Developer Console and click Login.
- Enter your Zello username and password. If you don't have an account, download the Zello app and create one.
- Complete every field in the developer profile and click Submit.
- Click Keys, then Add Key.
- Copy and save the Sample Development Token, Issuer, and Private Key. Use Select All to ensure that each complete value is copied.
- Click Close.
The developer credentials expire every 30 days. See the Channel API authentication guide for renewal instructions and more information.
Metadata
Release files for zelpy 0.0.0a1
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 | |
|---|---|---|---|---|
| zelpy-0.0.0a1.tar.gz | 12.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| zelpy-0.0.0a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.0 kB
Release files / zelpy-0.0.0a1.tar.gz
| Download URL | zelpy-0.0.0a1.tar.gz |
|---|---|
| Size | 12.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d46bc0dd4e2ed3d57995f59d81a20d4afebfa7c32b6a37d7a88a18ded9562dbd
|
|
BLAKE2b-256 checksum How to use checksums |
a9fe7c237b2422362e6c1b41a7bc05366a17fc11c5946715ab29ddc3c86fda81
|
| 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 Aug 3, 2026.
Transparency logRelease files / zelpy-0.0.0a1-py3-none-any.whl
| Download URL | zelpy-0.0.0a1-py3-none-any.whl |
|---|---|
| Size | 11.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c36a9451f9920599e50c5721d5fe3363a78c0729d56a08f5d22e132b0abc4d43
|
|
BLAKE2b-256 checksum How to use checksums |
89cb35a109a713a7b6ff2a660a9e30a5956fedc43711f0dedf43b71d87b6ad01
|
| 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 Aug 3, 2026.
Transparency logSecurity for zelpy 0.0.0a1
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 2 files in this release have been uploaded with provenance metadata.
Attestation for zelpy-0.0.0a1.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 Aug 3, 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.