No common language
“¿Viste ese gol?” meets a blank smile. Translation apps want the cloud; the cloud wants a signal.
→ solved on-device · QVACWorld Cup 2026 · built for the Tether Developers Cup
She speaks Spanish. He speaks English. The stadium Wi-Fi is on its knees and neither carries the other's currency. halfscarf joins their two phones directly — voice translated by AI that never leaves the device, over a link with no server in the middle, settling the beer bet in USDt from wallets only they hold.
“¿Viste ese gol?” meets a blank smile. Translation apps want the cloud; the cloud wants a signal.
→ solved on-device · QVAC80,000 phones on one cell tower. Anything that needs a server is already out of the match.
→ solved peer-to-peer · PearsPesos in one pocket, pounds in the other, and the beer queue takes neither.
→ solved in USDt · WDKA faithful re-run of the real app: every number below was measured on a live session, not invented. Prefer the real thing? ▶ watch the recorded live session (1:57).
“Hola amigo mío. ¡Bienvenido a la Copa del Mundo!”
Push-to-talk. Whisper transcribes, Bergamot translates, Supertonic speaks — three models, one device, zero requests leaving it. The peer hears your words in their own language.
A shared room code — typed, or scanned as a QR — becomes a DHT topic. Two devices find each other on the public swarm and speak directly over an end-to-end encrypted stream.
paired in 6–9s across the public internet · chat, payments & voice share one channel
Each fan’s wallet is generated on their device and stays there — halfscarf never sees a seed. Tips and requests ride the same P2P channel; the transfer itself is a real USDt transaction.
live testnet transfer · 0xb557ecd4…1866a1 ↗
# clone & install (Node ≥ 22.17)
$ git clone https://github.com/tang-vu/halfscarf && cd halfscarf && npm install
# fan one — Alice 🇦🇷
$ INSTANCE=Alice NATION=Argentina FLAG=🇦🇷 LANG_CODE=es PORT=3001 npm start
# fan two — Bob 🏴
$ INSTANCE=Bob NATION=England FLAG=🏴 LANG_CODE=en PORT=3002 npm start
then open localhost:3001/?room=worldcup-final and :3002/?room=worldcup-final — they pair themselves. Or show a QR on one screen and scan it with the other.