Skip to main content

Stumble Radio

Stumble Radio terminal player with station browser, favourites and playback controls

The actual TUI, shown with demonstration stations and listening data.

What it is

Stumble Radio is a terminal radio player for curious ears. Search the world’s radio stations, stumble into something new, and keep your favourites close. Built with Python and SQLite, with a local station catalogue for fast search. Use the keyboard or mouse; the layout adapts to smaller terminals.

Why

I enjoy music as I work. I actually find it hard to work in absolute silence. I have always wanted a good terminal music/radio player, and I have tested several without ever being very happy with them. I once even tried building my own player, Geek Play, but abandoned the project when a close collaborator, Joseph Ndung’u, passed on.

Many times I just listen to Radio Garden. But that means adding one more browser tab, which sometimes disconnects. I also think the search and station sorting features can be greatly enhanced.

Finally, I got researching. With the aid of AI, it is now much easier to build a real terminal radio with a tonne of features. Here is what Stumble Radio can do.

Features

Listen, record and drift off

  • Play/pause, previous/next station, volume controls, and broadcaster song metadata.
  • Record the original audio while continuing to browse or pausing your listening.
  • Retry interrupted streams and resume when the internet comes back.
  • Automatically skip dead or silent stations during random discovery.
  • Set a sleep countdown with a fade, then stop playback and recording.

Playback, recording, sleep and keyboard controls →

Discover somewhere new

  • Stumble: random radio that learns from quick skips and longer listens.
  • Teleport: spin through country names, land somewhere, and listen there.
  • Shuffle modes: Anywhere, Music-only, Talk/News, Your language, and Nearby.

Stumble, Teleport and shuffle modes →

Find exactly what you want

  • Filter by name, country, region, genre/format, language, codec, bitrate, HTTPS, stream health, or geographic radius.
  • Combine search operators, phrases, AND (+), OR (|) and parentheses.
  • See every active filter, clear them in one click, and click any header to sort.
  • Sort by votes, recent directory plays, name, country and more, with matching favourites first.

Search syntax, all filters and worked examples →

Keep your own dial

  • Save favourites and browse Explore, Favourites, History, or Unheard.
  • Open a compact, searchable Quick tune picker.
  • Browse a local SQLite catalogue, quietly updated in the background.
  • See one row per identical stream URL, keeping your favourites and history intact.

Favourites, browsing, catalogue sync and storage →

See where you have been

  • Open your listening journal for time per station, top stations and recent sessions.
  • Collect a radio passport of countries heard and track country/genre diversity.

Listening journal and radio passport →

Find that song again

  • Last Play Search: search remembered artists, songs or stations you heard.
  • See where and when you heard each track, newest first, and tune that station.
  • Search a local full-text index; plays older than one year are removed automatically.

Last Play Search →

Work with a rhythm

  • PODMORO: custom focus/break profiles, weekly schedules and daily focus totals.
  • Interrupt the music with your own MP3 voice prompts for breaks or reminders.
  • Add water, stretch, eye-break or custom command folders; preview clips and captions.
  • Pause, skip, extend, snooze or silence reminders without losing your place.

Podmoro, scheduling and step-by-step sound setup →

Get started

You need Python 3.11+, mpv, and FFmpeg if you want to record. Linux and macOS are supported; Windows users need WSL with working audio.

From this project’s checkout, install a globally available command with uv:

uv tool install .
uv tool update-shell
stumble-radio

Open a new terminal if needed. Press s to Stumble, t to Teleport, Ctrl+F to search, Ctrl+O for Podmoro, and ? for help.

Installation, audio dependencies and first launch · Troubleshooting · Development

Station directory provided by the Radio Browser community.

Metadata

Release files for stumble-radio 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for stumble-radio 0.1.0
File Interpreter ABI Platform
stumble_radio-0.1.0-py3-none-any.whl Python 3 none any Details

Release files / stumble_radio-0.1.0-py3-none-any.whl

Download URL stumble_radio-0.1.0-py3-none-any.whl
Size 57.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
69627f383f1c2b777c4f3998f27823a999e7a6fed4662efd9b9aa7634428a7bb
BLAKE2b-256 checksum
How to use checksums
86a3fcda6312f7c78af3c8c05d4b8472509e68895379ce3d4fd9148096f27bd7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for stumble-radio 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page