Halla Desktop
The full client for Windows and Linux, in C++17 with Qt 6. Icons drawn at runtime, instant light/dark theme, and every administration tool a community needs.
Halla is a complete voice communication ecosystem — a desktop client for Windows and Linux, a native Android app, and a self-hostable server. Encrypted Opus audio, channels with granular permissions, whisper, 4K screen sharing, and an open, documented protocol. No telemetry, no middlemen, no cost.

Admin
speaking now
Live · 1080p60
WebRTC P2P
Ed25519 · verified UID
ChaCha20-Poly1305
Official server online — try it now
Permanent and temporary channels, open to the public, cross-platform access.
Desktop, Mobile and Server speak the same language: the open v6 protocol. Join the same server from your PC or phone, share your screen from either one, and host everything on your own infrastructure.
The full client for Windows and Linux, in C++17 with Qt 6. Icons drawn at runtime, instant light/dark theme, and every administration tool a community needs.
Native Android app (Kotlin + C++/JNI core) — no Qt, no wrapper. Voice with echo cancellation and noise suppression, silent reconnection when switching networks, and a foreground service that survives a locked screen.
Halla · Game room
3 in channel · connected
Floating PTT · over other apps
Self-hostable server in C++/Qt: TLS on the control channel, pure relay voice — it never decrypts audio. SQLite or MySQL.
The specification is open for anyone to implement compatible clients, bots and tools. The security layer — TLS, Ed25519 and AEAD voice — is mandatory in every version.
TCP + TLS 1.2+
control · JSON
UDP · Opus AEAD
voice · 20 ms
DTLS-SRTP P2P
screen · WebRTC
TLS
ServerQuery
Every feature exists to give you total control: over the audio, the permissions and the infrastructure. No paid features, no ads, no mandatory accounts.
Opus codec with 20 ms frames, echo cancellation, noise removal, typing attenuation and automatic ducking. Push-to-talk (hotkey or mouse button), voice detection or continuous transmission.
48 kHz · opus · 20 ms
WebRTC P2P with DTLS-SRTP and hardware H.264 with VP8 fallback. PC audio captured without echo from the call's voices.
Speak to a single channel, a channel and its subchannels, or a fixed list of users — with its own visual indicator, distinct from the normal speaking indicator.
Tree with subchannels, on-demand temporary rooms, password-protected, moderated and linked channels. Groups with granular permissions and talk power.
Tabs per server and channel, BBCode with bold, italics, colors and links, emojis, offline messages and file transfer.
.halla-addon packs with a public C ABI shared between Desktop and Mobile: PCM audio hooks, radio effect and v6 data transport.
Global badges tied to your UID, distributed through a signed Ed25519 registry and kept in cache — they even work offline.
Record calls locally to WAV, hear announcements via text-to-speech, and get sound alerts for connections and permissions.
Poke, complaints, ban list, avatars, BBCode descriptions and multiple local identities with audio profiles.
Publicly documented v6 specification for implementing clients, bots and tools. TCP/TLS control with JSON and encrypted UDP voice.
The interface follows the tradition of the great voice clients: information-dense, easy to master, with light and dark themes switchable in real time — no restart needed.

