Desktop client
Electron 43 wraps a React 19 renderer. A narrow preload bridge keeps the renderer away from Node, while Web Crypto encrypts content before it leaves the device.
Electron · React · TypeScript · Web Crypto
Technical architecture
Concord Voice is a desktop-first communications system designed so that messages and media are encrypted on the client, then routed by services that do not need to see their plaintext.
System at a glance
Desktop client
├── HTTP + WebSocket ──> Control plane ──> PostgreSQL · Redis · object storage
└── Socket.IO + WebRTC ─> Media plane ────> Redis
│
NATSElectron 43 wraps a React 19 renderer. A narrow preload bridge keeps the renderer away from Node, while Web Crypto encrypts content before it leaves the device.
Electron · React · TypeScript · Web Crypto
Go and Gin own authentication, permissions, community state, and the WebSocket hub. It persists application state and relays ciphertext; it does not need message plaintext to do its job.
Go · Gin · PostgreSQL · Redis · NATS
Node.js and mediasoup negotiate and route live media. RoomManager owns the transport lifecycle, with one router per room and encrypted frames kept opaque to the SFU.
Node.js · mediasoup · Socket.IO · WebRTC
Data flow
Each view keeps the implementation detail visible without turning this page into the full architecture reference.
Signal rail
Authentication establishes identity before the client asks for access to real-time services.
Boundary: The renderer does not receive broad operating-system access, and the access token is not written to disk.
Signal rail
Message encryption happens before the WebSocket envelope is sent; the server validates and stores the encrypted result.
Boundary: The control plane has the routing and authorization context it needs, but not the plaintext it would need to read a conversation.
Signal rail
Signaling and media routing are separate from the client-side transform that encrypts each frame.
Boundary: DTLS-SRTP protects transport to the SFU, while application-layer E2EE keeps frame content and frame keys out of the SFU.
Signal rail
Channels and DMs keep parallel epoch ledgers so removed members cannot keep using a superseded key.
Boundary: The service can store and distribute wrapped key material and enforce epochs, but private keys are generated and unwrapped only on client devices.
Privacy boundaries
There is no server-side plaintext message store to switch off later. The service handles encrypted content, while recipients decrypt on their own devices.
Electron isolates the renderer from privileged APIs, and the control and media planes each have a focused job instead of sharing a single all-powerful process.
Optional operational metrics are signed, fixed scalar snapshots. They exclude user identifiers and user-level data, room and server names, addresses, hostnames, and free-form Docker metadata.
Deployment
The hosted service uses the desktop client with Cloudflare-delivered renderer updates and a bundled app:// fallback. Its service planes include PostgreSQL, Redis, NATS, object storage, and TURN where needed.
Concord Voice source is public; the supported self-hosted installer and deployment guide are not publicly released yet. Commercial self-hosting requires a Concord Voice commercial license.
What is next
Read the implementation
The architecture document is maintained beside the implementation and names the responsible paths and components.