Skip to main content
Pre-release

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:

  1. Go to the Zello Developer Console and click Login.
  2. Enter your Zello username and password. If you don't have an account, download the Zello app and create one.
  3. Complete every field in the developer profile and click Submit.
  4. Click Keys, then Add Key.
  5. Copy and save the Sample Development Token, Issuer, and Private Key. Use Select All to ensure that each complete value is copied.
  6. 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)

Source distribution for zelpy 0.0.0a1
File Size Uploaded Provenance
zelpy-0.0.0a1.tar.gz 12.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for zelpy 0.0.0a1
File Interpreter ABI Platform
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page