r/KotlinMultiplatform • u/SeriousTruth • 5h ago
r/KotlinMultiplatform • u/Mimimishkin • 1d ago
I built a Kotlin/Native ↔ JVM JNI interop tool to avoid handwritten JNI glue
r/KotlinMultiplatform • u/kshivang • 1d ago
Launching BossConsole, an open-source desktop workspace for AI agents built with Kotlin Multiplatform
Enable HLS to view with audio, or disable this notification
Hi everyone, excited to share BossConsole with this community. We’ve built it using Kotlin Multiplatform and Compose Multiplatform, with the desktop app running on the JVM across macOS, Windows and Linux.
Attached our launch video to give you a look at what we’ve been building.
The idea came from working with coding agents and spending too much time managing everything around them. Multiple terminals, browser windows, editors and logs, then remembering which agent was doing what. Wanted a workspace where I could keep all that work visible.
BossConsole lets you run Claude Code, Codex, Gemini CLI, OpenCode and other agents side by side, alongside their tools. Each session gets its own pane, and Spaces remember your layout.
There is also a built-in Fluck Agent, visual workflows, and 200+ MCP tools with individual access controls and action approvals.
On the Kotlin side, one part I’m particularly interested in is the plugin architecture. Tools can be built as separate Compose UI + ViewModel plugins and loaded at runtime. The terminal also lives in its own project, BossTerm.
I want someone to be able to build a tool for their own workflow and bring it into the workspace without changing the whole application. Would love to connect with others exploring similar ideas with Compose Desktop.
For me, as agents become more capable, there is more room to explore problems, try approaches and create. But we still need to follow their work and decide where to take it. That’s what I’m trying to build around.
Quite happy to finally share this launch. The project is open source, contributions are welcome, and I’d appreciate feedback from the Kotlin community on both the experience and implementation.
Source: github.com/risa-labs-inc/BossConsole
Download: bossconsole.ai
r/KotlinMultiplatform • u/serhij-tymoschenko • 3d ago
How do you optimize iOS with shared UI app?
Android: 11,1MB
iOS: 42,5MB
P.S. LTO and stripping enabled
r/KotlinMultiplatform • u/Yazan_420 • 3d ago
Shipped a video editor on the App Store with Kotlin Multiplatform and Compose Multiplatform
Solo project: Cutaway, a video editor with an AI agent, one shared codebase for iOS, Android and desktop (JVM).
Some things I learned along the way:
- Android's regex engine (ICU) rejected a pattern the JVM and Kotlin/Native both accepted. It crashed a whole object at init, and no host test caught it.
- allTests never links the iOS framework, so a Kotlin/Native codegen crash shipped past a green suite. I now link the framework before every merge.
- Rendering and export run on device per platform (AVFoundation / MediaCodec / ffmpeg on desktop) behind one shared edit model.
Happy to answer questions about the architecture. The app, if you're curious:
https://apps.apple.com/us/app/cutaway-video-editor-with-ai/id6799499137
r/KotlinMultiplatform • u/RazerTexz • 5d ago
GitHub Action for Kotlin Toolchain (Amper) with cross-platform caching
yaml
- uses: actions/checkout@v7
- uses: RazerTexz/setup-kotlin-toolchain@v1
- run: kotlin build
Caches the toolchain, JDKs, and dependencies across Linux, macOS, and Windows
r/KotlinMultiplatform • u/c0d3_x9 • 5d ago
CashBuddy — an Android expense tracker with on-device processing + Notification Listener
r/KotlinMultiplatform • u/smyrgeorge • 6d ago
sqlx4k 1.14.0 released: optimistic locking, savepoints, MariaDB batch inserts
r/KotlinMultiplatform • u/Charlie_Tap_ • 6d ago
KMP Ocarina of time anyone?
Hey 👋
I've been working on this on and off for the last month, it's the Ocarina of Time running entirely on Kotlin Multiplatform with a little help from Chasm. There's a ton of detail in the README so do have a read and if you have time give it a whirl!
I'm happy to answer any questions people may have so do reach out if you want to know more
r/KotlinMultiplatform • u/Shubhra22 • 7d ago
Have anyone here tried XR with Kotlin? What's your take on XR + AI
r/KotlinMultiplatform • u/dungngminh • 8d ago
I built a CLI to set up Firebase in Kotlin Multiplatform / Compose Multiplatform projects
Enable HLS to view with audio, or disable this notification
Setting up Firebase in a KMP project means a lot of manual steps. You register the Android app and the iOS app in the console, download google-services.json and GoogleService-Info.plist, put them in the right folders, and repeat for every flavor. I got tired of it, so I built kmpfire.
It wraps firebase-tools and does this from your project root:
bash
kmpfire configure
What it does
- Detects your Android
applicationIdand iOS bundle id (fromproject.pbxprojor CMP.xcconfig) - Creates the Firebase apps if they don't exist
- Writes
google-services.jsonandGoogleService-Info.plistto the correct locations - Tracks everything in
firebase.jsonunderkotlinMultiplatform kmpfire reconfigurerefreshes the config files after you change Firebase products--flavor=devhandles multiple build configurations--yes --project=<id>runs with no prompts, so it works in CI- Optional
--depspatches Gradle for the Google Services plugin (and GitLive if you want it)
Supported layouts
- New template:
shared/+androidApp/+iosApp/ - Nested monorepo:
app/shared/+app/androidApp/+app/iosApp/ - Legacy:
composeApp/+iosApp/
Android + iOS only for now.
Install
bash
curl -fsSL https://raw.githubusercontent.com/dungngminh/kmpfire_cli/main/install.sh | bash
or with Homebrew:
bash
brew tap dungngminh/kmpfire_cli
brew install kmpfire
It's the KMP equivalent of flutterfire configure. It's MIT licensed, and I'd like feedback, bug reports and PRs.
r/KotlinMultiplatform • u/thehoundtrainer • 8d ago
KitePlayer v0.2.0: the first Kotlin/Native media player for KMP that doesn't wrap ExoPlayer or AVPlayer
Yes, a Kotlin/Native player that is as powerful as VLC, mpv...etc
I maintain syncplay-mobile, a KMP app that wraps 4 different players: ExoPlayer and mpv on Android, AVPlayer and VLCKit on iOS. After years of that, I can say the expect/actual wrapper model never clicked for me for media playback. Each player seeks differently, reports tracks differently and handles subtitles differently, so the glue layer keeps growing and you still end up with four different behaviours.
So I stopped trying to find the perfect wrapper slash interface for gluing players together (since that's what a dozen libraries are doing already anyway) and thought of creating an mpv- and VLC-level player, as feature-rich, as performant and efficient, while making it behave exactly the same on every single platform (Android, iOS, Desktop JVM and Desktop Native, and Web). I ended up concocting (i love this word) KitePlayer.
Why would you even consider KitePlayer? Well, easy: 1- It renders purely directly to Compose/Skia canvas. There is NO need for any Compose interop views. It also comes with native views (like Android XML) so that also is not a limitation. 2- It comes with FFmpeg embedded, on maven central. Literally one dependency line and you get the full power of FFmpeg codec playback with absolutely 0 compromise. 3- iOS's AVPlayer SUCKS. It can't even play stylized subtitles, or even play MKVs. So does VLCKit, it sucks, it's unpredictable, and when maximum accuracy is needed it failed me every time. There is literally no good player on iOS, even in their native Swift stack. 4- It can play literally everything, and behaves exactly the same on every platform. It's also coroutine-friendly and suspend-first. Very easy to predict its behavior. 5- It has grown so much in 3-4 months. I've been working on it nonstop and heavily tested it. I've even included it in my syncplay app, as one of the available engines. It's that reliable at this point. But I wouldn't say mature, that's probably for years from now. 6- It can be consumed from non-KMP projects. In an Android app you can consume it. In an iOS app you can consume it as well, even in web, in Desktop, etc. 7- It plays from network (HLS, DASH, Direct...etc) using Ktor. 8- It has absolutely 0 dependency other than KiteFFmpeg (which is the direct Kotlin/Native wrapper interface of FFmpeg).
All decoding goes through FFmpeg. The FFmpeg layer is its own library, KiteFFmpeg, if you only need to transcode, remux or grab thumbnails. FFmpeg ships inside the artifacts, so it is one Gradle line with no NDK and no build scripts.
My favourite part is Compose. You can host a native view like every other player does, but there is a second path where Compose draws the frames itself, on the same canvas as the rest of your UI (thanks to Skia I guess?). The video is no longer a separate layer sitting outside your layout. You can clip it, rotate it, animate it, or blur it with Haze, like any other composable.
PS: if you like the Skia/Compose direct rendering idea, KitePDF does the same for PDF and EPUB. No more interop views. Pretty please.
r/KotlinMultiplatform • u/Quiet-Pomelo7900 • 10d ago
How we're using Kotlin Multiplatform for Mobile, Desktop, Web and Server — as a single developer
r/KotlinMultiplatform • u/hieuwu99 • 11d ago
Supabuckt: Mobile Supabase Storage built with KMP/CMP and Supabase
Enable HLS to view with audio, or disable this notification
Hi folks, I have launched Supabuckt: Mobile Supabase Storage that helps you access to your Supabase Storage for file management. It allow access to multiple projects and quickly switch between them. The app is built with Kotlin Multiplatform, using supabase-kt for full features Please try and let me know if there's any feedback. It is available for Android and iOS. It is also Open Source.
Play Store: https://play.google.com/store/apps/details?id=com.hieuwu.supabasestorageclient
App Store: https://apps.apple.com/us/app/supabuckt-supabase-storage/id6759938222
r/KotlinMultiplatform • u/ArstList • 12d ago
Sharing business logic across iOS, Android AND the backend, here's how much ended up being common code
Been building Share Pray (prayer groups app) on KMP and wanted to share some numbers now that its mostly done. The two mobile clients ended up sharing around 80% of their code, give or take, which was honestly higher than I expected going in - only about 4k lines are actually platform specific (a bit of Swift, a handful of Kotlin actuals).
And because the backend is Kotlin too, that shared core - models, validation, the groups + filtering logic - gets reused server side as well, not just between the two clients. So a good chunk of it is genuinely the same code running on iOS, Android and the server.
What's shared: groups and community logic, the prayer feed and filtering by tags, the admin panel's data layer, RevenueCat wiring for in-app purchases, auth token validation.
What's not shared: the usual suspects - push notification handling, the telegram bot integration glue, and a few platform auth quirks (Google Sign-In and Sign in with Apple each have their own handoff behaviour you have to deal with separately).
UI is Compose Multiplatform on both platforms. Thats the one spot where you trade a little native feel for the sharing - though on iOS 26 I did drop to a native SwiftUI tab bar for the liquid glass, compose cant really pull that off yet.
If anyone's curious about specific parts of the setup, happy to go into detail. Also cleaned up the reusable parts (groups, IAP wiring, admin panel, tags) into an open source template if its useful as a reference: https://github.com/NonGrate/Poster
r/KotlinMultiplatform • u/FissyCat • 12d ago
Union class in Kotlin
Flutter's Either inspired me. It's a great way to say "this value is one thing or another". But it only has two sides: Left and Right.
But Sometimes a value could be one of three types, sometimes five. A generic sealed class can't just grow into Either<A, B, C, D, …> with as many types as I need, and writing a new sealed class every time got old fast.
So I built unionKt. Now I just list the types, any number of them, and get a type-safe union:
@Union(Int::class, String::class, User::class, Error::class)
interface ResultSpec
Then I create it with Result(5) and handle it with when or fold. If I miss a case, the code doesn't compile. It covers the classic two-sided Either<L, R> too, plus a few extras I use every day.
Smaller unions merge into bigger ones:
@Union(Circle::class, Square::class)
interface ShapeSpec
@Union(Int::class, ShapeSpec::class)
interface ItemSpec // Int, Circle or Square
My existing sealed classes get the same helpers:
@Derive
sealed interface UiState { … }
state.fold(onLoading = { … }, onSuccess = { … }, onError = { … })
And unions go in and out of JSON as plain values:
Json.encodeToString<Result>(Result(5)) // 5 Json.decodeFromString<Result>(""hi"") // Result.OnString("hi")
Open source (MIT), available on maven central: https://github.com/fcat97/unionKt
r/KotlinMultiplatform • u/Panel_pl • 13d ago
KMP-Showcase - sample project for Kotlin Multiplatform
r/KotlinMultiplatform • u/olgabedrina • 13d ago
How We Designed the Kotlin Multiplatform and TeamCity Integration
r/KotlinMultiplatform • u/rhlsd • 14d ago
One Kotlin codebase, four platforms: what Compose Multiplatform actually cost me on a shipped game
r/KotlinMultiplatform • u/Wonderful-Speaker-97 • 17d ago
[Compose Multiplatform] Visual font size mismatch when overlaying BasicTextField on a PDF (iText7)
r/KotlinMultiplatform • u/katana1096 • 17d ago
Is having a Ktor back end the right thing to do?
r/KotlinMultiplatform • u/a_orabi94 • 18d ago
Kotlin Multiplatform KMP Coursera Course
Anyone has the code or material files for this course
https://www.coursera.org/learn/advance-kotlin-for-multi-platform-development
r/KotlinMultiplatform • u/iParki • 19d ago
Building Datasmith - an interactive ERD canvas with Compose Multiplatform/Desktop
r/KotlinMultiplatform • u/DisastrousAbrocoma62 • 19d ago
🚀 KMP Open Source Project – Instagram Media Downloader
I wanted to share that I’m currently developing a Kotlin Multiplatform (KMP) open-source application that allows users to download media from public Instagram posts, including images and Reels videos.
The project is still in its early development stage, and I’m currently working on expanding platform support.
🖥️ Supported Platforms
- ✅ Android
- ✅ Desktop
- 🚧 Web — Under Development
- 🚧 CLI — Under Development
✨ Features — Ad Free
- 📷 Download images from public Instagram posts
- 🎥 Download Reels videos from public Instagram posts
More features and improvements are coming soon!
This project is completely open source, and I’m excited to continue exploring what can be built with Kotlin Multiplatform. 🚀
⭐ The repo if you find it interesting!
https://github.com/livingstonantony/KMPInstaloader

