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.
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.0
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.0.tar.gz | 6.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| trqsh-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.8 kB
Release files / trqsh-0.2.0.tar.gz
| Download URL | trqsh-0.2.0.tar.gz |
|---|---|
| Size | 6.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ba40e19e4cf57bb570d9df013b53e9eb6c82199d81b221fa64563f93d81ded51
|
|
BLAKE2b-256 checksum How to use checksums |
a69a0824e4e6494b67dcdb674524eaea51f8964860d3cac067f7d5a72ac71e0d
|
| 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.0-py3-none-any.whl
| Download URL | trqsh-0.2.0-py3-none-any.whl |
|---|---|
| Size | 7.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
024333a45394b4a0b0e9d7584e8127361eb9fddb1a00bd31a23c5c3611638352
|
|
BLAKE2b-256 checksum How to use checksums |
5f29dacda869a39c355a171c35e2b92154ae043cb41a2905489a609dc7ac3a78
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|