Skip to content

Events & Alarms

bilbycast-edge generates operational events and forwards them to bilbycast-manager via WebSocket. Events provide real-time visibility into connection state changes, failures, and significant operational conditions that go beyond periodic stats and health messages.

Events are sent as WebSocket messages with type "event":

{
"type": "event",
"timestamp": "2026-04-02T12:00:00Z",
"payload": {
"severity": "warning",
"category": "srt",
"message": "SRT input disconnected, reconnecting",
"flow_id": "flow-1",
"details": { ... }
}
}
SeverityMeaningAction
criticalService-impacting failureOperator should investigate immediately
warningDegradation or potential issueOperator should investigate when possible
infoNotable state changeNo action required, operational awareness
FieldTypeRequiredDescription
severitystringyes"info", "warning", or "critical"
categorystringyesEvent category (see tables below)
messagestringyesHuman-readable description
flow_idstringnoAssociated flow or tunnel ID
detailsobjectnoStructured context (error codes, peer addresses, etc.)

Events are emitted on state transitions, not periodically. For example, an SRT disconnect event fires once when the connection drops, not repeatedly while disconnected. The corresponding reconnection event fires when the connection is restored.

For protocols with automatic reconnection loops (RTSP, SRT caller), disconnect events fire once per connection cycle — if the remote is unreachable and retries continue, subsequent retry failures are silent until a connection succeeds and then drops again.

Events are queued in an unbounded in-memory channel. When the edge is not connected to the manager (e.g., during reconnection), events accumulate and are delivered once the connection is re-established.


SeverityMessageTrigger
infoFlow ‘{id}’ startedFlow successfully created and running
infoFlow ‘{id}’ stoppedFlow stopped by command or config change
criticalFlow ‘{id}’ failed to start: {error}Flow startup error (input bind, output bind, validation)
criticalFlow input lost: {error}Input task exited unexpectedly
infoOutput ‘{id}’ added to flow ‘{flow_id}‘Hot-add output succeeded
infoOutput ‘{id}’ removed from flow ‘{flow_id}‘Hot-remove output succeeded
warningOutput ‘{id}’ failed to start on flow ‘{flow_id}’: {error}Output startup failure within a running flow

Source: src/engine/manager.rs, src/engine/input_srt.rs


SeverityMessageTrigger
infoSRT input connected (mode=listener)Listener accepted a caller connection
infoSRT input connected (mode={mode})Caller connected to remote
infoSRT input connected (mode=listener, redundant leg 1)Redundant leg 1 accepted
warningSRT input disconnected, reconnectingPeer disconnected, reconnection in progress
criticalSRT input connection failed: {error}Listener accept or caller connect failed
SeverityMessageTrigger
infoSRT output ‘{id}’ connectedPeer connected (listener) or caller connected
warningSRT output ‘{id}’ disconnectedPeer disconnected or connection lost
warningSRT output ‘{id}’ stale connection detectedNo ACK received after timeout, re-accepting
criticalSRT output ‘{id}’ connection failed: {error}Caller can’t reach remote, or bind fails

Source: src/engine/input_srt.rs, src/engine/output_srt.rs


SeverityMessageTrigger
warningRedundant leg 1 lostSRT redundant leg 1 stopped receiving
warningRedundant leg 2 lostSRT redundant leg 2 stopped receiving
criticalBoth redundant legs lostNo data from either leg, will reconnect

Source: src/engine/input_srt.rs


SeverityMessageTrigger
infoRTMP publisher connectedClient connected and started publishing
warningRTMP publisher disconnectedPublisher disconnected
criticalRTMP server error: {error}Server bind or accept failure

Source: src/engine/input_rtmp.rs


SeverityMessageTrigger
infoRTSP connected to {url}RTSP DESCRIBE/SETUP/PLAY succeeded
warningRTSP input disconnected: {error}. Reconnecting in {n}sStream lost after a successful connection

The disconnect event fires once per connection cycle — if the RTSP server is unreachable and the edge retries repeatedly, only the first failure emits an event. A new “connected” event followed by a new “disconnected” event will fire when the connection is established and then lost again.

Source: src/engine/input_rtsp.rs


SeverityMessageTrigger
warningHLS segment upload failed: {error}HTTP PUT fails for a segment
criticalHLS output failed: {error}Output task exited with error

Source: src/engine/output_hls.rs


SeverityMessageTrigger
infoWHIP publisher connectedICE+DTLS complete on WHIP server input
infoWHIP publisher disconnectedPublisher left
infoWHEP connectedWHEP client input connected to remote
infoWHEP disconnectedWHEP client input disconnected
infoWHEP viewer connectedNew WHEP viewer joined an output
infoWHEP viewer disconnectedWHEP viewer left an output
warningWebRTC session failed: {error}ICE failure, DTLS error, or session creation error
warningWebRTC session creation failed: {error}Output session could not be created

Source: src/engine/input_webrtc.rs, src/engine/output_webrtc.rs


SeverityMessageTrigger
infoTunnel ‘{name}’ startedTunnel created and connecting
infoTunnel ‘{name}’ stoppedTunnel stopped by command or config change
infoTunnel connected to relayQUIC connection established and TunnelReady received
warningTunnel disconnected from relay: {reason}QUIC connection lost or forwarder exited
warningTunnel peer disconnected: {reason}Relay reported peer unbound (TunnelDown)
warningTunnel connection to relay failed: {error}QUIC connect or TLS error
criticalTunnel ‘{name}’ failed: {error}Tunnel task exited with fatal error
criticalTunnel bind rejected by relay: {reason}HMAC bind token verification failed

Source: src/tunnel/manager.rs, src/tunnel/relay_client.rs


SeverityMessageTrigger
infoConnected to managerWebSocket auth succeeded
warningManager connection lost, reconnectingWebSocket closed or errored
criticalManager authentication failed: {reason}Auth rejected by manager

Source: src/manager/client.rs


SeverityMessageTrigger
infoConfiguration updatedConfig applied via manager command
warningFailed to persist configuration: {error}Config write to disk failed after update

Source: src/manager/client.rs


In addition to events sent by the edge, the manager itself generates these events when an edge connects or disconnects:

SeverityCategoryMessageTrigger
infoconnectionNode connected to managerEdge successfully authenticates
warningcompatibilityNode WS protocol version differsProtocol version mismatch during auth
criticalconnectionNode disconnected from managerEdge WebSocket closes

These are generated server-side in bilbycast-manager/crates/manager-server/src/ws/node_hub.rs.


CategoryCountDescription
flow7Flow lifecycle (start/stop/fail, output add/remove)
srt9SRT input and output connection state
redundancy3SMPTE 2022-7 dual-leg status
rtmp3RTMP publisher connections
rtsp2RTSP input state
hls2HLS output failures
webrtc8WHIP/WHEP session lifecycle
tunnel8Tunnel connection state
manager3Manager WebSocket connection
config2Configuration changes
Total47
SeverityCountDescription
critical10Service-impacting: flow/tunnel failures, auth rejection, both legs lost
warning17Degradation: disconnects, stale connections, upload failures, reconnects
info20State changes: connections established, flows started, config updated