The main window in the dark theme: channels, info and chat in one place.
Halla's security architecture is mandatory for every connection, regardless of protocol version. It is not a premium option — it is the default.
how audio travels
micOpus 20 msChaCha20-Poly1305
serverforwards encrypted without being able to decrypt
youvalidates AEAD tagdecodesspeaker
Every client generates an Ed25519 key pair. Login requires signing a nonce challenge — and the UID is derived from the public key, never from what the client claims to be. Bans, groups and badges are tied to that identity.
Opus audio and transmissions encrypted with ChaCha20-Poly1305 (AEAD) using a 32-byte group key generated by the clients themselves. The server is a pure relay: it only forwards e2e_key envelopes it cannot open.
Whenever a channel's membership changes — someone joins, leaves or is moved — the group key is rotated and redistributed by the clients, sealed with ephemeral X25519. Forward secrecy built into the protocol, with no effort from the user.
The control channel runs over TLS 1.2+. On the first connection the certificate fingerprint is pinned; if it changes later, the client warns about a possible man-in-the-middle — SSH's trust model.
The private key is never kept in plain text: the Desktop uses Credential Manager, Keychain or Secret Service through QtKeychain; Mobile encrypts it with an AES key from the Android Keystore, with a portable password-protected backup.
Before installing any update, the client checks the SHA-256 checksum and only downloads from a fixed domain. On Mobile, the signed APK goes through apksigner verify before being published.
The full specification is public: anyone can implement compatible clients, bots and tools. The security layer — TLS, Ed25519 and AEAD voice — is mandatory in all versions.
Authentication, channels, chat, states, moderation and WebRTC signaling — JSON messages, one per line, up to 2 MiB.
Authentication, channels, chat, states, moderation and WebRTC signaling — JSON messages, one per line, up to 2 MiB.
20 ms packets encrypted with ChaCha20-Poly1305 and a per-channel key. The server only relays them.
20 ms packets encrypted with ChaCha20-Poly1305 and a per-channel key. The server only relays them.
Screen-share video and audio travel directly between clients; offer/answer and ICE go through the TLS control channel.
Screen-share video and audio travel directly between clients; offer/answer and ICE go through the TLS control channel.
Sliced, encrypted JPEG frames as an alternative that needs no native WebRTC SDK.
Sliced, encrypted JPEG frames as an alternative that needs no native WebRTC SDK.
Remote server administration, disabled by default and bound to localhost when enabled.
Remote server administration, disabled by default and bound to localhost when enabled.
hello
{ proto, uid, nick, idPub }
identity_challenge
{ nonce }
identity_proof
{ sig }
welcome
UID = hash(idPub) ✓
The server ignores the UID sent by the client and recalculates it from the public key. Identity spoofing becomes impractical.
Read the full specificationThe full history since protocol v6 — the day end-to-end encryption became real. Pick a project and follow along: no hidden launches, no silent changes.
Real voice DSP, built into the binary
The official installer now ships a full voice DSP: RNNoise neural noise suppression, AUMDF acoustic echo cancellation and an 80 Hz high-pass filter — clean audio with no WebRTC SDK required.
In the distributed build, the noise-suppression and echo-cancellation checkboxes were previously no-ops (passthrough). Both now process every captured frame.
The speech cue (beep when your voice starts) now respects a muted microphone in both continuous and voice-activity modes.
CI now gates every release on measured echo cancellation (ERLE ≥ 12 dB) and noise suppression (≥ 10 dB) over synthetic signals.
Whisper cue in voice-activity mode
The whisper sound cue now plays the instant the whisper key or mouse button is pressed while in voice-activity mode — previously it only played in push-to-talk.
Crosstalk guard
The speaking indicator no longer lights up on two users at once: your microphone no longer retransmits the other party's voice, and the ring shows who is actually talking.
Clean voice
End of the crackling on voice activity: the transmission gate now uses audio hysteresis with attack and release ramps, so weak consonants between vowels no longer cut the stream.
Microphone boost up to +30 dB for quiet microphones, plus per-user volume from −60 to +30 dB, persisted across restarts.
Sent E2EE whispers and private messages are now readable to the sender: your own messages echo back decrypted with the recipient's key.
E2EE keys are now trusted automatically on first use (TOFU, like SSH) — the manual verification step is gone; identity changes still trigger an alert.
Real-time voice DSP and lighter calls
AEC3 echo cancellation and neural (RNN) noise suppression through the WebRTC Audio Processing Module, replacing the previous no-op passthrough.
Speech cue: a subtle beep confirms your voice is being detected, independent of the transmission state.
Calls stop crackling and the app gets lighter on CPU and memory while someone is transmitting.
Screen sharing defaults to 1080p (2K and 4K remain available) with the H.264 encoder on by default.
Instant PTT and whisper
Push-to-talk key and whisper list changes now apply immediately — no more reconnecting or reopening the options dialog for them to take effect.
Whisper reply hotkey: answer the last person who whispered to you with a single key.
Protocol v6: real end-to-end encryption
Protocol v6: group keys are generated and distributed by the clients themselves — ephemeral X25519 + HKDF-SHA256 + AES-256-GCM. The server became an opaque relay: it can no longer decrypt voice, private chat, pokes or offline messages.
Every session publishes an X25519 key signed by your Ed25519 identity and validated during login — a malicious server can no longer substitute keys.
Private chat, pokes and offline messages are now pairwise-encrypted end-to-end between sender and recipient.
The crypto core is implemented through RFC 8410 without NIDs and is verified in CI against the official RFC 7748 (X25519) and NIST AES-256-GCM test vectors.
Showing releases since the protocol v6 rollout · September 2026
Full release history on GitHubFree for personal, educational and community use: use, study, modify and redistribute without asking permission. Selling it or embedding it in a commercial product requires written authorization from the maintainers.
Windows · Linux · C++17 + Qt 6
Download the NSIS installer for Windows — the button always points to the latest published release. On Linux, build from source with CMake. The native WebRTC screen-sharing mode is optional and uses the prebuilt Halla WebRTC Builds SDK.
Build from source
# Linux (installs dependencies if missing)
./build-linux.sh
./build/Halla
# Windows / manual — any platform
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build buildInstallers and binaries live in the repository's Releases tab.
Permanent and temporary channels to test low-latency audio, screen sharing and the full ecosystem — from both Desktop and Mobile. Found a bug or have a suggestion? The feedback channel is official and direct.