Data, search and storage libraries with one implementation and identical behaviour on every target — JVM, Android, iOS, Native, Node and the browser.
Most Kotlin Multiplatform "multiplatform" libraries are a thin expect/actual shell over a
different native engine per target — SQLite here, a JNI index there, a JS shim for the browser.
Behaviour drifts, binaries balloon, and the web target is usually an afterthought.
Kormium libraries take the opposite route: pure Kotlin, no reflection, no native linking. One engine, compiled for every target, behaving the same everywhere. That makes offline-first clients, on-device AI features and shared server/client data models genuinely practical.
- No reflection — mapping and field access are resolved at compile time, so Native and Wasm are first-class, not degraded modes.
- Explicit beats implicit — no session, no dirty checking, no lazy loading. The SQL is exactly what the DSL renders, an update writes only the fields you assigned, and anything sharp is behind an opt-in rather than a silent default.
- Fail at startup, not at runtime — schemas, migrations and configuration are validated while the database or index is being built, not on the one query in production that happens to hit the problem.
- Same code on server and client — one schema, one query model, one index format.
- Web is a real target — every library compiles and is tested for Wasm/JS.
- Apache 2.0 across the board.
|
|
|
|
|
|
|
|
|
| Project | What it is | Artifact | Version |
|---|---|---|---|
| kormium | Type-safe ORM and SQL DSL. Tables, entities, typed predicates, transactions, migrations, joins. PostgreSQL / MySQL / SQLite, JDBC and R2DBC, Ktor integration. | io.github.kormium:kormium-core |
0.11.1 |
| kromus | Embedded hybrid search — pure-Kotlin HNSW vector index + BM25 full-text + RRF fusion, quantization, metadata filters, optional ONNX embedder. | io.github.kormium:kromus-core |
0.14.0 |
| kemus | In-memory data store with Redis-flavoured commands. One KemusCommands API over an embedded engine or a remote server; real RESP wire protocol, offline→online sync. |
io.github.kormium:kemus-core |
0.3.0 |
| decimal | Arbitrary-precision decimal value type. Zero dependencies, java.math.BigDecimal-compatible, oracle-verified. |
io.github.kormium:decimal |
0.1.0 |
| sqlite-wasm-kt | Kotlin/Wasm bindings for the official @sqlite.org/sqlite-wasm — suspend-friendly SQLite in the browser, in-memory or OPFS, with a Worker RPC bundle. |
io.github.kormium:sqlite-wasm-kt |
0.1.0 |
| playground | Small runnable demos built on the libraries above. | — | — |
Everything is pre-1.0 and published to Maven Central. APIs may still change; releases follow semantic versioning and every breaking change is listed in each project's
CHANGELOG.md.
// settings.gradle.kts / build.gradle.kts
repositories {
mavenCentral()
}
dependencies {
implementation("io.github.kormium:kormium-core:0.11.1") // ORM + SQL DSL
implementation("io.github.kormium:kromus-core:0.14.0") // hybrid search
implementation("io.github.kormium:kemus-core:0.3.0") // in-memory store
}Each project ships a BOM (kormium-bom, kemus-bom) if you prefer aligned versions.
Issues and pull requests are welcome on every repository. Start with CONTRIBUTING.md, and please report security problems privately as described in SECURITY.md.