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-aurora3.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-toolsDocker 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.