Skip to content

Getting Started

Bilbycast is a suite of Rust projects for professional broadcast media transport. The core components work together to move live video and audio between locations with broadcast-grade reliability.

ComponentRole
bilbycast-edgeMedia transport gateway — bridges SRT, RTP, UDP, RTMP, RTSP, HLS, WebRTC
bilbycast-managerWeb UI + API for remote management and monitoring
bilbycast-relayQUIC relay for NAT traversal between edge nodes
bilbycast-srtPure Rust SRT protocol library (used by edge internally)
bilbycast-appear-x-api-gatewayBridge for Appear X broadcast devices
┌─────────────────────┐
│ bilbycast-manager │
│ (Web UI + API) │
└────────┬────────────┘
│ WebSocket (wss://)
┌──────────────┼──────────────┐
│ │ │
┌────────▼───────┐ ┌──▼──────────┐ ┌▼────────────────┐
│ bilbycast-edge │ │ bilbycast- │ │ bilbycast-edge │
│ (Site A) │ │ relay │ │ (Site B) │
└────────┬────────┘ └──┬──────────┘ └┬────────────────┘
│ │ │
└──────────────┘──────────────┘
QUIC tunnels (encrypted)

Edge nodes connect outbound to the manager via WebSocket, enabling management of devices behind firewalls and NAT. The relay provides QUIC-based tunneling between edge nodes that can’t reach each other directly.

  • Rust toolchain (stable, edition 2024)
  • SQLite3 (for bilbycast-manager)

The fastest way to see bilbycast in action is to run a standalone edge node:

Terminal window
# Build the edge node
cd bilbycast-edge
cargo build --release
# Create a minimal config
cat > config.json << 'EOF'
{
"version": 1,
"server": { "listen_addr": "0.0.0.0", "listen_port": 8080 },
"flows": [
{
"id": "srt-to-rtp",
"name": "SRT Input to RTP Output",
"enabled": true,
"input": {
"type": "srt",
"mode": "listener",
"local_addr": "0.0.0.0:9000",
"latency_ms": 120
},
"outputs": [
{
"type": "rtp",
"id": "out-1",
"name": "RTP Output",
"dest_addr": "192.168.1.100:5004"
}
]
}
]
}
EOF
# Start the node
./target/release/bilbycast-edge --config config.json

See the Deployment guide for full multi-component setup, or jump to Your First Flow for a step-by-step walkthrough.