Native iOS and Android client for Beacon, the real-time MeshCore packet analyzer. Built with Flutter, it reads the same REST API and WebSocket feed as beacon-web, served by beacon-server.
The app has no built-in server: add the URL of a Beacon server on first launch, such as your own self-hosted one. Manage saved servers, theme and language in Settings; the server button in the header switches between them.
The app includes Packets, Channels, Map, Nodes, Observers, Routes, Traces, and all nine Analytics sections. It uses native Flutter widgets and MapLibre Native. See development validation for test coverage, install commands, and remaining differences from Beacon-Web.
Install the Flutter SDK, then:
flutter pub get
flutter run # on a connected device or running emulator/simulatorRunning a beacon-server to point the app at is covered in the shared contributor guide.
| Command | Description |
|---|---|
flutter run |
Run the app on a device or emulator |
flutter analyze |
Static analysis and lint |
dart format . |
Format the code |
flutter test |
Run tests |
flutter build apk / flutter build ios |
Build a release for Android / iOS |
./Build.sh |
Maintainers: signed APK, AAB and IPA in one go (see Releases) |
- Same contract as web: every REST, packet and WebSocket shape comes from the API contract.
- Foreground-only WebSocket: iOS suspension and Android battery saver kill background sockets, so the app closes the WebSocket when backgrounded, then reopens, resubscribes and backfills over REST on return. See Mobile-specific concerns.
- API contract: every REST, packet and WebSocket shape this app consumes
- High level design
- Contributing, and the shared workflow for branches, commits and releases
See CONTRIBUTING.md. All contributors are welcome; please also read the Code of Conduct. To report a security issue, see SECURITY.md.
Licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). See LICENSE for the full text and CONTRIBUTORS.md for acknowledgements.