The tools we use

Open-source Kotlin libraries for dependency injection, serialization, reactive state, SPAs, server frameworks, and database access. We built them for our own projects — and you can use them too.

Started as one library. Things got a little out of hand.

General Tools

Kotlin multiplatform libraries that work anywhere.

Kontainer

Lightweight dependency injection

A DI container built around per-request scoping. Fresh containers per unit of work, dynamic services, and validated dependency graphs.

“Yes, we know there are other DI containers.”

Slumber

Kotlin-first serialization

Serialization that understands nullable types, default values, and sealed classes without annotation clutter.

“Lets your objects fall asleep.”

Mutator

Modify immutable data structures

KSP-generated code that lets you modify deeply nested immutable data structures with simple property assignments.

“Because copy()-hell makes developers yell.”

Streams

Reactive values

A lightweight reactive streams library for Kotlin Multiplatform. Always-has-a-value semantics, lazy subscriptions, and composable operators.

“Like RxJS, but smaller. Much, much smaller.”

Datetime

Multiplatform date and time

Date, time, timezone, and range types for Kotlin Multiplatform. Built on kotlinx-datetime with rich arithmetic, formatting, and a testable clock.

“Because kotlinx-datetime is a foundation, not a toolkit.”

Cache

In-memory caching

A coroutine-based cache with pluggable eviction: TTL, max entries, or max memory. Thread-safe, multiplatform, and allocation-aware.

“It remembers things so you don't have to.”

Maths

Easing functions and distributions

28 easing functions (In, Out, InOut) with range binding and time-based animation. Four probability distributions with inverse-CDF sampling and combinators.

“Math is math and typed math is better math.”

Kraft

Build SPAs in pure Kotlin.

Funktor

Server-side building blocks on Ktor.

Published on Maven Central as io.peekandpoke.ultra