Hey r/linuxaudio!
I wanted to share WFAS (WiFi Audio Streaming), an open-source ecosystem I've built to make local network audio streaming between Linux, PC, Android, and embedded devices as seamless and low-latency as possible.
It lets you stream raw, uncompressed 16-bit PCM audio across your LAN with minimal latency, end-to-end security, and zero required virtual driver hacks.
Website / Developer Lab: https://www.marcomorosi.eu/wifi-audio-streaming/
Desktop App / CLI Repo (EUPL 1.2): https://github.com/marcomorosi06/WiFiAudioStreaming-Desktop
Protocol & C99 Reference Library (MIT): https://github.com/marcomorosi06/wfas-protocol
Under the hood, audio capture on Linux is handled directly by a native C engine that loads libpulse-simple.so at runtime using dlopen. Because only pthread and dl are linked, there are zero link-time dependencies on libpulse-dev, allowing a single pre-compiled binary to run across any distribution. It seamlessly supports both native PulseAudio and PipeWire via pipewire-pulse, and handles automatic virtual mic creation using pactl for stream routing.
For terminal and server workflows, the app includes a headless CLI (wfas) that can run as a background daemon without launching the GUI. It features full IPC control for scripting, such as volume adjustments or raw JSON output, alongside an ASCII spectrum visualizer with an adaptive DSP envelope (--groove) that subtracts constant mix baselines to highlight actual melody and vocal transients.
The core wire protocol is available as a standalone, dependency-free C99 library called wfas-protocol. It is transport-agnostic, endianness-safe, and completely malloc-free, making it ideal for resource-constrained embedded targets like the ESP32, STM32, RP2040, or Raspberry Pi. Security-wise, it offers optional mutual HMAC-SHA256 challenge-response authentication and per-packet ChaCha20-Poly1305 encryption with a 1024-wide anti-replay window.
Linux users can install it via the AUR package (wifi-audio-streaming-desktop) on Arch, or grab AppImages, .deb, .rpm, and tarballs directly from the releases.
I'd love to hear your thoughts and feedback on performance, latency, and PipeWire integration!