membraneframework/boombox
58.5
Adequate · 18 September 2026
11.3k
lines of production code
Elixir
primary language
1
measurement over time
What this system is
Boombox is a media streaming and processing framework that ingests, transcodes, and outputs audio/video streams via protocols like WebRTC, HLS, SRT, and RTSP. It provides a unified API for Elixir and Python, enabling both programmatic pipeline construction and command-line stream manipulation. The system supports real-time processing, local playback, and integration with AI models for tasks such as transcription and face anonymization.
How it got here
2024 — Boombox rebranding and API expansion
12 changes.
The project rebranded from Membrane Template Plugin to Boombox, introducing a new Elixir-native API with synchronous, asynchronous, and standalone server modes. This period focused on establishing a robust CLI interface, binary distribution, and comprehensive test coverage for media streaming and transcoding across various protocols and codecs.
2025–2026 — Core pipeline and Python bindings
6 changes.
This period focused on implementing the core internal media pipeline with support for multiple streaming protocols and storage endpoints, alongside the initial release of Python bindings for external integration. The work was complemented by comprehensive test coverage and a suite of interactive examples demonstrating AI processing, streaming, and media manipulation capabilities.
Features
Added CLI entry-point scripts for Boombox
Two new shell scripts, \bin/boombox\ and \bin/boombox\_local\, have been added to the project. The \boombox\ script allows users to run the Boombox CLI by installing the library on-the-fly via \Mix.install\, while \boombox\_local\ runs the CLI against the local source code using \mix run\. These scripts provide convenient ways to execute the Boombox command-line interface.
bin · high confidence
Boombox rebrands from Membrane Template Plugin and adds binary distribution
The project is renamed from 'membrane\_template\_plugin' to 'boombox', updating the package name, documentation, and supported protocol table (including WebRTC, WHIP, SRT, and RTP). A new build script (build\_binary.sh) is introduced to package the application as a standalone binary using Burrito, and the CLI is documented as a primary interface alongside the Elixir and Python libraries.
(repo-wide) · high confidence
Initial release of the Boombox Python package
This change introduces the initial Python bindings for Boombox, a high-level tool for audio and video streaming based on the Membrane Framework. The package, available on PyPI as \boomboxlib\, allows Python applications to integrate with external media streams, facilitating use cases such as AI pipelines and direct raw media interaction. It supports MacOS (ARM) and Linux (x86 and ARM) architectures and includes a README with installation instructions and usage examples, such as reading an MP4 file, flipping video frames, and saving the output.
python · high confidence
New Boombox API with Elixir endpoints and async support
The library introduces a new public API in \lib/boombox.ex\ featuring \Boombox.run/2\ for synchronous streaming, \Boombox.play/1\ for local playback, and \Boombox.async/2\ for non-blocking execution. It adds Elixir-native endpoints (\:stream\, \:writer\, \:reader\, \:message\) that allow direct interaction with media packets via structs like \Writer\ and \Reader\, replacing the previous \Membrane.Template\ module.
lib · high confidence
New CLI interface for stream processing
Users can now invoke Boombox from the command line to configure input and output endpoints. The new \lib/boombox/utils/cli.ex\ module parses arguments for protocols such as RTMP, HLS, WHIP, and WebRTC, and supports options like \transcoding\_policy\ and \pace\_control\. The \lib/boombox/utils/burrito\_app.ex\ module provides an application entry point that runs the CLI logic and halts the system upon completion.
lib/boombox/utils · high confidence
New Livebook examples for AI, basic, streaming, and stream processing
The examples directory now includes four new Livebook notebooks—\ai.livemd\, \basic.livemd\, \streaming.livemd\, and \stream\_processing.livemd\—along with supporting HTML assets for WebRTC, WHIP, and HLS playback. These notebooks provide interactive demonstrations of Boombox capabilities, including basic file I/O and transcoding, various streaming protocols (WebRTC, HLS, RTMP, RTSP, RTP), and advanced AI features like image classification ("Not hot dog") and speech transcription using Bumblebee and Whisper models.
examples · high confidence
New Python examples for media stream anonymization, HLS conversion, and MP4 processing
The Python package now includes three new demo applications in the \python/examples\ directory. The \anonymize\_stream\ demo shows how to receive a WebRTC webcam feed, blur faces, distort audio, and transcribe speech using YOLO and Whisper models while a user raises their hand. The \generate\_hls\_livestream\ demo demonstrates converting an incoming WebRTC stream into a live HLS playlist. The \invert\_mp4\_colors\ demo provides a simple example of reading an MP4 file and inverting its video colors. These examples also introduce new browser-based sender and receiver HTML assets to facilitate local testing of the WebRTC integration.
python/src · high confidence
New internal media pipeline and endpoint implementations
This change introduces the core implementation for the Boombox internal binary, adding new modules to handle media ingestion, processing, and output. It includes support for HLS ingress (via \hls.ex\), RTSP input with configurable media types and H.265 support (via \rtsp.ex\), SRT input and output (via \srt.ex\), and RTP input/output with H.264, H.265, AAC, and Opus support (via \rtp.ex\). It also adds Elixir-based source and sink endpoints (\elixir\_endpoints.ex\, \source.ex\, \sink.ex\) that allow integration with external processes using push or pull flow control, a local player (\player.ex\) using PortAudio and SDL, and various storage endpoints for recording to formats like MP4, AAC, H.264, H.265, MP3, and IVF. The pipeline handles track negotiation, transcoding, and real-time pacing via realtimers.
_lib/boombox/internal\bin · high confidence
Behavioural changes
Introduce standalone server mode and configurable transcoding policies
Boombox now supports a standalone server mode that can be started as an OTP application, allowing it to run independently and accept media via GenServer calls or messages. Additionally, users can now control transcoding behavior for output streams using a new \transcoding\_policy\ option, which accepts \:always\, \:if\_needed\, or \:never\ to explicitly force, conditionally apply, or disable media decoding and re-encoding.
lib/boombox · high confidence
Production logging level configured to warning
A new configuration file has been added that sets the logger level to :warning when the application runs in the production environment, reducing the verbosity of logs in that context.
config · high confidence
Test coverage
1 commit adding/updating tests in test/fixtures/storage\_endpoints; 8 commits adding/updating tests in test/fixtures; Added HLS test fixtures for AAC video streams; Added HLS test support module for HTTP adaptive stream sources; Added test support for comparing audio and video streams; Added tests for RTP input configuration parsing; Expanded test coverage for Boombox streaming and bin components.
Dependencies
Boombox SDK v0.2.13 release with extensive Membrane plugin updates
The Boombox SDK (Elixir and Python) has been updated to version 0.2.13. The Elixir core now depends on Membrane Core 1.2 and a comprehensive suite of Membrane plugins (including WebRTC, RTSP, RTP, HLS, SRT, and transcoders), replacing the previous template structure. The Python package \boomboxlib\ is also updated to 0.2.13, requiring Python 3.11+ and specifying dependencies like NumPy 2.2.5. Documentation generation now includes LLM-friendly links.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 58.
Lenses
- Code Health 98
- Architecture 87
- Maturity 58
- Readiness 48
- Security 66
Changes since last survey
- 300 commits — 246 feature/other, 54 fixes
By area
- lib/boombox — 119 commits
- (root) — 75 commits
- (repo) — 27 commits
- .circleci/config.yml — 14 commits
- lib/boombox.ex — 12 commits
- test/boombox_bin_test.exs — 11 commits
- .github/workflows — 10 commits
- test/browser_test.exs — 7 commits
- test/boombox_test.exs — 6 commits
- test/fixtures — 4 commits
- python/docs — 2 commits
- python/examples — 2 commits
- python/src — 2 commits
- test/assets — 2 commits
- test/support — 2 commits
- test/test_helper.exs — 2 commits
- boombox_examples_data/webrtc_to_browser.html — 1 commit
- examples/ai.livemd — 1 commit
- examples/data — 1 commit
Notable commits
- fix: Almost fix tests
- fix: Bump deps, fix transcoder format resolver
- fix: Fix (#39)
- fix: Fix CI
- fix: Fix CI config
- fix: Fix CLI
- fix: Fix a bug occuring when h264 framerate is specified (#143)
- fix: Fix async_test behaviour under for/Enum (#72)
- fix: Fix boombox dep version in livebook
- fix: Fix browser test
- fix: Fix bug in VP8 transcoding:
- fix: Fix bug in bin
- fix: Fix bug in directories layout
- fix: Fix bugs
- fix: Fix ci
- fix: Fix config (#117)
- fix: Fix credo
- fix: Fix credo
- fix: Fix credo
- fix: Fix credo
- …and 280 more
Architecture
- 0 containers · 1 bounded contexts · 0 dependency edges (baseline)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
membraneframework/boombox was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 1f593f2fcd5a22802621e035d0d7ac7e51d5fa94 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.