castero – command-line podcast player

Last Updated on September 1, 2020

I’ve been tinkering with a few modern podcast players in the past few months. CPod, Vocal and Winds all use modern web technologies; in the case of CPod and Winds a combination of JavaScript weaved with the Electron framework. It’s only fair to take a different tack. castero differs fundamentally — it’s a command line podcast client. It’s designed to be easy to use and targeted at users who want lightweight command line applications instead of bloated GUI-based alternatives.

castero lets you add podcasts via RSS feeds, and handles a large number of feeds. It’s released under an open source license.

The software is written in the Python programming language.


Installing the software is fairly uneventful. For the Manjaro distribution, there’s a package in the Arch User Repository (AUR). But it’s wise to treat packages in the AUR with skepticism given the recent malware found in a few orphaned packages. Having checked the castero package in the AUR, there’s nothing sinister there. But it’s good practice to compile the source code from the developer’s code repository than rely on an unverified package. And it’s simple to compile the source.

You can also install the software via pip. If you’re looking for a cross-platform package (AppImage, flatpak or snap), you’re out of luck though.

Besides Python, you’ll also need vlc installed.

In Operation

To start, you’ll need to manually add your favorite feeds. In castero, feeds are added by pressing a, and then entering the RSS urls, one by one. There’s no automation in adding podcasts, you have to find each podcast’s RSS URL and paste it into castero. While CPod offers more convenience in subscribing to podcasts, once you’ve added the podcasts you like, the issue falls away.


As the image above shows, the screen is divided into three columns: feeds, episodes, and metadata. Feeds are ordered alphabetically.

Navigating between feeds and episodes is actioned with the arrow keys. To play a feed or podcast, press the enter key. I’d prefer this action didn’t move the selection down to the next feed/podcast.

There’s queue functionality for feeds and individual episodes. Adding to the queue and clearing the queue is simple and works well, but there’s no way of viewing the episodes currently in your queue which would make a nice addition. You can also invert the order of the menu with the i key.

You can save an entire feed or a single podcast for offline playback with the s key. If you want to delete a saved podcast, you don’t need to leave the application. Simply select the podcast, and press s again, and you’re asked if you want to delete the podcast. Simple and elegant. Saved podcasts are stored in ~/.local/share/castero/downloaded/. Each feed is given it’s own sub-directory. But I’d prefer the option for podcasts to be saved to a user-selected directory.

There’s plenty for people who like to tinker. The castero.conf configuration file lets users change all of the keybindings used to control the client.  The distance to move forwards and backwards when pressing the seek keys can be changed, as well as the colors of main interface (foreground of the main interface, selected items, background of the main interface, selected items).

I tested the software on both Manjaro and Ubuntu and experienced a few crashes with version 0.2.5. First, I experienced strange behavior when running the software in a terminal emulator. There’s a handy help facility in the software, accessed by pressing the h key. In a terminal emulator with short height, pressing h in castero crashes the software. I tried about a dozen different terminal emulators; all exhibited the same bug. This behaviour doesn’t happen in a console though.  After I contacted the developer, the bug is fixed in version 0.2.6.

I subscribed to my favorite podcasts. I’ve written a detailed survey of Linux podcasts that highlight the best (and worst) Linux-centric podcasts. Bizarrely, adding Late Night Linux (either ogg or mp3 feeds), crashes version 0.2.5 of the software. After also raising this issue with the developer, it transpires Late Night Linux’s feed caused the issue. The bug was immediately fixed by the developer. Open source at its finest.


Adding your favorite podcasts is a bit of a chore. But once you’re over the initial hurdle, there’s lots of merit to castero. If you’re tired of bloated GUI software and are looking for a capable podcast player, give castero a whirl. With a few more features, this podcast would tick all the boxes. For example, a search facility to find new podcasts, a viewable playlist, and the option to change the download directory would hit the sweet spot.

Support: GitHub code repository
Developer: Jake Robertson
License: MIT License

castero is written in Python. Learn Python with our recommended free books and free tutorials.

castero features in our Group Test: Best Podcast tools. Learn about other excellent, free, open source podcast software.

Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Newest Most Voted
Inline Feedbacks
View all comments
1 year ago

Why in the world would you need an AppImage for a python script?

1 year ago
Reply to  Greg

Dunno, maybe because it wouldn’t require the user to upgrade Python? castero needs Python 3.5 or higher.

1 year ago
Reply to  VOA

Obviously because an appimage means no system libraries or system preferences are altered