PushArmor command-line client
Send links and text to your own devices from a terminal. Everything is end-to-end encrypted: the relay server only passes on data it cannot read.
See https://pusharmor.com for the apps and the full guide.
Install
We recommend pipx. It installs the cryptography package for you:
pipx install pusharmor
Or download pusharmor.py from the GitHub release, check its SHA-256 against
pusharmor.py.sha256 from the same release, and run it with Python:
sha256sum -c pusharmor.py.sha256
python3 pusharmor.py --help
The single file needs the cryptography package. Install it from your
distribution:
sudo apt install python3-cryptography # Debian and Ubuntu
sudo dnf install python3-cryptography # RHEL, Fedora, and related
Commands
pusharmor login- log in this device (open the link it shows, then paste the code).pusharmor pair- list your devices;pusharmor pair IDpairs with one: compare the fingerprint on both devices, then confirm or reject.pusharmor send TEXT- send a link or text to all paired devices;--to IDfor one,--textto send a link as plain text. With-or piped input it reads stdin.pusharmor listen- print messages as they arrive;--json,--tsv, or--exec PROG(runs PROG ID NAME PLATFORM TYPE BODY per message).pusharmor rename NAME- change the name your other devices show.pusharmor logout- log out; keys and paired devices stay on this device.pusharmor delete ID- remove a device from your account (this device too). It asks first; without a terminal it needs--yes.
Run pusharmor COMMAND --help for details. Files live in ~/.config/pusharmor
(or $XDG_CONFIG_HOME/pusharmor, $PUSHARMOR_CONFIG, or --config DIR).
Exit codes
| Code | Meaning |
|---|---|
| 0 | success |
| 1 | error: a failed request, a damaged or unreadable file, or a failed write on this device |
| 2 | wrong command line, or the command needs a terminal |
| 3 | not logged in, logged out, or this device was removed |
| 4 | send failed for at least one device, or there is no device to send to |
| 70 | an unexpected error in PushArmor; please report it |
| 75 | the relay server is busy or unreachable; try again later |
| 130 | stopped with Ctrl-C |
Needs
- Linux or macOS. Windows is not supported yet.
- Python 3.9 or newer.
- The
cryptographypackage (version 3.3.2 or newer). pipx installs it for you.
Metadata
Release files for pusharmor 0.0.21
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 | Actions |
|---|---|---|---|---|
| pusharmor-0.0.21.tar.gz | 46.9 kB | With provenance | Details for pusharmor-0.0.21.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pusharmor-0.0.21-py3-none-any.whl | Python 3 | none | any | Details for pusharmor-0.0.21-py3-none-any.whl |
Total release size: 81.3 kB
Release files / pusharmor-0.0.21.tar.gz
| Download URL | pusharmor-0.0.21.tar.gz |
|---|---|
| Size | 46.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
425ffe2a89bb28b98485d83c88f5ca817fbc50df680080f73c7384a03e272e43
|
|
BLAKE2b-256 checksum How to use checksums |
49fc0d520fed1176ff150a58f5c21f4a02ccdd3f3202066f1a65ecc02683eb53
|
| 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 Nov 1, 2026.
Transparency logRelease files / pusharmor-0.0.21-py3-none-any.whl
| Download URL | pusharmor-0.0.21-py3-none-any.whl |
|---|---|
| Size | 34.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ada05b3007557d62fefb7fa08c83d2f98090b4668cc49f753fe990f7107003a7
|
|
BLAKE2b-256 checksum How to use checksums |
e0b6a1e553414a271f405ef9b9db1470f51daf93c99307c6539a75df60a3c183
|
| 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 Nov 1, 2026.
Transparency logSecurity for pusharmor 0.0.21
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 pusharmor-0.0.21.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 Nov 1, 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.