Menu-bar apps, desktop software and developer tools, built in Kotlin and Swift and shipped end to end. Every one runs on your own hardware and stays yours once you have it.
Scope, ownership, licensing — answered before you email.
What kind of work do you take on?
Kotlin Multiplatform apps that ship on both iOS and Android, Compose Multiplatform for the shared UI, SDK and library development, and the CI, signing and release plumbing underneath. We do not take on web front-ends, brand and marketing design, or staff augmentation by the seat.
How does a project start?
Send a short description of what you are building and roughly when you need it. You get a reply from the person who would do the work, not a sales desk, then a call to pin the scope down, then a written plan with milestones before anything is committed.
Fixed scope or ongoing?
Both. A defined deliverable — an SDK, a KMP module, a release pipeline — is quoted as a fixed scope with milestones. Longer product work runs as a rolling monthly engagement you can end at the close of any month. Cost depends on scope, so it is quoted after the scoping call rather than off a day-rate card.
Who owns the code, and when?
You do, and from the first commit rather than at the end. Work lands in your repository as it is written, on your CI, with signing keys and store accounts in your name — so there is no handover event, no escrow, and nothing the studio keeps a key to. Copyright in everything written for the project transfers to you on payment for that milestone; if we walk away mid-project you still hold every line already paid for.
What licences will we inherit with it?
Only ones you can live with, and you see the list before you own it. Dependencies are permissive by default — MIT, Apache-2.0, BSD — and anything copyleft that would reach a shipped binary is raised for your decision before it goes in, not discovered at review. Every build emits an attribution file listing each dependency, version and licence, generated from the lockfile on CI so it cannot drift from what actually ships. Where the studio reuses one of its own internal libraries, it comes to you under MIT: no component you licence back, and no dependency on us staying in business.
Can you work inside our existing codebase and team?
Yes. Kotlin Multiplatform and Compose Multiplatform land alongside your existing native code — shared modules first, CMP screens where you want them — so the app ships throughout rather than waiting on a rewrite. We work to your review and testing standards and hand over code your own team can maintain.
Why should we believe any of this?
Because you can check it before you email. Every product on this page is a download away and the developer tools are MIT on GitHub, so how we structure a project, handle failure and treat someone else’s data is readable in public — which is not true of a case study PDF.
Client work, in Kotlin.
Kotlin Multiplatform apps for iOS and Android, Compose Multiplatform for the UI, and the SDK and release work underneath.
KMP apps — iOS & Android
One Kotlin codebase, two native apps — shared logic, native where it counts.
Compose Multiplatform
A single UI codebase shipped across iOS, Android and desktop.
SDK development
Public Kotlin APIs, integration docs and DX for the teams embedding you.
Release engineering
GitHub Actions, signing and staged rollouts — the checks that stop bad builds shipping.
Work with us
Have something to build? Let’s talk.
Tell us what you are building and roughly when you need it. No pricing pages and no discovery deck — a reply from the person who would do the work.
That did not look complete — check the email address, and give the brief a sentence or two.
That is a few messages in quick succession. Give it a minute and try once more.
The form is under unusual load right now. Please try again shortly.
That submission did not come from this page. Please fill the form in again here.
That submission was malformed. Please fill the form in again here.
That message was too large to accept. Please shorten it and try again.
That submission could not be read. Please fill the form in again here.
The anti-spam check did not pass. Please try once more.
Something broke on our side and the message was not saved. Please try again, or reach out on LinkedIn below.