Model or dataset
ssalggnikool/Navic avatar
ssalggnikool/Navic

Navic: an Android client for self-hosted (Open)Subsonic music servers

Subsonic music streaming app for Android

1,154 stars104 forksKotlinGPL-3.0

At a glance

What is it?
Navic is a Kotlin Android app for streaming from a music server you run yourself, and it is explicit about which of its features need an OpenSubsonic-compatible server rather than the older Subsonic API. The interesting engineering is the offline-first behaviour and the plugin-like set of server-side features, and the caveat is that the project is still shipping alpha builds.
Who is it for?
Navic suits a listener who already runs Navidrome, LMS, gonic or Subsonic and wants a good Android player for that library, especially one that keeps working on a train with no signal. It does not suit someone who wants a catalogue they did not upload, a team that needs a stable 1.0 build, or a distributor who cannot meet the GPL-3.0 source obligations.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Navic is for, and the server it expects behind it

Navic is a music streaming client for Android that talks to a server you host yourself. The repository describes it as "A modern (Open)Subsonic music streaming app for Android", written in Kotlin, and the topic tags confirm the shape of the project: android, kotlin, material3, opensubsonic, subsonic.

That framing decides who the app is for. A listener with a personal library, a self-hosted server and a preference for owning their data is the target. The app is not a catalogue, so there is nothing to open it for if you do not already have a server running. The README names four of them explicitly: LMS, gonic, Navidrome and Subsonic itself, and notes that there are countless guides for setting one up.

The protocol split is the part that matters most, and the README handles it with a footnote. Subsonic is the older API, OpenSubsonic is the extended version of it. Several headline features carry an asterisk, and the footnote says those "may need an OpenSubsonic-compatible server to work fully". In practice that means a plain Subsonic server gives you a working player with a smaller feature set, while an OpenSubsonic server gives you the extras.

The deployment model is also unusual for a music app. The README links downloads on navic.app, an Obtainium badge, a direct APK or IPA download, and IzzyOnDroid. Obtainium in particular is a tool for pulling app releases straight from a Git repository, and the README's Obtainium link spells out the configuration for it, including the app id paige.navic and prerelease inclusion. This is a sideloading-first distribution model, not a store model, and that has consequences for anyone who wants an app managed by a store's update system.

How Navic reaches the server, and what the asterisks cost you

The data flow is the familiar Subsonic one: the app authenticates against a server, pulls the library index, and streams or transcodes tracks over HTTP as the user plays them. What is unusual is the set of capabilities layered on top.

The feature list names an equaliser, ReplayGain, transcoding, multiple lyric providers with word-by-word lyrics, internet radio stations, home screen widgets, share links to music, and Android Auto control. The asterisks in the README fall on ReplayGain, transcoding and word-by-word lyrics, and the footnote says those may need an OpenSubsonic-compatible server to work fully. That is a precise statement about where the negotiation happens: the app asks the server for a variant of the file, and only a server that understands the extension can produce it.

For a listener, that translates into a practical rule. If your server is old Subsonic only, you should expect playback, browsing and search to work, and you should expect to be missing volume normalisation, server-side format conversion and synchronised lyrics. This is a server-side computation boundary, not a client limitation, and it is one of the more pleasant things about the Subsonic ecosystem: the app is thin and the server does the work.

Offline behaviour is the second mechanism worth understanding. The README states that Navic can access the library offline and scrobble offline. That means the app keeps a local copy of the library index, and that listening activity is queued locally and submitted when the server is reachable. Offline scrobbling matters more than it sounds, because scrobble counts feed listening statistics, and a player that drops them on a flaky connection quietly corrupts the data a user cares about most.

Installing Navic and pointing it at your server

The README does not give shell commands, and it does not need to. Installation is a set of web routes, all listed under the downloads page at navic.app/downloads.

The quickest path for most people is Obtainium, which pulls releases directly from the repository and keeps them updated. The configuration the README publishes identifies the app as paige.navic, sourced from the GitHub repository, with prereleases included, fallback to older releases enabled, and the asset filter restricted to Navic.apk.

The identifiers that matter when you install outside a store are the application id and the index path:

bash
paige.navic
https://apt.izzysoft.de/fdroid/index/apk/paige.navic

The other routes are a direct download of the APK or IPA from the latest release, and the downloads page at navic.app/downloads, which lists every supported method.

One warning belongs in any install guide for this app. The README says Play Protect may falsely flag Navic and links a discussion in the repository about it. That is the expected friction of a sideloaded app that is not distributed through a store, and it is worth reading that discussion before deciding to disable anything on your device.

The first real use is short. Open the app, log into a supported (Open)Subsonic server, and your library appears. There is no separate local library to import and no account to create beyond the server credentials, because the server is the account. If the library list comes back empty, the problem is on the server side or in the credentials, not in the app.

For anyone intending to modify the app, the repository layout gives the build story: a Gradle project with build.gradle.kts, settings.gradle.kts, the gradlew and gradlew.bat wrapper scripts, an app/ module, a fastlane/ directory for release automation, and a .gitmodules file with an androidx-media entry. The README does not document a build command, so anyone compiling from source is working from the standard Gradle wrapper conventions without a written guide.

A Material 3 app that treats the player as the product

The README does not hide its opinion about player apps. The first bullet in the feature list calls the interface "actually decent UI (unlike a lot of players)" with Material 3 Expressive design, and the screenshot table leads with the library, player, lyrics and albums views.

