Broadcaster CLI Reference
shiloh-broadcaster runs on a sender machine (studio laptop, guest PC, etc.). It creates a PipeWire null-sink, captures it via JACK, and streams PCM audio to shiloh-mixer over UDP.
Subcommands
| Subcommand | Purpose |
|---|---|
connect |
Stream audio to the mixer |
list-sinks |
List PipeWire sinks on this host (diagnostic) |
connect — stream audio to the mixer
shiloh-broadcaster connect <server> [OPTIONS]
Arguments and flags
| Flag | Short | Type | Default | Required | Description |
|---|---|---|---|---|---|
<server> |
— | host:port |
— | Yes | Mixer address, e.g. stg-srv001.bq.shilohbv.com:5005 |
--channels |
— | integer | — | Yes | Number of mono channels to broadcast |
--name |
— | string | hostname | No | Sender name; must match a [[ingest.sender]] entry on the mixer |
--sink-name |
— | string | sender name | No | PipeWire/PulseAudio display name for the null-sink |
--no-sink |
— | bool (flag) | false | No | Skip creating the null-sink (use when managed externally) |
--verbose / -v |
-v |
bool (flag) | false | No | Log per-second packet and drop counters |
Field notes
<server> (positional, required)
The mixer’s UDP ingest address. This must be reachable from the sender machine — over a WireGuard tunnel, LAN, or public IP depending on your setup.
--channels (required)
The number of mono channels this sender pushes. A stereo source counts as 2. The value must exactly match the channels field in the corresponding [[ingest.sender]] block on the server, or the connection will be rejected.
--name
Identifies this sender to the mixer. The mixer’s ingest allow-list matches registrations by this name. If omitted, the system hostname is used. Must be unique across all active senders.
--sink-name
Controls what name appears in PipeWire/PulseAudio clients (e.g. pavucontrol, qpwgraph). Defaults to the sender name. Useful when running multiple broadcasters on the same machine.
--no-sink
Skips creating the PipeWire null-sink. Use this when the null-sink is already created by a persistent PipeWire configuration or when you want to feed audio from an existing JACK port rather than a PipeWire sink.
--verbose / -v
Prints a stats line once per second showing packets sent and packets dropped. Useful for diagnosing network issues.
Examples
Typical studio laptop setup — stereo sender named “studio”:
shiloh-broadcaster connect stg-srv001.bq.shilohbv.com:5005 \
--channels 2 \
--name studio
Guest machine with a custom sink name:
shiloh-broadcaster connect stg-srv001.bq.shilohbv.com:5005 \
--channels 2 \
--name guest \
--sink-name "Guest Mic Input"
Sending without creating a null-sink (sink pre-configured externally):
shiloh-broadcaster connect stg-srv001.bq.shilohbv.com:5005 \
--channels 2 \
--name laptop \
--no-sink \
--verbose
list-sinks — list PipeWire sinks
shiloh-broadcaster list-sinks
No flags. Prints the PipeWire sinks visible on the local machine. Use this to confirm a null-sink was created or to find the name of an existing sink before using --no-sink.
Matching sender name to server config
The --name value must match a name field in [[ingest.sender]] on the mixer, and the --channels count must match the channels field. A mismatch causes the mixer to reject the registration with REJECT_UNKNOWN_SENDER.
Server-side config (excerpt from shiloh-mixer.toml):
[ingest]
slot_count = 4
[[ingest.sender]]
name = "studio"
channels = 2
start_slot = 0
[[ingest.sender]]
name = "laptop"
channels = 2
start_slot = 2
Corresponding broadcaster invocations:
# On the studio machine:
shiloh-broadcaster connect stg-srv001.bq.shilohbv.com:5005 --channels 2 --name studio
# On the laptop:
shiloh-broadcaster connect stg-srv001.bq.shilohbv.com:5005 --channels 2 --name laptop