Skip to content

Multiplatform Matrix chat client (experimental CMP+rust app)

License

Notifications You must be signed in to change notification settings

mlm-games/Mages

Repository files navigation

Mages

Mages is an experimental matrix chat client.

The goal was to have a cross‑platform desktop/mobile client, (initially there were very few alternatives to element-desktop which notify, and stay hidden in my tray (unlike neochat, though it has push notifs via kunifiedpush, while this currently polls) while not being as heavy. This kinda is heavy (though not as much), until i find a better solution for notifs on desktop). Although it might occasionally appear stable, it is never aiming to be as stable as element's clients (or other clients like fluffy or fractal with a proper consumer-focused goal)

Status

This is experimental‑stage software. If you use it, assume things may break. (Do open an issue if you'd like to :)

Features (as of the last README update)

  • Room list with basic previews and unread counts
  • Room and thread timelines (text, media, polls)
  • End‑to‑end encryption (via matrix‑sdk)
  • Spaces browser
  • Simple presence / privacy settings
  • Android app and Linux desktop builds (AppImage, AUR mages-bin)
  • Unsigned Windows and Mac builds
  • Experimental Call Support

Platforms

  • Android

    • Signed APKs and AABs are published on GitHub Releases.
    • F‑Droid metadata is planned; for now you can sideload the APK.
  • Linux desktop

    • AppImage builds for x86_64 and aarch64.
    • AUR: wraps the AppImage.
    • Other package formats (Snap) may follow.
  • Other platforms

    • The UI is Compose Multiplatform. In practice, only Android + Linux AppImage are actively tested. Windows and Mac are tested rarely and are not signed.

Architecture

  • Rust core

    • Uses matrix-sdk and matrix-sdk-ui for sync, room list, timelines, E2EE, etc.
    • Exposed as a UniFFI library (mages_ffi) that Kotlin/JVM can call.
  • Kotlin UI

    • Compose Multiplatform for Android and desktop.
    • Koin for dependency injection.
    • ViewModels for state, backed by the Rust core.

Most Matrix‑specific logic lives in Rust; Kotlin mostly handles presentation.

Building from source

Prerequisites

  • JDK 21
  • Kotlin/Gradle
  • Rust toolchain (stable)
  • On Android:
    • Android SDK + NDK (see android-release workflow for versions)
    • cargo-ndk (for building the Rust library for Android ABIs)

Android

./gradlew :androidApp:assembleRelease
# APKs end up under androidApp/build/outputs/apk/release

Desktop (Linux)

# Build Rust JNI + desktop distribution
cargo build --release --manifest-path rust/Cargo.toml
./gradlew :desktopApp:genUniFFIJvm :desktopApp:packageDistributionForCurrentOS
# AppImage is assembled by the desktop release workflow

Version Trackers

Platform Version
F-Droid F-Droid Version
AUR AUR Version

Contributing

Issues and small PRs are welcome. Please keep changes focused and self‑contained.

  • Rust changes: try to keep the FFI surface small and stable.
  • Kotlin changes: avoid expensive work in composables; use ViewModels and background dispatchers.

License

Mages is licensed under the GNU AGPL v3 (see LICENSE).

About

Multiplatform Matrix chat client (experimental CMP+rust app)

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 3

  •  
  •  
  •