The customisation claim is the second bullet, and it is a strong one: "almost everything is a setting". Combined with the equaliser, the lyrics providers and the radio station support, that describes an app where the difference between two users' Navic installations is configuration rather than a different build.

Two smaller claims deserve to be read literally. The app is described as lightweight, "fast and small (~10MB)", and it is said to support older devices and most Subsonic servers. Both of those are design commitments with consequences. Ten megabytes means a Kotlin app with a Compose-style modern UI that has not accumulated large media assets, and older-device support is the reason the app is not gated on a recent API level.

The share-music feature and the home widgets are the parts that show a broader ambition. A home screen widget that shows library state without opening the app, and a share sheet that hands a friend a link to a track, both push the app from being a local player towards being a front end for a shared library. The README describes the internet radio support as streaming stations and adding them, which is the same idea taken one step further, from files you own to streams you subscribe to.

Codeberg hosting, GPL-3.0, and a fast-moving alpha train

Two hosting references appear in the README. The branding assets, the screenshots and the translation widget are served from codeberg.org under the Navic organisation, and the Codeberg badge points at codeberg.org/paige/Navic. The application code, the Obtainium link and the Play Protect discussion point at github.com/ssalggnikool/Navic. The project is therefore visible in two places, and a reader who only checks one of them will miss part of the picture.

The release history shows the pace. The recent releases are v1.0.0-alpha57 on 2026-09-18, v1.0.0-alpha58 on 2026-09-18, and v1.0.0-alpha59 on 2026-09-21. Three builds in four days, all under the 1.0.0 umbrella, and the version string has not left the alpha range. The last push was on 2026-10-15, so the work is ongoing, and the Obtainium configuration explicitly includes prereleases, which is the right setting for that cadence.

The licence is GPL-3.0. For a user, that means the app is free to run and to modify. For anyone who wants to ship a build, it means the GPL's obligations attach to the distributed work, and the source of the modified version has to be made available. That is the same arrangement any GPL project carries, and it is the reason the repository is public in the first place. It also means the Obtainium and IzzyOnDroid channels fit the licence naturally, since both distribute the project as published rather than as a proprietary derivative.

Translation happens on Weblate, with the translation status widget embedded in the README. That is a mature arrangement for a project of this size, and it is also a source of the sort of small, many-hands changes that make a build's behaviour depend on the exact release you installed. Pinning a specific alpha is more sensible here than tracking the newest one.

Where Navic is the wrong tool

The clearest case is the listener without a server. Navic is a client, so a subscription streaming service or a plain local file library solves a different problem better. The README's own instruction, to set up one of the (Open)Subsonic servers first, is really the adoption prerequisite, and it is a server administration project before it is an app installation.

The second case is anyone who needs a stable, store-managed build. There is no 1.0 release, the Obtainium configuration tracks prereleases, and the only store channel in the README is the IzzyOnDroid index. An alpha train that ships several builds a week is fine for a self-hosting enthusiast who reads release notes and a poor fit for a family member's phone, where the person responsible for updates does not want to think about it.

The third case is distribution of a modified build under any obligation the GPL-3.0 licence creates. Personal use, patches, and self-built APKs for your own device are unremarkable. Shipping a fork to other people means providing the corresponding source, which is a process and a legal question rather than a technical one, and it is worth routing through whoever handles that in an organisation.

The alternative to Navic is not another Android player so much as a different place to put the library. Hosting the server yourself, with Navidrome or gonic behind it, keeps the music on your own storage and lets any client, including the desktop ones, reach the same catalogue, whereas a commercial streaming service removes the server administration entirely at the cost of the catalogue and of the offline ownership model. On the client side, the choice is between an app that updates itself from the repository and one distributed through the Play Store with staged rollouts, and the deciding factor is how much you want to control when the build changes under you.

Editorial conclusion

Navic suits a listener who already runs Navidrome, LMS, gonic or Subsonic and wants a good Android player for that library, especially one that keeps working on a train with no signal. It does not suit someone who wants a catalogue they did not upload, a team that needs a stable 1.0 build, or a distributor who cannot meet the GPL-3.0 source obligations. Verify first that your server answers the OpenSubsonic extensions you care about, because transcoding, ReplayGain and word-by-word lyrics are marked as needing them, then install the v1.0.0-alpha59 build and check that offline scrobbling syncs back once the server is reachable again.

Frequently asked questions

Which servers does Navic work with?

Navic works with (Open)Subsonic servers, and the README names LMS, gonic, Navidrome and Subsonic itself. Features marked with an asterisk, including ReplayGain, transcoding and word-by-word lyrics, may need an OpenSubsonic-compatible server to work fully.

How do I install Navic on Android?

The README points to the downloads page at navic.app/downloads, which lists the supported methods: a direct APK or IPA download from the latest release, Obtainium with the app id paige.navic, and the IzzyOnDroid index. The README also warns that Play Protect may falsely flag Navic and links a discussion about it.

Can Navic play my library and scrobble without a connection?

Yes. The feature list states that Navic can access the library offline and scrobble offline, so the library index is kept locally and listening activity is queued until the server is reachable again.

Is Navic stable yet and what licence is it under?

The recent releases are all in the 1.0.0 alpha range, with v1.0.0-alpha59 published on 2026-09-21 and the last push on 2026-10-15. Navic is licensed under GPL-3.0, so modified builds that you distribute carry the GPL's source availability obligations.

Official sources

  1. License: GPL-3.0
  2. Project website
  3. README
  4. Releases
  5. ssalggnikool/Navic on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ssalggnikool-navic.svg)](https://hysenlabs.com/projects/ssalggnikool-navic)

Was this useful?