End-to-end encrypted messaging in the browser. No install, no account trail — open and talk.
Open the app · Download · Wiki · Discord · GitHub
lqxp/client is the official QxChat frontend: a Vue 3 single-page app where all encryption happens in-browser via Web Crypto and audited PQ libraries (@noble). It runs hosted at qxch.at/app, and it is also the UI embedded in the desktop & mobile apps (Tauri) built from this exact code.
Same code, every screen: browser tab today, native window tomorrow, keys intact.
- ★ Encrypted rooms & DMs — AES-GCM client-side, token invites, roles, threads, reactions.
- ★ Voice calls — WebRTC P2P audio, TURN fallback, per-user volume, noise gate.
- ★ Device sync — QxCloudSync pairs phone, desktop and web with a 12-word secret.
- ★ Tor view — live circuit map, relay directory, per-hop geo (desktop).
- ★ Privacy modes — client lock, RAM-only OPSEC, decoy vault, streamer mode.
- ★ Expression — polls, whiteboard, spoiler particles, custom themes, EN/FR/RU/ES.
Prerequisites: Bun 1.3+.
git clone https://github.com/lqxp/client
cd client
bun install
bun run dev # Vite dev server
bun run build # production build + runtime config injection
bun run typecheck # vue-tscPoint it at your own server with QXP_SERVER_ORIGIN, QXP_API_BASE_URL, QXP_WS_URL (see lqxp/lqxp for self-hosting). Packaged builds (Tauri, Nix, stores) live in lqxp/app — this repo stays pure web.
qxch.at/app | download | wiki | discord.wf/qxchat | github.com/lqxp