OpenMattermost

A Flutter client for Mattermost — one codebase for Aurora OS 5.2+ and Android.

Flutter Aurora OS License Package


About

OpenMattermost is a full rewrite of the Mattermost mobile client in Flutter, built to run natively on Aurora OS (the Russian mobile OS) while keeping a single shared codebase that also targets Android. It talks to any standard Mattermost server (API v4) — no server changes required.

The app was ported feature-by-feature from the official React Native client, then adapted to Aurora's platform constraints (native plugins resolved through the Aurora toolchain).

Unofficial community port. Not affiliated with or endorsed by Mattermost, Inc. "Mattermost" is a trademark of its owner; this project only provides a compatible client.

Features

Area What's in
Auth & servers Onboarding → server → login, secure token storage, theming, multi-server
Messaging Channel list, channels, posts, reactions, threads, search, mentions, saved posts, profiles, Markdown
Media Images, files, gallery, video, PDF viewer, drafts
Composer Autocomplete, groups, scheduled posts, bookmarks, integrations (apps)
Calls Voice/video over WebRTC (native on both Aurora & Android)
AI Agents Streaming responses, tool calls, citations
Playbooks Runs, checklists, status updates
Platform Deep links (mattermost:// + web), i18n, accessibility, error handling

~28,800 lines of Dart across 157 files, dual-database (sqflite, schema v24).

Tech stack

  • UI/State: Flutter · provider
  • Networking: dio · web_socket_channel
  • Storage: sqflite (dual-DB: app + per-server) · flutter_secure_storage
  • Media/RTC: flutter_webrtc · video_player · image_picker · file_picker · flutter_pdfview
  • Platform: app_links (deep links) · url_launcher · flutter_foreground_task

Project layout

lib/
  app.dart · main.dart
  core/         # api client, rest, websocket, db
  model/        # data models
  state/        # provider models (ephemeral + persisted)
  screens/      # full screens
  components/   # reusable widgets
  products/     # agents · calls · playbooks (feature modules)
  utils/ · l10n/
aurora/         # Aurora scaffold: CMake, main.cpp, desktop, icons, rpm spec
android/        # Android host (vanilla)
scripts/        # build-release.sh

Building

Two Flutter toolchains, one lib/:

  • Aurora: flutter-aurora 3.41.4 → signed RPM (aarch64 + armv7hl)
  • Android: Flutter stable → APK
# Aurora release RPMs (both architectures) — needs Aurora Platform SDK
./scripts/build-release.sh aurora

# Android APK
./scripts/build-release.sh android

Aurora artifacts land in:

build/aurora/bt_5.2.0/aurora-arm64/release/RPMS/tech.mobiledeveloper.openmattermost-<ver>-1.aarch64.rpm
build/aurora/bt_5.2.0/aurora-arm/release/RPMS/tech.mobiledeveloper.openmattermost-<ver>-1.armv7hl.rpm

The Aurora build compiles inside the Platform SDK's aurora-build-tools Docker image. Install the Aurora SDK and ensure Docker is running.

Signing & publishing (RuStore)

Release RPMs must be signed with an Aurora developer certificate to pass RuStore moderation and install on devices. Signing keys, keystores and certificates are kept out of this repository (git-ignored). See RUSTORE-PUBLISH.md for the full flow: CSR generation → RuStore certificate → ompcert-cli signing → RuStore Console upload.

License

Apache License 2.0 — same as upstream Mattermost.