Rust CLI • Podcast Syncing

Discover podcasts.
Download episodes.
Keep your library in sync.

PodFetch helps you find podcasts, resolve their RSS feeds, and download new episodes from the terminal with metadata and cover art baked in.

🦀 Rust RSS + Search Jellyfin / Audiobookshelf ready Linux • Windows • Arch
PodFetch logo

Fast, focused, and local-first

Pull podcasts into a structured folder, tag the audio for your media stack, and skip already-downloaded episodes.

podfetch "Darknet Diaries"
podfetch https://example.com/podcast.xml

What PodFetch does

One tool for discovery, download, and organization.

Built around the real workflow of podcast fans who want something simple and dependable from the terminal.

🔎 Search by name

Find a podcast quickly by title and let PodFetch resolve its feed automatically.

📡 RSS or direct input

Use either a podcast name or a known RSS feed URL, depending on what you already have.

⬇️ Smart episode sync

Only downloads episodes that have not already been recorded, keeping repeat runs lightweight.

🏷️ Audio metadata

Tags downloaded files and writes metadata and cover images for media-server workflows.

📁 Flexible output paths

Use templates like {podcast_name} and {podcast_author} to build your preferred folder layout.

⚡ Parallel downloads

Increase throughput with configurable concurrency for a faster sync pass when you want it.

🎨 Interactive TUI

Navigate podcasts and track downloads with a modern terminal interface built on ratatui.

📋 Setup wizard

Interactive guided workflow for selecting podcasts and configuring download settings without CLI args.

📊 Live progress tracking

Real-time download UI with scrollable active downloads, progress bar, and full history.

Install it your way

Pick the format that fits your setup.

Available on Linux, Windows, Arch, and macOS (via Rust/cargo).

Interactive experience

A polished terminal interface for podcast discovery and downloads.

PodFetch features an interactive Terminal User Interface (TUI) that guides you through setup and provides real-time download tracking.

🧙 5-step setup wizard

On first run (without CLI args), you'll be guided through podcast input, search confirmation, result selection, output path, and final review.

Keyboard: Enter, ↑↓ arrows, Y/N/B quick keys, Ctrl-Q to exit

📥 Download progress UI

Real-time interface shows active downloads with individual progress bars, an overall progress bar, and a scrollable history of completed and failed downloads.

Keyboard: Tab to switch focus, ↑↓ to scroll, Ctrl-Q to cancel

⌨️ Keyboard-driven

Full keyboard navigation and shortcuts for efficient workflows without reaching for the mouse.

⚡ Skip the wizard

Provide all required arguments (podcast name/URL, search flag, optional output path and job count) to skip the wizard and start downloading immediately.

Quick start

Try the core commands in a few seconds.

Start with just a podcast name, or provide full arguments to skip the wizard.

🎯 Interactive mode (default)

Just provide a podcast name and let the wizard guide you through discovery, confirmation, and configuration.

podfetch "Darknet Diaries"

📡 Known RSS feed

Start with a direct feed URL to skip searching.

podfetch https://example.com/podcast.xml

🚀 All arguments provided (skip wizard)

Provide everything upfront and start downloading immediately without prompts.

podfetch --search "The Joe Rogan Experience" -j 10

📁 Custom output path

Use -o with placeholders like {podcast_name} or {podcast_author} to customize folder structure.

podfetch -o "~/Music/{podcast_name}" "My Podcast"