test_m2_voice passed against raw BSD sockets, but vc_client::stream_start/stop, UDP binding, and capture/recv were still VC_ERR_NOT_IMPLEMENTED stubs -- meaning vccli and any GUI client still couldn't actually talk. Implements the real client-side UDP-binding handshake, media key derivation, capture->encode->seal-> send and recv->open->decode->playback paths, plus server-side StreamInfo broadcast so peers learn about each other's streams via sync_remote_streams(). Adds test_voice_client_abi (two real vc_client instances, not raw sockets) and vccli --voice/--mute/--text flags, manually verified live between two instances. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
VoiceCat
Self-hosted, native voice & text chat in the spirit of classic TeamSpeak / Mumble —
channel-based voice, channel + private text, one server you run yourself. Plain TCP
(control) and UDP (media), no WebRTC. Encrypted by default. A shared C++ core
(libvoicecat) drives native clients (Swift on macOS/iOS, C# on Windows) and the server.
Status: pre-implementation. The design is complete in
docs/. The code is an M0 skeleton — it compiles and links, but every subsystem is a stub. SeeAGENTS.mdto start building, anddocs/roadmap.mdfor the milestones.
Read the design first
The docs/ folder is the source of truth. Start at docs/README.md,
then architecture → protocol → voice → security → tech-stack → deployment →
roadmap.
Build the skeleton (no dependencies needed yet)
The M0 skeleton builds with just a C++20 compiler + CMake + Ninja — no vcpkg, no third-party libraries, because every subsystem is currently a stub.
cmake --preset dev
cmake --build --preset dev
ctest --preset dev # runs the smoke test (links the core, calls the C ABI)
Artifacts land in build/dev/bin/ (voicecat-server, vccli).
When you start implementing a subsystem that needs real libraries, build with vcpkg deps:
# one-time: git clone https://github.com/microsoft/vcpkg && ./vcpkg/bootstrap-vcpkg.sh
export VCPKG_ROOT=/path/to/vcpkg # set VCPKG_ROOT (works on Linux/macOS/Windows)
cmake --preset server-release # auto-installs deps from vcpkg.json
cmake --build --preset server-release
Layout
docs/ design spec (read this)
core/ libvoicecat — the shared C++ core
include/ voicecat.h (the C ABI all clients call)
proto/ voicecat.proto (control-plane wire format, source of truth)
src/ net/ crypto/ codec/ protocol/ session/ audio/ (stubs today)
server/ voicecat-server (headless; links the core)
tools/vccli/ headless test client — drives the protocol from M1 on
clients/ apple/ (Swift, M4) windows/ (C#, M4) — placeholders for now
tests/ CTest targets
License
Permissive-only dependencies (no GPL/LGPL) so the project can be redistributed freely,
including closed-source. Project license: TBD (see docs/tech-stack.md §5).