Live captions across languages, with no server. Everyone speaks their own language, and everyone reads everyone else in theirs. Speech recognition and translation run on each person's own device; only caption text crosses the network, end-to-end encrypted.

Whisper (with voice activity detection) turns speech into text on the speaker's device. Audio never leaves it.
Bergamot translates into your language on your device, through English when a pair has no direct model.
The room code becomes a Hyperswarm topic. Peers find each other on the DHT, hole-punch NATs and talk over encrypted streams.
The iPhone/Android app, the web UI and the CLI run the same room code, so they all share rooms.




# the web UI, one per person (Node.js 22+) git clone https://github.com/lopeselio/qvac-babel-room cd qvac-babel-room && npm install && npm run build:ui npm start # http://127.0.0.1:4400 node bin/babel-room.js ui --port 4401 # a second person on the same computer # or the CLI, from the same clone node bin/babel-room.js new node bin/babel-room.js join <code> --lang es --mic
The phone app is in mobile/: the room runs in a Bare worklet, the way Holepunch's own apps run Hyperswarm.