Konvoez is a self-hosted, single-server voice and text communication platform (Discord-like alternative where the deployed application instance acts as the server itself). Designed for friends to hang out, not for production use.
All versions: desktop releases. Builds are unsigned (click "More info → Run anyway" on Windows); the AppImage requires chmod +x. See the Desktop Guide.
- Single-Server Model: An application instance is a complete standalone server with custom text and voice rooms.
- Encrypted Messages: Text messages are encrypted server-side at rest using AES-256-GCM.
- Real-Time Voice Channels: Low-latency voice communication powered by WebRTC and Mediasoup SFU.
- Three-Tier User Roles: Built-in permission hierarchy with
OWNER,ADMIN, andUSER(MEMBER) roles. - Modern Monorepo: Built with Angular (v19+, Signals) on the frontend, NestJS on the backend, and shared TypeScript schemas.
-
Copy
.env.exampleto.envand set required variables:cp .env.example .env nano .env
-
Start the server:
Run via docker-compose.yml:
docker compose up -dBuild and run via docker-compose.build.yml:
docker compose -f docker-compose.build.yml up -d --buildImportant
Initial OWNER Setup: On a fresh install, a one-time token (valid for 5 minutes) is printed to the container logs (docker compose logs). It is required to register the initial OWNER account.
Important
Voice Calls & HTTPS:
- Ports & IP: Forward UDP
40000-40100and setMEDIASOUP_ANNOUNCED_IPin.envto your public IP/hostname. - HTTPS Required: Browsers strictly require HTTPS for audio devices to work.
- See the Networking & Deployment Guide for reverse proxy (Caddy/Nginx) configurations.
- Desktop Client
- Networking & Deployment Guide
- Contributing Guidelines
- Security Policy
- Password Recovery
- User Management
- Rooms
- Message attachments
- Frontend voice
- Frontend streaming
- Simulcast encode layers on producers;
setPreferredLayersper consumer (tile size / theatre focus) - Bitrate caps tied to capture height; optional
maxIncomingBitrateon recv transport - Pause or reduce offscreen / hidden video consumers (adaptive downlink; align with local preview pause / theatre patterns)
- Optional viewer-side quality picker (layer selection when simulcast exists)
- Optional stream viewer count (needs signaling; not in phase 3)
- Codec auto-pick for screen (e.g. VP9/AV1) when all consumers
canConsume— still no server transcode - Mid-share height/FPS change via
replaceTrack(stream quality dialog on tile / controls bar)
- Swipe to reply
- Add notification click navigation
- Add common user dialog with short info direct chat/call buttons
- Add emojis or/and customizable smile/sticker packs
- Add connection state indication
- Add mute indication for other peers
- Add customizable roles (functions access) and groups (rooms access)
- Add invite emails (if email set), 2FA via email codes