Self-hosted apps built with Kotlin

19 open-source, self-hostable apps written primarily in Kotlin.

Last reviewed Oct 11, 2026 · 586 words

The Kotlin bucket is two lists sharing a language. A handful of entries are JVM servers you run yourself, led by Komga for comics and manga. The larger half is Android apps (KeePassDX, DAVx5, Findroid, Jellyfin for Android TV) that make a self-hosted server usable from a phone or TV. Both halves are strong, and for most readers the Android clients will matter more day to day than the servers.

What Kotlin means for the person running it

On the server, Kotlin is a JVM language, so it behaves like Java: you need a Java runtime or a container that bundles one, startup takes a few seconds, and idle memory is set largely by heap settings. The directory estimates 512 MB for Komga and Gameyfin. Upgrades are clean in practice because the Kotlin servers here ship as Docker images; you pull a new tag and restart.

Reading and patching Kotlin is easier than its JVM cousin Scala. The syntax is compact and familiar to anyone who has seen Java, Swift or TypeScript, and Gradle builds are routine. Android clients also install as plain APKs, and several of these apps are on F-Droid, so you are not tied to Google Play.

The Kotlin servers worth hosting

AppWhat it doesDifficulty (directory)RAM estimate
KomgaComics, manga and e-book serverEasy512 MB
KomfMetadata fetcher for Komga and KavitaEasy256 MB
GameyfinGame library managerMedium512 MB
Jitsi VideobridgeVideo routing for JitsiHard512 MB
UncivCiv V remake with multiplayer serverEasy512 MB

Komga (about 6,700 stars, MIT) is the pick. It serves comics and manga with a clean web reader, good metadata handling and OPDS for reader apps, deploys with Docker, and the directory rates it Easy. The catalogue's one caveat is that it is less suited to plain prose e-books. Pair it with Komf to pull metadata from AniList, MangaUpdates and MyAnimeList automatically. If you are torn between the two big comic servers, the Kavita vs Komga comparison covers it.

Gameyfin scans a game library and gives it web access and downloads. Jitsi Videobridge is the selective forwarding unit behind Jitsi Meet: rated Hard, a component of a larger stack, and rarely deployed on its own. Unciv (about 11,400 stars) is a game first, but its multiplayer server is self-hostable and light.

Which Kotlin Android apps pair with a self-hosted server?

Most of the bucket answers this. DAVx5 syncs calendars and contacts from any CalDAV or CardDAV server, including Nextcloud, and is the standard way to do it on Android. KeePassDX opens KeePass database files you sync yourself. Findroid and Jellyfin for Android TV play from Jellyfin, Ultrasonic streams from Subsonic servers and Navidrome, and Feeder and Readrops cover RSS. The Home Assistant Companion entry is the official Android app side of Home Assistant. Every one of these is rated Easy.

Gitnuro is a desktop Git client, and Orchid, a static-site generator, is archived. The Apple-side equivalents of these clients are on the Swift page.

What I'd do

On the server, run Komga with Komf if you read comics or manga; the pair is the most polished Kotlin you can host. On every Android device in the house, install DAVx5 if you self-host calendars and Findroid if you run Jellyfin. Leave Jitsi Videobridge to the full Jitsi Meet deployment that already includes it.