Skip to content
CAI
Software that uses CAICheck a score

membraneframework/boombox

58.5

Adequate · 18 September 2026

11.3k

lines of production code

Elixir

primary language

1

measurement over time

CAI band scale
CAI lens gauges

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.