Quick Start
Goal: get audio from a laptop into the mixer and hear it on a second machine in about five minutes. This assumes a wired LAN, Ubuntu 24.04 on the server, and PipeWire on the laptop.
Step 1 — Build the binaries
On the server (or any machine with Rust installed):
git clone https://github.com/shiloh-soft/broadcaster.git
cd broadcaster
cargo build --release
This produces:
target/release/shiloh-mixer
target/release/shiloh-broadcaster
target/release/shiloh-relay
target/release/shiloh-web-relay
Copy them to ~/.local/bin/ or wherever you keep user binaries:
cp target/release/shiloh-{mixer,broadcaster,relay,web-relay} ~/.local/bin/
Step 2 — Start the mixer
Create a minimal config file at ~/mixer/shiloh-mixer.toml:
jack_name = "shiloh-mixer"
broadcast_port = 5005
control_port = 19997
[[channels]]
id = "laptop"
label = "Laptop"
kind = "stereo"
main_gain = 1.0
ingest_slot = 0
[buses]
main = ["out_1", "out_2"]
monitor = ["monitor_out_1", "monitor_out_2"]
cue = ["cue_out_1", "cue_out_2"]
[ingest]
slot_count = 2
[[ingest.sender]]
name = "laptop"
channels = 2
start_slot = 0
NOTE:
jack_name,broadcast_port, andcontrol_porthave these exact defaults in the binary, but it’s clearest to state them explicitly in your first config.
Start the mixer:
shiloh-mixer ~/mixer/shiloh-mixer.toml
You should see log lines like:
INFO shiloh_mixer > jack client 'shiloh-mixer' opened (sample_rate=48000 buffer=1024 frames, status=...)
INFO shiloh_mixer > broadcast relay listening on udp://0.0.0.0:5005
Step 3 — Start the broadcaster on the laptop
On your laptop (replace 192.168.x.x with the server’s LAN IP):
shiloh-broadcaster connect 192.168.x.x:5005 --channels 2
--name defaults to the machine hostname. Since the config above uses name = "laptop", either pass --name laptop explicitly or ensure your hostname matches.
You should see:
INFO shiloh_broadcaster > PipeWire null-sink "laptop" loaded
INFO shiloh_broadcaster > accepted: session=0x... 48000 Hz 2 ch 128 frames/pkt slot=0
A new audio output named “laptop” now appears in your system’s audio settings. Route any application to it — it will be captured and sent to the mixer.
Step 4 — Start a relay on the listening machine
On any Linux machine that should play the audio (including the server itself):
shiloh-relay connect --server 192.168.x.x:5005 --name headphones
You should hear the mixer’s main output through the system’s default audio device. Use --device <substring> to pick a specific output if needed.
Step 5 — Open the browser listener (optional)
If you started shiloh-web-relay on the server (pointing at the mixer’s loopback address):
shiloh-web-relay --mixer 127.0.0.1:5005 --http 0.0.0.0:8890
Open http://192.168.x.x:8890/ in any browser. The page will prompt for a feed (main / monitor / cue) and connect via WebRTC.
NOTE: The
mixer_webPhoenix application proxies/whep/*to:8890and serves a pre-built listener page at/listen. If you havemixer_webrunning, usehttp://192.168.x.x:8889/listeninstead.
Next steps
- Configuration Reference — add more senders, tune bus gains, configure autoconnect wiring.
- Mixer TOML — full reference for every config key.
- Operations — set up systemd units so everything starts on boot.