Skip to content

Cloud Overview

br\u016bhi Cloud is a self-hosted, multi-station broadcast platform. DJs broadcast from any browser using their microphone; no software installation required on the operator’s machine.

Browser (DJ)
| WebRTC audio
v
GStreamer RTP bridge ←→ FastAPI (Python)
| |
v v
Liquidsoap SvelteKit
(per station) (web dashboard)
|
v
Icecast / Shoutcast / HLS output
ComponentTechnologyPurpose
API serverFastAPI (Python 3.11)REST API, session management, station control
Web dashboardSvelteKit + TypeScriptDJ interface (decks, mixer, soundboard, library)
Audio ingestGStreamer + aiortcWebRTC → RTP pipeline for browser microphone
Stream processorLiquidsoapAudio mixing, fallback chain, Icecast output
DatabaseSQLitePlaylists, automation rules, output configs, logs
ContainerDocker (single image)All-in-one deployment

Each station is an independent broadcast unit:

  • Its own Liquidsoap process
  • Its own Icecast mountpoint
  • Its own harbor port (HTTP ingest)
  • Its own telnet control port
  • Its own playlist, automation rules, and output configuration

Multiple DJs can broadcast to different stations simultaneously from the same br\u016bhi Cloud instance.

For station N (where N starts at 1):

ServicePort formulaExample (Station 1)
Harbor (HTTP ingest)8100 + N − 18100
Liquidsoap telnet2000 + N − 12000
Icecast mount/station-N.mp3/station-1.mp3

Each station has a priority-based fallback chain:

1. Live WebRTC stream (DJ's browser mic)
2. Live harbor input (HTTP push from external encoder)
3. Scheduled playlist (API-managed, watched by Liquidsoap)
4. Silence (automatic — prevents stream interruption)

The highest available source is always used. When a DJ disconnects, Liquidsoap automatically falls back to the scheduled playlist within one frame (~40 ms).

The br\u016bhi Cloud web dashboard provides the same broadcast controls as the Desktop app, adapted for a browser environment:

FeatureAvailable
Dual-deck player with crossfaderYes
Microphone input (WebRTC)Yes
Soundboard / Cart WallYes (64 pads)
Content library + S3 browserYes
Playlists & smart playlistsYes
Broadcast outputsYes
PFL monitoring (Web Audio API)Yes
DSP effects chainPartial (browser-side EQ + compression)
Schedule (visual grid)No (API + telnet rules only)
MIDI mappingNo
br\u016bhi ScriptNo
AspectDesktopCloud
Audio sourceLocal OS audio devicesBrowser WebRTC microphone
Media storageLocal filesystemDocker volume + S3
DatabasePer-user SQLitePer-station SQLite (in container)
DSPFull 7-effect chain (Rust)Browser-side EQ/compressor only
Scheduling UIVisual month gridAPI + Liquidsoap time rules
UsersSingle operatorMultiple DJs with station selection
UpdatesIn-app auto-updatedocker compose pull && docker compose up -d