qrtx
GitHubConnect two computers by scanning a QR code on each with your phone. They talk peer-to-peer over iroh, end-to-end encrypted.
-
1
First computerScan the QR code shown by
qrtx -
2
Second computerScan the other QR code
No camera? Paste a link instead
On each computer
Run qrtx on both machines (Linux or macOS, x86-64 or ARM). Each one shows a QR code. Scan the first with your phone's camera app, which opens this page, then scan the second here.
Send a file, nothing to install
curl -fsSL https://qrtx.lol/send | sh -s -- backup.tarcurl -fsSL https://qrtx.lol/recv | sh -s -- backup.tarThe receiver writes to backup.tar.part and renames it once complete. Once installed: qrtx send backup.tar and qrtx recv backup.tar, or plain pipes like tar c dir | qrtx and qrtx | tar x.
SSH in without opening any ports
curl -fsSL https://qrtx.lol/sshd | shcurl -fsSL https://qrtx.lol/ssh | sh -s -- me@myserverThe server side lets one SSH session in, then exits. On the laptop, your own ssh runs with qrtx as its proxy, so keys, agent forwarding and host key checks work as usual. myserver is only the name the host key is saved under. Once installed: qrtx sshd and qrtx ssh me@myserver.
Forward any TCP port
qrtx listen-tcp --host localhost:5432qrtx connect-tcp --addr 127.0.0.1:5432Get it
curl -fsSL https://qrtx.lol/install | shOr run it without installing. Arguments go after sh -s --:
curl -fsSL https://qrtx.lol/run | sh -s -- listen-tcp --host localhost:22The script downloads the right binary for your machine into ~/.cache/qrtx, checks its SHA-256, and runs it.
How it works
- Each computer starts an iroh endpoint. Its QR code holds the endpoint's public key, its relay, and a one-time secret.
- This page runs iroh in your browser. It dials each computer, checks it is talking to the key from the code, and proves it saw the code by sending the secret.
- Then it tells each computer about the other. They connect to each other directly, with NAT hole punching and a relay as fallback. The connection is end-to-end encrypted and only accepts the peer your phone introduced. Your data never goes through your phone or this website.
- This site is static files only. The ticket is in the URL fragment (
#…), which browsers never send to the server.
Open source (MIT / Apache-2.0) on GitHub. Inspired by dumbpipe.