Skip to main content

BetweenUs

BetweenUs is a Discord-like communication platform with secure remote desktop access. A single account gets chat, voice/video calls, screen sharing, and permissioned remote control of another machine — across a desktop client today, with web and Android planned in the same backend.

BetweenUs desktop client

:::tip Download BetweenUs Production binaries for Windows (Electron NSIS installer), Linux (AppImage) and Android (Native APK) are published on GitHub Releases:

What's in these docs​

  • Architecture — the microservices, the peer-to-peer media design, why there is no media server, and the Android client.
  • Multi-Theme System — 16 curated themes, custom accent tints, dynamic OS synchronization, and dedicated appearance settings across desktop, web, and Android.
  • Listen Together — synchronized YouTube playback inside calls with zero uplink, in-app YouTube browsing, and automatic speech ducking.
  • Play Together — six board games inside a call, refereed by call-service, where a move is a number rather than a shared screen — and carrom, where a move is a shot and the physics runs on both ends.
  • System Design — auth, RBAC, events, ingress through Cloudflare Tunnel.
  • Database — the Prisma schema, model by model, with an ERD.
  • Services — one page per microservice: what it owns, its REST/WebSocket surface, what it never does.
  • Deployment — Docker Compose, the release pipeline, CI/CD.
  • Security and E2EE — trust boundaries, encryption design, and the gaps that are open on purpose.
  • Running Locally — clone to running chat in a few commands.

Core capabilities​

  • Authentication & Accounts: JWT + refresh-token rotation with reuse detection, Google & GitHub OAuth sign-in.
  • Multi-Theme Engine: 16 handcrafted dark, light, developer, and vibrant themes with 8 customizable accent tints, OS auto-sync, and dedicated settings pages on all platforms.
  • Servers & Channels: Public and private channels, custom roles with colors, per-member overrides, invite links with limits.
  • End-to-End Encrypted Chat: Messages, edits, reactions, replies, pins, rich markdown parsing (bulleted/numbered lists, inline marks, code blocks), and encrypted attachments up to 100 MB.
  • Voice, Video & Screen Share: Peer-to-peer WebRTC mesh, camera, screen sharing with interactive remote control handover and multi-cursor overlays.
  • Listen Together: Synchronized YouTube audio in voice calls, browse youtube.com in-app, click-to-play with zero uplink, and automatic speech ducking.
  • Play Together: Tic-tac-toe, Connect Four, Reversi, Dots and Boxes, Ludo and Carrom - the last a real physics simulation both ends replay - inside a voice call — one board everybody sees, two chairs anybody can take, refereed by the gateway so nothing is played on trust.
  • Remote Desktop: Screen viewing, remote control, clipboard sync, multi-monitor selection, granular permission grants with expiry, and audit trail.
  • Presence & Notifications: Status selection, typing indicators, desktop tray, quiet hours, push suppression across devices, and FCM push notifications.

Technology at a glance​

LayerTechnology
Desktop clientElectron, React, TypeScript, Tailwind CSS, Zustand
Web clientSame React UI, served by Vite, mounted at the gateway root
Android clientKotlin, Jetpack Compose
BackendNode.js, TypeScript, NestJS microservices
Realtime mediaWebRTC, peer-to-peer, no SFU
SignallingWebSocket, relayed by NestJS gateways
DatabasePostgreSQL via Prisma
Realtime/cache stateRedis (presence, pub/sub, rate limiting)
Object storageS3-compatible (or local disk in dev)
IngressCloudflare Tunnel → Nginx → services
ContainersDocker Compose (dev + prod), one Dockerfile with multiple targets

Everything here is generated and maintained against the actual source in github.com/aiyu-ayaan/BetweenUs — where a page and the code disagree, the code is right and this page is stale; open an issue.