Skip to content
EyevinnPublic

About

GStreamer media pipeline engine with a visual web GUI. The media engine behind Open Live.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

73 stars

Watchers

3 watching

Forks

Latest commit

 

History

1,547 Commits

Folders and files

Strom

Strom - GStreamer Flow Engine

Strom is a GStreamer media pipeline engine with a visual, web-based GUI. At its core it builds, runs, and manages real-time media pipelines; the node-based editor lets you design and control complex media flows without writing code.

Used by Open Live: Strom is a standalone GStreamer flow engine, but Open Live — an open-source live production platform with Open Live Studio as its web-based production interface — uses Strom as a media backend, driving it over its REST and WebSocket APIs. Try the hosted platform at openlive.apps.osaas.io, or see docs/OPEN_LIVE_SETUP.md for running your own Strom instance for Open Live.


Quick Demo: Open Source Cloud

Strom is the media engine behind Open Live. Try it in the hosted Open Live platform on Open Source Cloud.

Badge OSC


Strom Screenshot Visual pipeline editor showing a simple test flow

Features

  • Visual Pipeline Editor - Node-based graph editor in your browser
  • Real-time Control - Start, stop, and monitor pipelines via REST API or WebSocket
  • Element Discovery - Browse and configure any installed GStreamer element
  • Reusable Blocks - Pre-built inputs, outputs, and processing blocks (mixers, encoders, media player, recorders including the experimental fragmented-MP4 Live Recorder, WebRTC, RTMP, AES67, SRT, NDI, DeckLink, TAMS, local capture and playback devices, …)
  • Vision Mixer - Broadcast-style PVW/PGM video switcher with web control UI, a GPU shader FX engine (GLSL looks, wipes, and master FX takes), and stinger transitions with a clip library
  • Audio Mixer - Digital mixing console with channel processing, aux sends, groups, and metering
  • WebRTC / RTMP / AES67 / SRT / NDI / DeckLink - Wide protocol and hardware I/O coverage
  • Media Library - Upload files, or download them from a URL, and play them with the Media Player
  • HTML Rendering - Render web pages as video and audio sources with the HTML Input block, and drive the page remotely, using CEF (via strom-full Docker image)
  • gst-launch Import/Export - Import existing gst-launch-1.0 commands or export flows
  • System Monitoring - Real-time CPU, memory, and GPU usage graphs
  • Authentication - Optional session login or API keys
  • MCP Integration - Control pipelines with AI assistants (Claude, etc.) over the backend's own /api/mcp endpoint — no separate binary to install
  • Native or Web - Run as a desktop app or a web service

Browse the full set of built-in blocks and their properties in the app's element palette and inspector.

Quick Start

One-liner install (recommended)

curl -sSL https://raw.githubusercontent.com/Eyevinn/strom/main/install.sh | bash

The interactive installer detects your OS, downloads the latest release, and installs GStreamer dependencies. Then run strom and open http://localhost:8080.

Strom is tested against GStreamer 1.28 and supports 1.22 and newer. The installer warns when the installed GStreamer is older.

Docker

docker run -p 8080:8080 -v $(pwd)/data:/data eyevinntechnology/strom:latest

Use eyevinntechnology/strom-full:latest for the image with HTML rendering (CEF). Access the web UI at http://localhost:8080.

Other ways to install

First steps

  1. Open http://localhost:8080.
  2. Drag elements from the palette onto the canvas and connect their pads.
  3. Configure properties in the inspector, then click Start.

For interactive API docs, visit http://localhost:8080/swagger-ui.

Documentation

Quick links: Open Live setup · Docker · GPU setup · Authentication · Vision Mixer · Audio Mixer · MCP · Development · Changelog

Architecture

┌─────────────────────────────────┐
│  Frontend (egui → WebAssembly)  │
│  - Visual flow editor           │
│  - Element palette              │
│  - Property inspector           │
└────────────┬────────────────────┘
             │ REST + WebSocket    
┌────────────▼────────────────────┐
│  Backend (Rust + Axum)          │
│  - Flow manager                 │
│  - GStreamer integration        │
│  - Block registry (AES67, ...)  │
│  - Storage (JSON or PostgreSQL) │
└─────────────────────────────────┘

Workspace members:

  • strom-types - Shared domain models and API types
  • strom - Server with GStreamer pipeline management
  • strom-frontend - egui UI (compiles to WASM or native)

Configuration

Configure via CLI arguments, environment variables, or a config file (highest priority first):

--port 8080                      # or STROM_PORT=8080
--data-dir /path/to/data         # or STROM_DATA_DIR=...
--database-url postgresql://...   # or STROM_DATABASE_URL=... (production)

Copy .strom.toml.example to .strom.toml for all options. Key topics have dedicated guides: storage, authentication, media library, and HTTPS/TLS (built-in --tls-cert/--tls-key with hot-reload, or a reverse proxy). strom --help lists every CLI option; docs/DEVELOPMENT.md covers the common ones.

API & MCP

  • REST + WebSocket API, with interactive OpenAPI docs at /swagger-ui.
  • WS /api/ws for real-time state and pipeline events.
  • gst-launch import/export via POST /api/gst-launch/parse and /export.
  • Model Context Protocol over HTTP at /api/mcp — see docs/MCP.md.

Built by AI

Strom is written by Claude Code. The codebase is authored by AI, not hand-written by humans — that's intentional, and it's also why the code (not the docs) is the source of truth for how things work.

We welcome bug reports, feature requests and ideas. We would rather have a good issue than a pull request: say what is broken, how you would solve it, and how we would test it. Code is quick to generate and goes stale fast. Questions and ideas also fit in GitHub Discussions.

Contributing

See docs/CONTRIBUTING.md and docs/DEVELOPMENT.md. CI runs tests and builds binaries for Linux, Windows, macOS, and ARM64, and publishes Docker images on release.

License

MIT OR Apache-2.0


The name Strom (rhymes with "from") comes from "Ström" — Swedish for "stream".

About

GStreamer media pipeline engine with a visual web GUI. The media engine behind Open Live.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

73 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages