Skip to content

Eyevinn/strom

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. See docs/OPEN_LIVE_SETUP.md for running your own Strom instance for Open Live.


Quick Demo: Open Source Cloud

Run this service in the cloud with a single click.

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, WebRTC, AES67, SRT, NDI, DeckLink, …)
  • Vision Mixer - Broadcast-style PVW/PGM video switcher with web control UI
  • Audio Mixer - Digital mixing console with channel processing, aux sends, groups, and metering
  • WebRTC / AES67 / SRT / NDI / DeckLink - Wide protocol and hardware I/O coverage
  • HTML Rendering - Render web pages as video sources 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.)
  • 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.

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/SSE
┌────────────▼────────────────────┐
│  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)
  • strom-mcp-server - Model Context Protocol server for AI integration

Configuration

Configure via config file, CLI arguments, or environment variables (in priority order):

--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, and HTTPS/TLS (built-in --tls-cert/--tls-key with hot-reload, or a reverse proxy). See docs/DEVELOPMENT.md for the full option list.

API & MCP

  • REST + WebSocket/SSE API, with interactive OpenAPI docs at /swagger-ui.
  • WS /api/ws and GET /api/events for real-time state and pipeline events.
  • gst-launch import/export via POST /api/gst-launch/parse and /export.
  • Model Context Protocol at /api/mcp (HTTP) or the strom-mcp-server binary (stdio) — 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 feature requests, ideas, and pull requests — ideally AI-written, in the same spirit. Open a GitHub Discussion, file a feature request, or send a PR.

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 comes from "Ström" — Swedish for "stream".

About

Gstreamer GUI and flow engine

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors