- Bring streams in
- Accept SRT publishers, start managed pulls, or pull from another node when a viewer asks. Every path enters the same normalized stream model.
- Repair when needed
- Measure the stream first. Use bounded CPU or GPU workers for compatibility repair, an explicit H.264 target or supported HEVC input conversion. Automatic mode keeps matching inputs on the passthrough path.
- Deliver live
- Serve HLS, LL-HLS, WHEP WebRTC and MOQT from the same node. Keep storage-backed delivery and real-time playback as independent bounded outputs.
- Route media onward
- Push an active stream to one or more SRT destinations on demand or by standing rule. Each target has its own bounded lifecycle and cannot stall the source.
- Record and publish
- Keep a recording playable while it grows, finalize it at the same path, and publish committed artifacts safely to S3-compatible storage for archive or CDN delivery.
- Operate the system
- Use separate media and operational surfaces, stream and job status APIs, Prometheus metrics, structured logs, health probes, and bounded webhooks.
The media path. Under control.
Bring streams in over SRT. Repair or normalize when the configured media path needs encoding. Deliver HLS, LL-HLS, WHEP WebRTC and MOQT, retain durable recordings with or without live playback, publish them to object storage, or route media onward. One Go binary composed from explicit input and output modules, with a data path that is bounded, measured, and written down.
What it does
Shape the system
Start with one node. Add cascade input and output when viewers move farther away. Add a registry when stream placement becomes a control-plane concern. Push SRT to another server, partner, or processing destination when the media path needs another level.
The topology grows from the same binary and the same contracts. No mandatory control plane, hosted dependency, or proprietary transport is inserted between levels.
Sketch a topology in Map
Draw media paths and export a configuration draft for each tier.
Why dispergo
Transcode only when needed
Optional outputs build only when enabled. Automatic mode keeps a matching stream on the direct path; an explicit forced policy can normalize it to a configured target.
Bound every failure
Queues, retries, workers, viewers, uploads, and fan-out subscribers have explicit limits and isolated failure scopes.
Keep the data plane plain
One Go binary, one strict configuration document, and standards-based links between components.
Make claims observable
Status, metrics, structured events, compatibility tests, fault injection, and soak coverage make feature behavior inspectable. Capacity limits are explicit instead of guessed.
Status
dispergo is private alpha software. Interfaces may still change.
At this stage, we work with test partners to develop and validate Dispergo. If you would like to take part, email [email protected] with a short description of your use case.
The name
dispergo is Latin, first person singular: dis + spargere, I scatter apart, I distribute. The English word broadcast is the same construction: broad + cast, to scatter seed widely, a farmer's word long before it became an engineer's.
It is also valid Italian: io dispergo, I disperse. That makes the domain dispergo.io a complete sentence, written back to front. And yes, the name ends in go.