pdcst
public preview

Press play once.
The queue fills itself.

pdcst is a keyboard-driven terminal podcast player in pure Rust - one binary, no cloud, no account. Mark a show once and new episodes auto-fill your Up Next at publish time, interleaved so you never get a run of the same show, never touching what's playing.

Public preview - build it from source.

pdcst is feature-complete and in daily use by its author; the repository is open while packaging and release land. Today that means a Rust toolchain; binaries and the one-liner follow with the first release:

$ cargo install --git https://github.com/jhheider/pdcst pdcst
$ curl -fsSL https://heider.cc/pdcst.sh | bash   # soon

The core loop

Set it, forget it, press space

Feeds refresh on their own - a few seconds after launch, then on an interval. Episodes stream to disk and start playing after a 256 KiB prebuffer, so playback doesn't wait for downloads. Finish an episode and the queue advances itself.

Recording of the pdcst TUI: browsing subscribed podcasts, queueing episodes, and the Up Next queue view

A live build, real feeds: import subscriptions, browse 99% Invisible, queue episodes with a, and the Up Next view. Auto-queued feeds fill this list themselves as episodes publish.

AThe auto-queue

The reason the project exists. Mark a feed and new episodes append or prepend themselves, capped at a depth you choose, with listen state tracked for every episode.

[ ]Real 1.5x

Pitch-corrected speed via wsola, a WSOLA time-stretch engine written for this player. No chipmunks.

Resume anywhere

Position survives restarts. Unplayed, in-progress, and played states persist per episode in SQLite.

Bounded cache

Episodes delete on finish; the cache respects episode and megabyte caps. Your disk is not a podcast archive unless you ask it to be.

Keyboard-first

Everything under your fingers

play / pausespace
next in queuen
seek ±10s / ±30s← → · < >
speed ∓0.1[ ]
add to queuea
auto-queue a feedA
drill in / back outl · h
search & subscribe3
views1–4 · tab
refresh feed / allr · R
help?

Bring your subscriptions with you: pdcst --import podcasts.opml takes a Pocket Casts (or any) OPML export and exits; --export hands them back.

Why it exists

An homage to one perfect feature

Unapologetically inspired by the inestimable Pocket Casts, whose auto-managed Up Next queue is the thing this project exists to reproduce. On a commute that queue was the whole game. - the README

Not the goal: cloud sync, discovery, or a settings-heavy UI. The edge is simple - mine, fast, self-contained, doesn't crash, and keeps the queue full.

pdcst is a personal tool that runs well for its author, shared to read and to build, with no support promised. Built on ratatui, rodio, and sqlx; TLS is rustls with ring - no OpenSSL anywhere in the tree.