# PodAura: a Compose Multiplatform podcast client with a downloader built in

> PodAura is a Kotlin podcast application that subscribes to RSS feeds, downloads enclosures automatically, and plays them through MPV, with the whole interface written in Compose Multiplatform so the same pages run on Android, iOS, macOS, and Windows. It follows the MVI architecture and uses Material You throughout.

**SkyD666/PodAura** — All-in-on podcast app for RSS, media dl & play. MVI arch, Material You style. ⭐️ Star to support!

- Repository: https://github.com/SkyD666/PodAura
- Stars: 1,275 · Forks: 42
- Language: Kotlin
- License: GPL-3.0
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/skyd666-podaura

## An acronym that describes the feature list

PodAura expands itself in the README as Podcasts Organized Diversely with Audio-Video Unification for Rich Access, and the project description is the plain version of the same thing: an all-in-one podcast app for RSS subscription and updates, media downloads, and playback, using the MVI architecture and the Material You style.

The feature list is where the scope becomes clear, and it is worth reading in order because it tells you what problem the app is organised around. You subscribe to RSS, update RSS, and read RSS. It automatically updates your RSS subscriptions. It downloads the enclosures, which are the enclosure tags in RSS articles, and it can automatically download podcast media. It plays media enclosures or downloaded videos, and it supports variable playback speed, audio track selection, and subtitle track selection.

The playback gestures are listed with a specificity that suggests they are the parts the author cares about. A double-finger gesture rotates and zooms the video, a long press speeds up playback, and a swipe on the video controls volume, brightness, and playback position.

The rest is a standard podcast client checklist with some additions: searching existing RSS subscription content, playing other videos on the phone, a custom MPV player, custom playlists, Android Picture in Picture, import and export of subscriptions via OPML, and dark mode.

The project is GPL-3.0 licensed, written in Kotlin, the default branch is master, and the last push to the repository was on 2026-10-15. The recent releases are numbered 31 with the parenthetical 3.3 from 2026-08-13, 30 with 3.2 from 2025-09-11, and 29 with 3.2-alpha02 from 2025-05-12, which is a version scheme with two independent counters in it.

## Compose Multiplatform, and what that buys

The architectural headline is that all pages are developed using Compose Multiplatform, and the platform badges confirm the reach: Android 7.0 and later, iOS, macOS, and Windows.

That is an unusual shape for a podcast app, because the desktop and mobile versions of a podcast client usually have very different ergonomics. A desktop player wants a resizable window and a keyboard. A phone wants a lock screen widget and a notification. Compose Multiplatform lets the same composable tree serve both, with platform-specific code underneath for the things that genuinely differ, such as the media session and the file picker.

The primary technology stack list gives the rest. MVI architecture and Compose Multiplatform are the two that shape the code. Kotlin Coroutines and Flow carry the data, and ViewModel is in the list as the holder of that state. DataStore handles preferences, WorkManager handles the background work of downloading episodes on a schedule, and DataStore plus Room 3 with Paging 3 cover persistence and lazy lists. Ktor is the HTTP client, Koin is the dependency injection, KSP is the annotation processor, Coil loads images, and JNA is there for the native media interface that mpv needs.

The choice of mpv as the player rather than a platform-native one is the most consequential decision in that list. It gives consistent playback behaviour on every platform, variable speed, and subtitle and audio track selection, but it means a native library is bundled and shipped with the application.

## The downloader is the feature, not an extra

The distinction PodAura draws between downloading enclosures and playing them is the thing that separates it from a plain feed reader.

An enclosure is the media file attached to an RSS item. A podcast client that only streams leaves you dependent on the publisher's server for every listen, and a client that downloads gives you an offline library. PodAura does both, and the automatic download option means episodes arrive without you pressing anything.

The repository layout reflects that the downloader is a substantial part of the project rather than a feature flag. There is a downloader/ directory at the top level, alongside shared/, platform/, ksp/, and htmlrender/. The htmlrender/ directory is for rendering HTML, which is what podcast show notes need, since a feed's description field is usually a fragment of HTML with markup and sometimes embedded media. There is also a doc/ directory and a scripts/ directory.

The background work is done with WorkManager, which is the Android scheduler, and that is worth noting because it is one of the places where a multiplatform app has to make a choice. A scheduled download on Android uses WorkManager so it survives the app being killed, while the other platforms need their own scheduling arrangement.

