2.0 KiB
2.0 KiB
Technology stack
Managed runtime
VoiceCat targets .NET 10. Shared libraries use plain net10.0; WinForms, AppKit, and UIKit are
leaf platform projects.
| Area | Technology | Notes |
|---|---|---|
| Control schema | Protocol Buffers / Google.Protobuf | proto/voicecat.proto is authoritative |
| TLS 1.3/exporters | BouncyCastle.Cryptography | Managed TLS is required for exporter-derived media keys |
| Media AEAD | System.Security.Cryptography ChaCha20Poly1305 | Managed fallback is behavior-tested |
| Passwords | Konscious Argon2id | Bounded parameters, PHC strings |
| Persistence | Microsoft.Data.Sqlite | Server-local SQLite with explicit migrations |
| Tests | xUnit | Unit, socket integration, allocation, CLI, and production-package checks |
NuGet packages and their lock files are committed. scripts/check-licenses.ps1 enforces the
permissive-license policy.
Native media
native/media builds one narrow library named voicecat_media:
- Opus 1.5.2, checksum-pinned and built with DRED/Deep PLC support.
- RNNoise, vendored under
native/rnnoiseat the repository-pinned source/model revision.
The shim contains codec and denoiser entry points only. Managed code owns networking, crypto, jitter, mixing, state, and lifecycle. CMake is retained solely for this boundary and its Apple static archives.
Platform clients
- Windows: .NET WinForms for mature UI Automation and screen-reader behavior.
- macOS: .NET AppKit for direct accessibility and Core Audio/ScreenCaptureKit control.
- iOS: .NET UIKit for direct VoiceOver and AVAudioSession lifecycle control.
- iOS broadcast upload: Swift/ReplayKit under
native/apple/broadcast; it writes PCM to the frozen App Group ring and deliberately does not host .NET or the protocol stack.
Licensing
GPL and LGPL dependencies are forbidden. Current production dependencies are permissively licensed; RNNoise code is BSD-3-Clause and its model data is CC0. Preserve license notices in published native artifacts.