MiroTalk P2P is a self-hosted, open-source WebRTC video conferencing application that enables real-time peer-to-peer video calls, audio calls, screen sharing, chat, whiteboard collaboration, file sharing, and recording. The architecture consists of a Node.js/Express server with Socket.IO for signaling and a REST API (v1) for programmatic meeting management, token generation, and statistics. The client is a single-page application with modular JavaScript files handling UI components, media processing, accessibility, and integrations. Key features include end-to-end encrypted media (SRTP/DTLS), noise suppression via RNNoise AudioWorklet, live captions (Web Speech API and server-side Whisper transcription), ChatGPT integration, OIDC authentication, JWT-based API security, and an embeddable support widget. The system is designed for privacy: no persistent storage of signaling data, chat, or media; recordings stay in the browser as Blobs. Deployment options include Docker, Kubernetes, and bare-metal, with support for CoTURN TURN servers, ngrok tunneling, and email alerts via Nodemailer. The codebase is well-structured with separate modules for security (XSS sanitization, input validation, host protection), logging, and integration helpers, though the main server.js is monolithic (~2000 lines) and the client-side CSS is large (~5000 lines combined).
This is an Android demo application for real-time audio/video talkback (intercom) communication. It implements a full pipeline: audio/video capture, echo cancellation (multiple AEC algorithms: Speex, WebRTC AEC/AECM/AEC3, custom triple AEC), noise suppression (Speex, WebRTC NS/NSX, RNNoise), encoding (Speex, Opus, OpenH264, system H.264), network transport (TCP, UDP, AUDP), jitter buffering (adaptive), decoding, and playback. The architecture consists of a foreground service, a main activity with extensive settings UI, and background media processing threads (MediaPocsThrd, ClntMediaPocsThrd, SrvrThrd) that use user-defined callbacks for extensibility. The app is heavily configurable with presets for effect levels and AEC tendencies. It relies on pre-compiled native libraries (JNI) for signal processing and codecs. The codebase is tightly coupled to the demo app and uses deprecated Android Camera API, but demonstrates non-obvious skill in integrating multiple audio processing libraries and adaptive jitter buffer algorithms.