The build is a Gradle Kotlin DSL project with build.gradle.kts, settings.gradle.kts, a buildSrc/ directory, and gradle.properties, plus a crowddin.yml for translations and fastlane/ for release automation, with signing.example.properties showing that signing is configured per build rather than committed.

## Distribution, and a package id that does not match the name

The project is on F-Droid, and the store badge links to the package com.skyd.anivu, which does not match the PodAura name. That is a leftover from an earlier name, and it is the kind of detail worth knowing before you search for it in a launcher or a package list.

It is also on the Microsoft Store, with a link for the Windows build, and the GitHub releases page carries the downloadable builds. The F-Droid listing is a F-Droid index entry rather than an APK in the repository, and the badge points at the f-droid.org package page.

The release numbers in the manifest are a separate matter. The GitHub releases are named 31, 30, and 29, with the application version in parentheses, so release 31 is version 3.3. The application version is what appears in the app, and the release number is what the CI increments, so the two drift apart independently.

For translation, the project uses Crowdin, with a crowdin.yml in the repository and a link to the Crowdin project, plus a badge showing the localisation state. The README asks for help translating, and the Fastlane configuration handles the store metadata for each platform.

## The broader project, and what the author ships next

The README ends with a table of other works, which is worth reading because it tells you what kind of developer this is and how the projects relate.

The first entry is Rays, described as a tool to record, search, and manage stickers on your phone, with the framing that if you are still struggling with too many stickers on your phone and having trouble finding the ones you want, this tool will help you manage them. The author has a Telegram channel and a Discord server linked from the badge row, and the release workflow has a pre_release.yml file, which is consistent with shipping a stable and a pre-release track at the same time.

There is also a file at the top of the repository called FULL_CONTENT_EXTRACTION_PLAN.md, which is a planning document for a feature rather than shipped code.

The one thing the README does not do is describe a minimum Android version for the store builds beyond the badge that says Android 7.0 and later, and it does not list the exact dependency versions, so someone who wants to build from source has more to work out. The wiki and the Telegram channel are the places to ask.

For anyone evaluating it, the honest summary is that this is a well-featured, actively developed, multiplatform podcast client with a strong local download story, distributed through F-Droid, the Microsoft Store, and GitHub releases, and built on a modern Kotlin and Compose stack that its author is clearly comfortable with.

## Conclusion

Adopt PodAura if you want a podcast client that downloads episodes locally, plays them with MPV, and runs on more than Android from one codebase. Do not adopt it if you need a stable, long-settled release, because the version numbering and the alpha tags suggest a project still moving quickly. Verify first that the F-Droid build and the platform you care about are both current, since the project ships on several channels at once.

## FAQ

### What is PodAura and what does it do?

It is an all-in-one podcast app for RSS subscription and updates, media downloads and playback, using the MVI architecture and the Material You design style, with all pages developed in Compose Multiplatform so it runs on Android, iOS, macOS, and Windows.

### Does PodAura download podcast episodes?

Yes. It downloads the enclosures, which are the enclosure tags in RSS articles, and it can automatically download podcast media. It then plays either the media enclosures or the downloaded videos, with variable playback speed, audio track and subtitle track selection, and custom MPV player support.

### What is the primary technology stack of PodAura?

MVI architecture, Compose Multiplatform, Kotlin Coroutines and Flow, Material You, ViewModel, Room 3, Paging 3, Ktor, Koin, MPV, WorkManager, DataStore, KSP, Splash Screen, Navigation, Coil, and JNA.

### Where can I download PodAura?

It is on F-Droid under the package id com.skyd.anivu, on the Microsoft Store for Windows, and on the GitHub releases page. The project also has a pre-release workflow, so stable and testing builds are published in parallel.

### How does PodAura handle translation?

Translation runs through Crowdin, with a crowdin.yml in the repository and a badge showing the localisation status. The README asks for help translating, and Fastlane handles store metadata for each platform.

## Sources

- [Issues](https://github.com/SkyD666/PodAura/issues)
- [License: GPL-3.0](https://github.com/SkyD666/PodAura/blob/master/LICENSE)
- [README](https://github.com/SkyD666/PodAura/blob/master/README.md)
- [Releases](https://github.com/SkyD666/PodAura/releases)
- [SkyD666/PodAura on GitHub](https://github.com/SkyD666/PodAura)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/skyd666-podaura
