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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rly-0.7.14.tar.gz (15.3 kB view details)

Uploaded Source

Built Distributions

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

rly-0.7.14-py3-none-win_amd64.whl (31.4 MB view details)

Uploaded Python 3Windows x86-64

rly-0.7.14-py3-none-manylinux_2_28_x86_64.whl (39.4 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

rly-0.7.14-py3-none-manylinux_2_28_aarch64.whl (39.0 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

rly-0.7.14-py3-none-macosx_14_0_x86_64.whl (36.9 MB view details)

Uploaded Python 3macOS 14.0+ x86-64

rly-0.7.14-py3-none-macosx_14_0_arm64.whl (34.9 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file rly-0.7.14.tar.gz.

File metadata

  • Download URL: rly-0.7.14.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rly-0.7.14.tar.gz
Algorithm Hash digest
SHA256 ccf493e512ea75778febe9671bfc256f8d6a6c4360037f0ee1af02f9530b0c4f
MD5 4819722728f08e06a3c59a1822f0c6da
BLAKE2b-256 95470d4cf8ee357851f5ad54a5df976e5dcc05d6d474ab0877b32fd16563dbd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for rly-0.7.14.tar.gz:

Publisher: release-cli-binaries.yml on replylayer/ReplyLayer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rly-0.7.14-py3-none-win_amd64.whl.

File metadata

  • Download URL: rly-0.7.14-py3-none-win_amd64.whl
  • Upload date:
  • Size: 31.4 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rly-0.7.14-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 41782a4ba5783e49ac82945c3cbb850dd1a862988295f33762578d270874b244
MD5 fe50b4c13f91d6ed6b7ad80a9331ae00
BLAKE2b-256 d2f65970474288516d48e93c7f2925db7d1b8d260b8fd058abb124827088e105

See more details on using hashes here.

Provenance

The following attestation bundles were made for rly-0.7.14-py3-none-win_amd64.whl:

Publisher: release-cli-binaries.yml on replylayer/ReplyLayer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rly-0.7.14-py3-none-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: rly-0.7.14-py3-none-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 39.4 MB
  • Tags: Python 3, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rly-0.7.14-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9f218a6a3be313214ce0d0809506b4a31984ff4a0082b57c9c29be435820e833
MD5 4f868494a7b4e494f5f96c8793660b2f
BLAKE2b-256 99fbbdee66ce3ec43eb91d6df6d21ee981bd04bc465ef259dfe36ef00ee99e25

See more details on using hashes here.

Provenance

The following attestation bundles were made for rly-0.7.14-py3-none-manylinux_2_28_x86_64.whl:

Publisher: release-cli-binaries.yml on replylayer/ReplyLayer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rly-0.7.14-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rly-0.7.14-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d6b84fd5c2ed19c77201051f5c1215ce6a2a88d5462c553961b4fdecc59b420a
MD5 23f19ab603db32b7446ae5b68befdd42
BLAKE2b-256 737b1a7b46e35eea9ba5fb193460e1fcc185607190d2b6eb3b2db8e3732a2658

See more details on using hashes here.

Provenance

The following attestation bundles were made for rly-0.7.14-py3-none-manylinux_2_28_aarch64.whl:

Publisher: release-cli-binaries.yml on replylayer/ReplyLayer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rly-0.7.14-py3-none-macosx_14_0_x86_64.whl.

File metadata

  • Download URL: rly-0.7.14-py3-none-macosx_14_0_x86_64.whl
  • Upload date:
  • Size: 36.9 MB
  • Tags: Python 3, macOS 14.0+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rly-0.7.14-py3-none-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 333c81f68451f9e064d36561024bcc3c5105078535e3b1d52da753aa5634d7e3
MD5 f0287108425da72080f194903cb766bb
BLAKE2b-256 b91770837b912dbd1d6d3c6e42a98d075ad8e7e3ca9eb55436e398d6186b9599

See more details on using hashes here.

Provenance

The following attestation bundles were made for rly-0.7.14-py3-none-macosx_14_0_x86_64.whl:

Publisher: release-cli-binaries.yml on replylayer/ReplyLayer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rly-0.7.14-py3-none-macosx_14_0_arm64.whl.

File metadata

  • Download URL: rly-0.7.14-py3-none-macosx_14_0_arm64.whl
  • Upload date:
  • Size: 34.9 MB
  • Tags: Python 3, macOS 14.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rly-0.7.14-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 47fd0a75aa71944d4ad76500f30a48d46cead02258cc5ea61b38b088ee16acbe
MD5 b7f12795a7fdcb3e5aefb0ae4a59f791
BLAKE2b-256 5b2f954b2866891b9290b2760671f6c7fc89127b7af991962ff78dff580849a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for rly-0.7.14-py3-none-macosx_14_0_arm64.whl:

Publisher: release-cli-binaries.yml on replylayer/ReplyLayer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.7.14 This release

6 files

0.7.13

6 files

0.7.12

6 files

0.7.11

6 files

0.7.10

6 files

0.7.8

6 files

0.7.5

6 files

0.7.4

6 files

0.7.3

6 files

0.7.2

6 files

0.7.1

6 files

0.7.0

6 files

0.6.3

6 files

0.6.2

6 files

0.6.1

6 files

0.2.0

6 files

0.1.3

2 files

0.1.1

2 files

0.1.0

2 files

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