Skip to content

wireapp/kalium

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3,104 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Kalium

JVM & JS Tests codecov

Kalium is Wire's Kotlin Multiplatform SDK for messaging, end-to-end encryption, conversation state, backup, calling integration, and Wire backend access.

It is primarily built for Wire clients and currently targets Android, JVM, and Apple platforms. JavaScript support exists only where individual modules enable it.

Use Kalium

Release builds are published under the Maven group com.wire.kalium. The main SDK entry point is the :logic module:

dependencies {
    implementation("com.wire.kalium:logic:<version>")
}

Use the version from GitHub releases or Maven Central metadata.

Supported Platforms

Platform Status Notes
Android Supported Main production target.
JVM Supported Used by tests, tools, and the CLI sample.
iOS/macOS Apple Silicon Supported Requires unified CoreCrypto; see iOS build guide.
JavaScript Limited Experimental and module-dependent.

Build From Source

Requirements:

  • JDK 21
  • Git
  • macOS on Apple Silicon for Apple target builds

Common commands:

./gradlew build
./gradlew jvmTest -Djava.library.path=./native/libs
./gradlew detekt

JVM tests and the CLI need native libraries. Build them with:

make

The libraries are written to native/libs.

Configuration

Kalium uses a few Gradle properties that consumers and contributors may need to set explicitly:

./gradlew <task> -PUSE_UNIFIED_CORE_CRYPTO=true
./gradlew <task> -Pkalium.providerCacheScope=LOCAL
  • USE_UNIFIED_CORE_CRYPTO selects the unified core-crypto-kmp dependency. Apple builds require it to be true.
  • kalium.providerCacheScope controls provider-level caches. Consumer builds should set it explicitly to LOCAL or GLOBAL; this repository uses LOCAL for standalone builds.

See contributor setup for the longer explanation.

Project Map

Kalium is split by layer:

  • core:* contains shared models, utilities, logging, and cryptography.
  • data:* contains networking, persistence, protobuf, and data mappers.
  • domain:* contains feature domains such as messaging, backup, calling, cells, work, and user storage.
  • logic is the public SDK entry point used by clients.
  • sample:*, tools:*, and test:* contain development support code.

For module boundaries and source-set details, see architecture.

Documentation

About

๐ŸŒ An SDK for creating Wire clients on Android and JVM. Expanding to iOS and Web.

Topics

Resources

License

Contributing

Stars

63 stars

Watchers

16 watching

Forks

Packages

 
 
 

Contributors

Languages