PyPI launcher for the ReplyLayer CLI
Project description
rly
rly is the PyPI launcher for the ReplyLayer CLI.
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.
Use whichever name you prefer:
replylayer --help # identical to `rly --help`
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 replylayer@<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 — rly@X.Y.Z resolves replylayer@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
npxonPATHis required only when you opt into the emergencyRLY_FORCE_NPX=1fallback — which is also how you run a source/sdist install on an unsupported platform (setRLY_FORCE_NPX=1with Node onPATH; the launcher does not switch tonpxon its own). The binary wheel needs neither Node nornpx.
Examples
rly auth login
rly mailbox list
rly inbox list --mailbox support-bot
For full CLI documentation, see the ReplyLayer repository: https://github.com/replylayer/ReplyLayer
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 replylayer 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 replylayer 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.
# Populate the cache once, online:
rly --version
# Subsequent calls can run offline:
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
rly@X.Y.Z always resolves replylayer@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
rly@X.Y.Zcannot ride a later patch-levelreplylayerrelease; both packages must be republished together. The matched-pair release runbook lives atdocs/runbooks/cli-release.mdin the ReplyLayer repository. - Source installs from the repository between a launcher-only PR and the
paired version bump are intentionally unsupported. Use
pipx install rly(PyPI) ornpm install -g replylayer(npm) as the supported install paths.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rly-0.6.2.tar.gz.
File metadata
- Download URL: rly-0.6.2.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bc0e4d2f1efe9c8ce05f42cbee0b89c2541e9ed1642f8765c13f5db75c663ff
|
|
| MD5 |
154380769843fb905fb81aa3644617af
|
|
| BLAKE2b-256 |
3475d78401243a2ccf62789723e220107ae7de0ebd8bfb8efffa2e1adecca0c4
|
Provenance
The following attestation bundles were made for rly-0.6.2.tar.gz:
Publisher:
release-cli-binaries.yml on replylayer/ReplyLayer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rly-0.6.2.tar.gz -
Subject digest:
0bc0e4d2f1efe9c8ce05f42cbee0b89c2541e9ed1642f8765c13f5db75c663ff - Sigstore transparency entry: 1726165919
- Sigstore integration time:
-
Permalink:
replylayer/ReplyLayer@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Branch / Tag:
refs/tags/cli-v0.6.2 - Owner: https://github.com/replylayer
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-cli-binaries.yml@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Trigger Event:
push
-
Statement type:
File details
Details for the file rly-0.6.2-py3-none-win_amd64.whl.
File metadata
- Download URL: rly-0.6.2-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/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
458151a87074cfd60dbd93ac9e695d1ba66c25630807b32921ef8039e74f5c76
|
|
| MD5 |
5b7bf46597f96292befddae1d6e60e72
|
|
| BLAKE2b-256 |
fbd52e96f1f4514bcd847e429dde66751bd85f3c2430ddea192ae5dd5274839f
|
Provenance
The following attestation bundles were made for rly-0.6.2-py3-none-win_amd64.whl:
Publisher:
release-cli-binaries.yml on replylayer/ReplyLayer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rly-0.6.2-py3-none-win_amd64.whl -
Subject digest:
458151a87074cfd60dbd93ac9e695d1ba66c25630807b32921ef8039e74f5c76 - Sigstore transparency entry: 1726166466
- Sigstore integration time:
-
Permalink:
replylayer/ReplyLayer@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Branch / Tag:
refs/tags/cli-v0.6.2 - Owner: https://github.com/replylayer
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-cli-binaries.yml@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Trigger Event:
push
-
Statement type:
File details
Details for the file rly-0.6.2-py3-none-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rly-0.6.2-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/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6abb58329f04e0508b140c8b8eee643dab5914ecf31c6c43cbad8b0150d57e82
|
|
| MD5 |
14cc5dc4e622a1b28f3d7bf4bcda6d38
|
|
| BLAKE2b-256 |
4c2df4f3c9a276cd18b27f36613e720158851448a6d7b9f49d90c6d23599979c
|
Provenance
The following attestation bundles were made for rly-0.6.2-py3-none-manylinux_2_28_x86_64.whl:
Publisher:
release-cli-binaries.yml on replylayer/ReplyLayer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rly-0.6.2-py3-none-manylinux_2_28_x86_64.whl -
Subject digest:
6abb58329f04e0508b140c8b8eee643dab5914ecf31c6c43cbad8b0150d57e82 - Sigstore transparency entry: 1726167112
- Sigstore integration time:
-
Permalink:
replylayer/ReplyLayer@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Branch / Tag:
refs/tags/cli-v0.6.2 - Owner: https://github.com/replylayer
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-cli-binaries.yml@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Trigger Event:
push
-
Statement type:
File details
Details for the file rly-0.6.2-py3-none-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rly-0.6.2-py3-none-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 39.0 MB
- Tags: Python 3, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9878e0d947fb08008d9d8d22565a10d88ff380a5867dd6318b32b43d4c74ceb
|
|
| MD5 |
3d5c28ca71f00d375203920ee4130042
|
|
| BLAKE2b-256 |
71866766d58f0a88c49d4fbd5b361236ab65c00dbff4be17b1a2075e80d7a67a
|
Provenance
The following attestation bundles were made for rly-0.6.2-py3-none-manylinux_2_28_aarch64.whl:
Publisher:
release-cli-binaries.yml on replylayer/ReplyLayer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rly-0.6.2-py3-none-manylinux_2_28_aarch64.whl -
Subject digest:
f9878e0d947fb08008d9d8d22565a10d88ff380a5867dd6318b32b43d4c74ceb - Sigstore transparency entry: 1726166205
- Sigstore integration time:
-
Permalink:
replylayer/ReplyLayer@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Branch / Tag:
refs/tags/cli-v0.6.2 - Owner: https://github.com/replylayer
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-cli-binaries.yml@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Trigger Event:
push
-
Statement type:
File details
Details for the file rly-0.6.2-py3-none-macosx_14_0_x86_64.whl.
File metadata
- Download URL: rly-0.6.2-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/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1125d5cfe6eade65434735e3cee6dba14d214717e2cd6a4e35874a13c354bae2
|
|
| MD5 |
4f78c6cc641043f39b7ac02ed9bf6c7f
|
|
| BLAKE2b-256 |
dc13095950f3c91881144c9751f2c1885305aadf0598dc59a18632e42339f10c
|
Provenance
The following attestation bundles were made for rly-0.6.2-py3-none-macosx_14_0_x86_64.whl:
Publisher:
release-cli-binaries.yml on replylayer/ReplyLayer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rly-0.6.2-py3-none-macosx_14_0_x86_64.whl -
Subject digest:
1125d5cfe6eade65434735e3cee6dba14d214717e2cd6a4e35874a13c354bae2 - Sigstore transparency entry: 1726166887
- Sigstore integration time:
-
Permalink:
replylayer/ReplyLayer@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Branch / Tag:
refs/tags/cli-v0.6.2 - Owner: https://github.com/replylayer
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-cli-binaries.yml@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Trigger Event:
push
-
Statement type:
File details
Details for the file rly-0.6.2-py3-none-macosx_14_0_arm64.whl.
File metadata
- Download URL: rly-0.6.2-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/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf5ed3a8739e42083eeb0a0825da094126d9af0fb8a6d39ca6d1a889be023428
|
|
| MD5 |
79507ed30967390b84648603f82b83fc
|
|
| BLAKE2b-256 |
9b8f5518522aa50efd600df0820a84e6abfbc657e4dec4ab58f58aadb2e1a19b
|
Provenance
The following attestation bundles were made for rly-0.6.2-py3-none-macosx_14_0_arm64.whl:
Publisher:
release-cli-binaries.yml on replylayer/ReplyLayer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rly-0.6.2-py3-none-macosx_14_0_arm64.whl -
Subject digest:
cf5ed3a8739e42083eeb0a0825da094126d9af0fb8a6d39ca6d1a889be023428 - Sigstore transparency entry: 1726166605
- Sigstore integration time:
-
Permalink:
replylayer/ReplyLayer@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Branch / Tag:
refs/tags/cli-v0.6.2 - Owner: https://github.com/replylayer
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-cli-binaries.yml@dd3112221eb5378a3c11f9c418712bfa73ad628e -
Trigger Event:
push
-
Statement type: