qrtx

GitHub

Scan two QR codes with your phone, get a direct encrypted pipe between two computers. P2P over iroh.

  1. 1
    First computer
    scan the QR code qrtx prints
  2. 2
    Second computer
    scan the other one
no camera? paste the link
diagnostics

no secrets in here; paste into a GitHub issue if something fails


      

how it works

The phone scans each computer, talks to each through an iroh relay over an end-to-end encrypted connection, introduces them, and they connect directly. iroh relay only sees ciphertext laptop A laptop B your phone 1 · scan laptop A; phone and A talk via the relay 2 · scan laptop B; same, encrypted to its key 3 · the phone introduces them 4 · they connect directly; the phone is done
pair · phone ↔ each computer via an iroh relay, end-to-end encrypted to the key in its QR code
Data goes directly between the two computers through an end-to-end encrypted, hole-punched connection. The relay is only a fallback; the phone and the website are not involved. iroh relay fallback only direct · end-to-end encrypted NAT hole-punched laptop A laptop B qrtx.lol phone and website: not in the data path
data · computer ↔ computer, direct and end-to-end encrypted; the phone and this site are out of the loop

usage

Run on both machines, scan both codes. Linux / macOS, x86-64 / arm64.

send a file (no install)

sender
curl -fsSL https://qrtx.lol/send | sh -s -- backup.tar
receiver
curl -fsSL https://qrtx.lol/recv | sh -s -- backup.tar

installed: qrtx send f / qrtx recv f, or pipes: tar c . | qrtx / qrtx | tar x

ssh, no open ports

server
curl -fsSL https://qrtx.lol/sshd | sh
laptop
curl -fsSL https://qrtx.lol/ssh | sh -s -- me@myserver

one session, then the server side exits. Your own ssh does auth and host-key checks; myserver is just the known_hosts name.

forward a tcp port

server
qrtx listen-tcp --host localhost:5432
laptop
qrtx connect-tcp --addr 127.0.0.1:5432

install

install
curl -fsSL https://qrtx.lol/install | sh
run once
curl -fsSL https://qrtx.lol/run | sh -s -- listen-tcp --host localhost:22

scripts fetch the binary for your platform into ~/.cache/qrtx, sha256-checked

github.com/magik6k/qrtx · MIT / Apache-2.0 · inspired by dumbpipe