trqsh puts a public HTTPS URL in front of anything on your machine — a dev
server, a webhook receiver, a game server, a raw TCP/UDP listener — in one
command. It's a QUIC-first tunnel (real HTTP/3, not a rebrand of TCP) with a
proper interactive console, live traffic inspection, real Let's Encrypt TLS,
and a fully open-source stack you can self-host end to end. This package
installs the signed trqsh CLI binary for your platform: a thin wrapper
around a small Go binary, verified by SHA-256 on every install.
pip install trqsh
# or, isolated:
pipx install trqsh
trqsh login # sign in through your browser
trqsh http 3000 # → a public HTTPS URL for localhost:3000
Why trqsh
- QUIC-first, TCP fallback — built on HTTP/3's transport from the ground up, not HTTP/1.1 with a marketing label; falls back automatically where UDP is blocked.
- Every protocol —
http,tcp, andudptunnels, not just HTTP. - A real console, not a log spinner —
/pin traffic,/pin status, and friends keep live panels on screen while you keep working, with command history, autocomplete, and a scrolling transcript. See below. - Remote control from your phone —
/qrpairs the console to a scanned QR: watch the live transcript and tunnels, or type commands back, from anywhere. - Real TLS — Let's Encrypt via CertMagic, not a self-signed cert with a browser warning.
- Background tunnels (
-d) that outlive your terminal, reserved subdomains, custom domains, and a live request inspector. - Signed, verifiable releases — every download is checksummed and the checksum file itself is cosign-signed in CI (see Security below).
- Fully open source (Apache-2.0) — read every line, self-host the whole edge + control plane instead of trusting a black box.
The console
Bare trqsh (or trqsh http 3000) opens an interactive, slash-command
console — type / to browse everything it can do, pin live panels above the
prompt, and keep an eye on traffic without leaving the terminal:
Commands
| Command | Does |
|---|---|
/http <port> |
Expose a local HTTP port |
/tcp <port> / /udp <port> |
Expose a local TCP/UDP port |
/start |
Start every tunnel from your config file at once |
/ls |
List running tunnels |
/open <id> |
Open a tunnel's public URL in your browser |
/qr [id|stop] |
Pair this console to your phone (or show a tunnel's QR) |
/copy [id] |
Copy a tunnel URL to the clipboard |
/requests |
Show recently captured requests |
/pin <traffic|tunnels|status> |
Keep a live panel on screen |
/stop <id|all> / /down |
Stop a tunnel, or the whole daemon |
/subdomains, /domains |
Reserve subdomains, manage custom domains |
/whoami, /login, /logout |
Account, plan, usage; sign in via browser |
/update, /version |
Self-update in place; show version |
Run /help inside the console for the full, current list.
Security
Every release archive ships with a checksums.txt that this package verifies
before it ever execs the binary. The checksum file itself is keyless-signed
with cosign via GitHub Actions' OIDC
token — no key to leak, no key to trust blindly:
cosign verify-blob \
--bundle checksums.txt.sigstore.json \
--certificate-identity-regexp 'https://github.com/uzcreator/trqsh/.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
checksums.txt
How it works
The console script trqsh calls trqsh.ensure_binary(), which detects your OS
(darwin/linux/windows) and CPU (amd64/arm64), downloads
trqsh_<version>_<os>_<arch>.<ext> from
https://github.com/uzcreator/trqshcli/releases, verifies its SHA-256 against
checksums.txt, caches the binary under ~/.cache/trqsh/<version>/, and execs
it. Pure standard library — no runtime dependencies.
Troubleshooting: "'trqsh' is not recognized" on Windows
pip install trqsh without admin rights (the common case) installs the
trqsh.exe launcher into a per-user Scripts folder that isn't always on
PATH. Every trqsh invocation checks for this and fixes it automatically —
but pip has no post-install hook, so the very first invocation can't (if
PATH is broken, that first trqsh can't run at all to fix it). Run it once
via the Python launcher, which is always on PATH:
python -m trqsh version
# then open a new terminal — bare `trqsh` now works
Environment overrides
| Variable | Purpose |
|---|---|
TRQSH_VERSION |
Pin a specific release (defaults to the package version). |
TRQSH_REPO |
Alternate owner/repo for the release download. |
TRQSH_DOWNLOAD_BASE |
Full base URL of a mirror serving the release assets (for air-gapped/internal mirrors). |
TRQSH_SKIP_CHECKSUM=1 |
Skip SHA-256 verification (not recommended). |
Uninstall
trqsh uninstall # remove local data (config, key, cache) + stop tunnels
pip uninstall trqsh # then remove the package itself
Run trqsh uninstall first: pip uninstall drops the package but leaves your saved
key, control token, logs, and the cached binary under ~/.cache/trqsh/ behind —
trqsh uninstall clears those and stops any background daemon. Add -y to skip the
confirmation.
Links
Website · Source · CLI releases · Issues
Author
trqsh is created and maintained by Otabek Hamroqulov — GitHub @Hamroqulovv. Licensed Apache-2.0.
Release files for trqsh 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| trqsh-0.2.1.tar.gz | 8.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| trqsh-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.9 kB
Release files / trqsh-0.2.1.tar.gz
| Download URL | trqsh-0.2.1.tar.gz |
|---|---|
| Size | 8.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b34a75a47875ee62d4cb45fd3ddfa00c582c058735817ff590d74f9d20e8de68
|
|
BLAKE2b-256 checksum How to use checksums |
d2c23b8ec7172418eef2dc2f3e2dd41e7a85f241bde9a17728e016cf42972c92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / trqsh-0.2.1-py3-none-any.whl
| Download URL | trqsh-0.2.1-py3-none-any.whl |
|---|---|
| Size | 9.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
802469b9191fa11ab534b99fec73d4eab80869b59730450a6033d99d9349f5f2
|
|
BLAKE2b-256 checksum How to use checksums |
47b287442088f6b5ce90aae33904d7f5123a860633c81499d1d556cbe8038435
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|