Platform-agnostic CLI toolkit for livestreamers
Project description
reeln
Platform-agnostic CLI toolkit for livestreamers.
reeln handles video manipulation, segment/highlight management, and media lifecycle — generic by default, sport-specific through configuration. Built by Streamn Dad.
Features
- Game lifecycle management — init, segment, highlights, finish
- FFmpeg-powered video merging — concat segments into highlight reels, no re-encoding
- Sport-agnostic segment model — hockey periods, basketball quarters, soccer halves, and more
- Flexible configuration — JSON config with XDG-compliant paths, env var overrides, named profiles
- Pipeline debugging —
--debugflag captures ffmpeg commands, filter chains, and metadata for troubleshooting - Plugin-ready architecture — lifecycle hooks, typed capability interfaces, and config schema declarations
- Cross-platform — macOS, Linux, Windows
Quick start
# Install
pip install reeln
# Verify it works
reeln --version
# View your configuration
reeln config show
# Initialize a hockey game
reeln game init roseville mahtomedi --sport hockey
More commands are being built — rendering and media management are on the roadmap. See the CLI reference below for what's available and what's coming.
Supported sports
reeln adapts its directory structure and terminology to your sport:
| Sport | Segment name | Count | Example directories |
|---|---|---|---|
| hockey | period | 3 | period-1/, period-2/, period-3/ |
| basketball | quarter | 4 | quarter-1/ through quarter-4/ |
| soccer | half | 2 | half-1/, half-2/ |
| football | half | 2 | half-1/, half-2/ |
| baseball | inning | 9 | inning-1/ through inning-9/ |
| lacrosse | quarter | 4 | quarter-1/ through quarter-4/ |
| generic | segment | 1 | segment-1/ |
Custom sports can be registered in your config file.
CLI reference
Available now:
| Command | Description |
|---|---|
reeln --version |
Show version |
reeln --help |
Show help and available commands |
reeln config show |
Display current configuration |
reeln config doctor |
Validate config, warn on issues |
reeln game init |
Set up game directory with sport-specific segments |
| reeln plugins search | Search the plugin registry |
| reeln plugins info <name> | Show detailed plugin information |
| reeln plugins install <name> | Install a plugin from the registry |
| reeln plugins update [name] | Update a plugin or all installed plugins |
| reeln plugins list | List installed plugins with version info |
| reeln plugins enable <name> | Enable a plugin |
| reeln plugins disable <name> | Disable a plugin |
Coming soon (command groups are registered, implementation in progress):
| Command | Description |
|---|---|
reeln game segment <N> |
Move replays and merge segment highlights |
reeln game highlights |
Merge all segments into full-game highlight reel |
reeln game finish |
Finalize game, cleanup temp files |
reeln render short |
Render 9:16 short from clip |
reeln render preview |
Fast low-res preview render |
reeln media prune |
Artifact cleanup (supports --dry-run) |
reeln doctor |
Health check: ffmpeg, config, permissions |
Configuration
reeln uses a layered JSON config system:
- Bundled defaults — shipped with the package
- User config —
config.jsonin your XDG config directory - Game overrides —
game.jsonin the game directory - Environment variables —
REELN_<SECTION>_<KEY>
# Override any config value via env var
export REELN_VIDEO_FFMPEG_PATH=/opt/ffmpeg/bin/ffmpeg
export REELN_PATHS_OUTPUT_DIR=~/custom-output
# View the resolved config
reeln config show
Requirements
- Python 3.11+
- ffmpeg 5.0+
Installation
# With pip
pip install reeln
# With uv
uv tool install reeln
# Development
git clone https://github.com/StreamnDad/reeln-cli.git
cd reeln-cli
make dev-install
Documentation
Full documentation is available at reeln-cli.readthedocs.io.
License
GNU Affero General Public License v3.0 (AGPL-3.0)
Links
- streamn.dad — project home
- Documentation — full docs
- @streamn_dad — highlights on Instagram
- YouTube — livestreams and highlights
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reeln-0.0.27.tar.gz.
File metadata
- Download URL: reeln-0.0.27.tar.gz
- Upload date:
- Size: 437.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
674b2fd5fea6bf87ce1e467de6e9fbde2981e679a86d6f00a9c5c7bf120d7643
|
|
| MD5 |
d475443ac495923b45b5640847d26dee
|
|
| BLAKE2b-256 |
1510f2e78422c0bd8d179c156dd448016a217d7c9c477b8d9a8a5240b0a487b0
|
Provenance
The following attestation bundles were made for reeln-0.0.27.tar.gz:
Publisher:
release.yml on StreamnDad/reeln-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reeln-0.0.27.tar.gz -
Subject digest:
674b2fd5fea6bf87ce1e467de6e9fbde2981e679a86d6f00a9c5c7bf120d7643 - Sigstore transparency entry: 1035668181
- Sigstore integration time:
-
Permalink:
StreamnDad/reeln-cli@2fceb5034b7c4dd30ad858ef4474679927530cac -
Branch / Tag:
refs/tags/v0.0.27 - Owner: https://github.com/StreamnDad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2fceb5034b7c4dd30ad858ef4474679927530cac -
Trigger Event:
push
-
Statement type:
File details
Details for the file reeln-0.0.27-py3-none-any.whl.
File metadata
- Download URL: reeln-0.0.27-py3-none-any.whl
- Upload date:
- Size: 100.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e189fce35327708b4f4cca54f8c52bb8b84a1410d2bdf13c338ad35d15aefe3
|
|
| MD5 |
ff743689c7642e8a6e308119a6eb3e02
|
|
| BLAKE2b-256 |
d5a915fea9163c7821980e1f0407ba3dd0fdaa33f6cba1a2fdfe549f34d2fed5
|
Provenance
The following attestation bundles were made for reeln-0.0.27-py3-none-any.whl:
Publisher:
release.yml on StreamnDad/reeln-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reeln-0.0.27-py3-none-any.whl -
Subject digest:
6e189fce35327708b4f4cca54f8c52bb8b84a1410d2bdf13c338ad35d15aefe3 - Sigstore transparency entry: 1035668219
- Sigstore integration time:
-
Permalink:
StreamnDad/reeln-cli@2fceb5034b7c4dd30ad858ef4474679927530cac -
Branch / Tag:
refs/tags/v0.0.27 - Owner: https://github.com/StreamnDad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2fceb5034b7c4dd30ad858ef4474679927530cac -
Trigger Event:
push
-
Statement type: