Stream audio from your Mac to iPhone, Raspberry Pi, and browsers in real time over the network. Follow this page and you'll be up and running in 5 minutes.
Soluna.app handles TX + RX + WAN P2P in one app. System audio, mic streaming, multi-speaker sync.
TX + RX + WANReceive with the Soluna Receiver app. Auto-discovery via Bonjour, individual volume and delay controls.
RX ReceiveJust run soluna-rx. High-quality playback with any ALSA-compatible DAC.
Listen instantly from the "Browser" tab in the dashboard. No installation required.
RX ReceiveThe .pkg installer sets up Soluna.app + virtual audio device + background service all at once.
macOS 13 Ventura or later • Apple Silicon + Intel supported
Download Soluna-mac.pkg using the button above, then double-click to launch the installer.
Go to System Settings → Sound → Output and select "Soluna".
sudo killall coreaudiod.Open /Applications/Soluna.app and turn on Audio TX → streaming starts!
The solunad background service is auto-configured by the installer. Check status with solctl status.
For developers: To build from source, see the GitHub README.
Open apps/ios/SolunaReceiver.xcodeproj in Xcode and build, or distribute via TestFlight.
If connected to the same Wi-Fi as your Mac, it auto-discovers on launch.
When the Mac appears in the "Speakers" list, you're good to go.
Tap the "+" button and enter your Mac's IP address (e.g., 192.168.1.10).
Find your Mac's IP at System Settings → Wi-Fi → Details → TCP/IP.
Latency is automatically measured right after connection, syncing Mac speaker and iPhone audio precisely.
If you notice drift, use the "Global Delay" slider for manual adjustment.
Run on your RPi / Linux machine. Handles everything from build to service registration.
curl -fsSL https://solun.art/install-rx.sh | sudo bash
Automatically installs dependencies, builds, and registers the systemd service.
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -- soluna-rx
sudo cp build/soluna-rx /usr/local/bin/
# ALSA default output
soluna-rx --output alsa
# Pipe output to aplay
soluna-rx --output pipe | aplay -f S16_LE -r 48000 -c 2
# Check service status
systemctl status soluna-rx
Select Browser from the bottom navigation in the Dashboard.
Press the ▶ button to start listening instantly. No installation required.
Open from any browser on the same network using your Mac's IP address.
http://<Mac's IP address>:8400
# After clicking "Allow" in System Settings → Privacy & Security
sudo killall coreaudiod
# Check shared memory
ls -la /private/var/db/soluna/
# Re-download and install the .pkg
launchctl print gui/$UID/io.soluna.daemon
# If LaunchAgent is missing, reinstall the .pkg
sudo setcap cap_sys_nice=ep /usr/local/bin/soluna-rx
echo 'kernel.sched_rt_runtime_us=-1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
launchctl print gui/$UID/io.soluna.daemon # Check status
launchctl stop gui/$UID/io.soluna.daemon # Stop
launchctl start gui/$UID/io.soluna.daemon # Start
launchctl bootout gui/$UID/io.soluna.daemon # Uninstall
tail -f /tmp/solunad.log # View logs
Connect to ws://localhost:8400/ws and send JSON commands.
# Set monitor volume to 80%
{"id":1,"command":"monitor.set_volume","volume":0.8}
# Set buffer to 40ms
{"id":2,"command":"monitor.set_buffer","ms":40}
# Set delay to 50ms
{"id":3,"command":"monitor.set_delay","ms":50}
# Get receiver statistics
{"id":4,"command":"rx.stats"}
# Start browser audio
{"id":5,"command":"audio.subscribe"}
# Ping / RTT measurement
{"id":6,"command":"time.ping"}
Soluna — MIT License · GitHub · ← Dashboard