Project

FluxTuner

Python Radio Streaming Self-hosted

An Internet radio platform for terminal, desktop and self-hosted Web, built around a shared core and designed to keep control of the library, profiles and data close to the user.

01 / Overview

Radio without depending on a single interface

FluxTuner started as a direct way to search for and listen to Internet radio stations and has evolved into a platform exposing different interfaces over the same foundation. The project combines playback, search, favorites, playlists, history and profiles with a local-first approach and a self-hosted Web option.

02 / Interfaces

Interfaces

01
Terminal Textual Keyboard

Textual TUI

The primary terminal interface: fast and keyboard-oriented, with search, playback, favorites, playlists, history, recording and configurable themes.

02
GTK4 Linux Desktop

GTK4 Desktop

A native Linux desktop interface built with GTK4, sharing the library and functionality of the rest of FluxTuner while integrating with the desktop environment.

03
Web Multi-user Self-hosted

Web / Server

A self-hosted Web platform with user accounts, private libraries, favorites, playlists, history, administration and a responsive browser interface.

04
CLI Terminal

Legacy CLI

The legacy numbered interface, retained as a minimal and direct way to use FluxTuner from a terminal.

03 / Media

FluxTuner in use

Different interfaces over the same project, from the terminal to a self-hosted Web instance.

FluxTuner TUI running in a terminal
Textual TUI
FluxTuner GTK4 desktop interface
GTK4 Desktop
FluxTuner mobile Web interface
Self-hosted Web
FluxTuner TUI theme selector
TUI Themes
04 / Architecture

One foundation, multiple ways to use it

The interfaces share the same domain and storage instead of behaving as independent applications.

Shared core

Station discovery, playback, favorites, playlists, history, configuration and common logic reused across the different interfaces.

Playback

Modular backends with automatic detection for mpv, ffplay, mpg123 and ogg123.

Local data

SQLite persistence with configuration, data and cache directories following system conventions.

Profiles & users

Profiles separate libraries and usage contexts, while Web mode adds independent authenticated user accounts.

Self-hosting

The Web server can run on your own infrastructure, including deployment workflows suitable for Docker and Podman.

Recording

Local recording from the TUI and GTK interfaces using FFmpeg stream copy, independently from playback and without transcoding the source audio.

05 / Integration

Brynse

Brynse Streaming Integration

Boundary-driven stream segmentation

FluxTuner consumes Brynse as an independent stream segmentation engine. The dependency is one-way: Brynse has no knowledge of FluxTuner and can be consumed independently by other systems.