transfqr
v0.1.3
Published
Stream a file as fountain-coded QR codes from your terminal — receiver is the transfqr phone app.
Maintainers
Readme
transfqr CLI
Stream a file as fountain-coded QR codes from your terminal. The receiver is the transfqr phone app.
$ transfqr ./photo.jpg
transfqr · 312 chunks, ~1 min of streaming. ctrl+c stops.
file photo.jpg
size 148.6 KB (deflate)
chunks 312 @ blockSize 512
fileId a1b2c3d4
frame 00027
point a phone running transfqr at this terminal.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█ ▄▄▄▄▄ █▀ ▄▀ █▀ ▄▀▄▀ ▄█ ▄ ▄▀ ▄ ▀▄ █▀▄▀▄ ▄ █ ▀ █ ▄▀ █ ▄▄▄▄▄ █
...Install
# One-liner (when releases ship):
curl -fsSL https://transfqr.com/install.sh | sh
# Or via npm:
npm i -g transfqr
# or, no install:
npx transfqr ./file.zipWhat it does
- Reads any local file.
- Compresses (DEFLATE) if the file is large enough to benefit.
- SHA-256 hashes the (padded) compressed payload.
- Slices it into K source blocks at
blockSize = 512. - Builds a Luby Transform encoder.
- Streams an infinite stream of XOR-combined symbols as ASCII QR codes (~12 frames/sec, base45-encoded so they pack denser).
- The phone app catches whichever frames it can, decodes once it has K + ε symbols, verifies the hash, decompresses, hands the file to your share sheet.
No internet, no accounts, no servers. The receiver only needs to be running transfqr on a phone (App Store / Play Store).
Limits
- 50 MB hard cap. QR-over-camera tops out around 12 frames/sec; bigger files take impractically long. Use a real network for those.
- Above 5 MB you'll see a friendly warning estimating duration before it starts.
- Both screens must stay still and visible. Background apps will pause the stream.
Privacy
The CLI runs entirely on your machine. It does not phone home, write logs, or read anything outside the file you point it at. The wire protocol is documented at https://transfqr.com/docs/protocol.
