Skip to main content

rly

rly is the command-line interface for ReplyLayer — safe email for AI agents. Send, receive, reply to, and security-scan transactional and operational email from the terminal or an agent loop. Not a bulk or marketing tool.

This package is the PyPI launcher: it ships a bundled native binary, so no Node toolchain is required.

Looking for the Python library? This package is the CLI. For the importable SDK (import replylayer), install replylayer instead: pip install replylayer.

pipx install rly
rly --help

Installing the rly package exposes both the rly and replylayer commands — they are aliases for the same launcher, mirroring the npm package. Examples use the short form:

rly --help   # the `replylayer` command is an identical legacy alias

On Debian and Ubuntu systems that enforce PEP 668, plain pip install rly may fail with externally-managed-environment. Use pipx install rly for a global CLI install, or install inside a virtual environment:

python3 -m venv .venv
. .venv/bin/activate
pip install rly

On the supported binary-wheel install, the rly command execs a bundled native replylayer binary directly — no Node toolchain is involved. The npx rly@<pinned> path is reached only when you explicitly set RLY_FORCE_NPX=1 (the launcher's emergency fallback). If the bundled binary is absent (a source/sdist install on an unsupported platform), rly exits with an actionable error pointing at RLY_FORCE_NPX=1 — it does not fall back to npx automatically. The version-pin contract still holds for that npx fallback — the PyPI rly@X.Y.Z resolves the npm rly@X.Y.Z exactly (see Strict pin policy below).

Requirements

  • Python 3.10+
  • pipx for the recommended global install path

Optional (fallback only): Node 22+ with npx on PATH is required only when you opt into the emergency RLY_FORCE_NPX=1 fallback — which is also how you run a source/sdist install on an unsupported platform (set RLY_FORCE_NPX=1 with Node on PATH; the launcher does not switch to npx on its own). The binary wheel needs neither Node nor npx.

Examples

rly auth login
rly mailbox list
rly inbox list --mailbox support-bot

For the full command reference, run rly --help. The complete CLI_GUIDE.md is also bundled in the npm rly package and readable on GitHub. Public CLI source and package-trust material (signed SHA256SUMS, GPG key, SLSA provenance) live at: https://github.com/replylayer/rly

Environment variables

RLY_TIMEOUT_SECONDS

Opt-in subprocess timeout, in seconds. When set, every rly invocation is bounded by subprocess.run(..., timeout=RLY_TIMEOUT_SECONDS); if the underlying CLI subprocess does not exit in time the launcher prints a diagnostic to stderr and exits with code 124. This bounds the bundled-binary exec on the supported path (and the npx process under RLY_FORCE_NPX=1).

By default there is no timeout, with one narrow exception: the help and version short-circuits (--help, -h, --version, -V) carry a built-in 10-second timeout. Those commands should never need to touch the network beyond an initial registry resolve; bounding them lets you diagnose a restricted-network sandbox without affecting legitimate long-poll commands like rly inbox wait --timeout 60.

RLY_TIMEOUT_SECONDS=30 rly inbox list --mailbox support-bot

Set the value high enough to cover the slowest command you reasonably expect. Setting it to a non-integer string is treated as "no timeout" (graceful fallback rather than a launcher crash).

RLY_OFFLINE

RLY_OFFLINE is a no-op on the default bundled-binary path — it applies only under the RLY_FORCE_NPX=1 fallback (the only path that invokes npx).

Set RLY_OFFLINE=1 to force npx to resolve rly from the local cache only. The launcher passes both --offline on the command line and npm_config_offline=true in the subprocess environment (belt-and-suspenders; --prefer-offline is NOT a no-network guarantee).

If the pinned rly version isn't cached locally, npx exits fast with its own non-zero exit code (typically 1 with ENOTCACHED); the wrapper passes that exit code through verbatim — it does NOT normalize it to 124. Exit code 124 is reserved for the wrapper's own timeout branch.

# RLY_OFFLINE only applies under the RLY_FORCE_NPX=1 fallback. Warm the npx
# cache once, online:
RLY_FORCE_NPX=1 rly --version
# Subsequent fallback calls can then run offline:
RLY_FORCE_NPX=1 RLY_OFFLINE=1 rly --version

RLY_OFFLINE=1 is useful in network-restricted CI sandboxes, air-gapped deployments, or any environment where you want a hard guarantee that the launcher will not reach out to the npm registry.

Strict pin policy

The PyPI rly@X.Y.Z always resolves the npm rly@X.Y.Z exactly — there is no @latest resolution and no semver range. The launcher computes the pinned package string at runtime via importlib.metadata.version('rly'), so the two artifacts always move together.

This means:

  • A published PyPI rly@X.Y.Z cannot ride a later patch-level npm release; both packages must be republished together by ReplyLayer.
  • Source installs from the repository between a launcher-only PR and the paired version bump are intentionally unsupported. Use pipx install rly (PyPI) or npm install -g rly (npm) as the supported install paths.

Metadata

Release files for rly 0.7.15

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rly 0.7.15
File Size Uploaded Provenance
rly-0.7.15.tar.gz 15.3 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for rly 0.7.15
File
rly-0.7.15-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
rly-0.7.15-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
rly-0.7.15-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details
rly-0.7.15-py3-none-macosx_14_0_x86_64.whl Python 3 none macOS 14.0+ x86-64 Details
rly-0.7.15-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details

Total release size: 181.7 MB

Release files / rly-0.7.15.tar.gz

Download URL rly-0.7.15.tar.gz
Size 15.3 kB
Tags Source
SHA-256 checksum
How to use checksums
4dc9757f525238cd459bde92399a9a5766751f76fedbdd30f95acfbdffb3fada
BLAKE2b-256 checksum
How to use checksums
9c2a6f30b6799de8df109ca034cc3089420d070d4b2976ae93d00358d37d147f
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 Sep 14, 2026.

Transparency log

Release files / rly-0.7.15-py3-none-win_amd64.whl

Download URL rly-0.7.15-py3-none-win_amd64.whl
Size 31.4 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
de1590df586ea8182d155ad0d3af2e5c83ff3bcffa6ebf7a143c860f589add7a
BLAKE2b-256 checksum
How to use checksums
673fabe515661ed3f3b29cd94c82db6bb584c0bf27557dccc02a66cba2a6c4cb
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 Sep 14, 2026.

Transparency log

Release files / rly-0.7.15-py3-none-manylinux_2_28_x86_64.whl

Download URL rly-0.7.15-py3-none-manylinux_2_28_x86_64.whl
Size 39.4 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
4a41c296d4e2cba73c681596396c47671b1cc259ecdd38bf109d58cd19ce3f20
BLAKE2b-256 checksum
How to use checksums
a3e5fe019fe12c80cf84688a98d555ad4b4bec85b3fd6dcbc35d9af3b154a532
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 Sep 14, 2026.

Transparency log

Release files / rly-0.7.15-py3-none-manylinux_2_28_aarch64.whl

Download URL rly-0.7.15-py3-none-manylinux_2_28_aarch64.whl
Size 39.0 MB
Tags Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
863b67bbd6870c833ca0a31c60cc6e54e4a4c083aace3e2ba18ef20d7507140a
BLAKE2b-256 checksum
How to use checksums
3136305f81e7c3b256ed4698aff9cf4e40d74475d2b5b3fda3411f73184ffe24
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 Sep 14, 2026.

Transparency log

Release files / rly-0.7.15-py3-none-macosx_14_0_x86_64.whl

Download URL rly-0.7.15-py3-none-macosx_14_0_x86_64.whl
Size 36.9 MB
Tags Python 3 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
bd2a35b6250f110b5acb219d7a45a601e8aba368a1c60632d0697164509d2440
BLAKE2b-256 checksum
How to use checksums
0840c30dd452c7c877f22d824d51578b638dda3bb727b8283cca4fe22fb3c77d
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 Sep 14, 2026.

Transparency log

Release files / rly-0.7.15-py3-none-macosx_14_0_arm64.whl

Download URL rly-0.7.15-py3-none-macosx_14_0_arm64.whl
Size 34.9 MB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
40b50d1ba2afdc7be52460a9b013bbb936b6e40bb0b9df0b8d8bf8e791d621aa
BLAKE2b-256 checksum
How to use checksums
123d2f48604789d5d5547456c885b90ec95d63289644ca05094130dee5907c60
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 Sep 14, 2026.

Transparency log

Security for rly 0.7.15

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 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for rly-0.7.15.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 Sep 14, 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