youndie@kotlin.website:~$ whoami

pavel votyakov

kotlin developer · 14 years of mobile and backend

Most of what's here is infrastructure I needed and couldn't find in the right size — a crash tracker that fits on one box, logs a coding agent queries over MCP instead of being handed a dashboard link, a saga engine that survives the process dying halfway through.

Kotlin as far as it will go: Ktor services on the JVM, native Linux binaries with nothing to install underneath them, Compose Multiplatform on the desktop, KMP libraries published for all three. Several of them run on my own cluster, and where something claims a number the methodology is in the repository next to it.

Day job is leading Android on a Kotlin Multiplatform banking app.

libraries

11 repos

Most of them publish to my own Reposilite at reposilite.kotlin.website; tracy, katcher and metrik also ship container images on ghcr. Everything is MIT.

tracy
Logs for Ktor services, shaped for a coding agent to read. One native binary and one SQLite file — no JVM, no Elasticsearch, no shipper. MCP is the primary read path, so the agent asks for the trace instead of being handed a dashboard link.
kotlin/native + jvmktorsqlitemcp
booblik
A message broker on an append-only log: topics into partitions, partitions into segments, and an offset the consumer keeps itself. No quorum and no coordinator — everything that makes a log fast is reproduced and measured on two rented machines.
jvmlog storagezero-copyffm
petich
Distributed saga engine built around one question: what is left in the system if you die halfway. Steps as interceptors, compensation in reverse order, sagas that pause for a human and resume on a later request, and an outbox written in the same transaction as the state change.
jvmktorexposedpostgres
metrik
Monitoring for Ktor services in one native binary. The agent costs 106 nanoseconds per request and a UDP packet a minute; percentiles are merged across instances rather than averaged, and every chart carries the deploy markers that explain it.
kotlin/nativektorcomposemcp
katcher
Self-hosted crash tracker for Kotlin: native binary, HTMX UI, embedded SQLite, and login delegated to whatever proxy already sits in front. Small enough that nobody has to justify running it.
kotlin/nativehtmxsqlite
mongkn
MongoDB for Kotlin/Native, where no official driver exists. A cinterop binding over libmongoc behind the shape of the coroutine driver's API — transactions, change streams, and read overhead indistinguishable from bare C.
kotlin/nativecinteropmongodb
smtpkn
SMTP written from RFC 5321 rather than around it, so a service can send mail with no JVM in sight. TLS with the certificate chain actually verified, seven SASL mechanisms, and a partial refusal returned as a result instead of an exception.
kotlin/nativeopensslrfc 5321
viddik
Screenshot testing for Compose Multiplatform that renders through a real Compose Desktop window instead of LayoutLib. One annotation buys a golden-file test and a live entry in a component browser; no emulator, and goldens stay portable across macOS, Linux and Windows.
compose multiplatformksptesting
telek
Telegram bots as a finite state machine rather than a pile of callbacks. Pure transitions, effects on the side, two transports to pick from, published for the JVM and for native Linux so a bot can ship as one binary.
kmp: jvm + linuxtelegramfsm
appframe
A window frame for Compose Desktop that behaves like the platform it runs on: traffic lights on macOS, Windows 11 button metrics, and on Linux the GTK button-layout setting asked directly rather than guessed.
compose desktopui
mani
A budget planner written end to end in Kotlin: Compose clients for Android, iOS, desktop and the browser, and a Ktor server that compiles both to the JVM and to a native Linux binary. A demo on purpose — it exists to show the whole stack working at once.
kmpcomposektordemo