- Dart 56.3%
- Swift 23%
- Kotlin 13.1%
- C++ 2.6%
- Rust 1.7%
- Other 3.2%
| .github/workflows | ||
| android | ||
| assets | ||
| docs | ||
| installers | ||
| integration_test | ||
| ios | ||
| lib | ||
| macos | ||
| mycelffi | ||
| mycelmob | ||
| test | ||
| test_driver | ||
| windows | ||
| .gitignore | ||
| .metadata | ||
| analysis_options.yaml | ||
| LICENSE | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| README.md | ||
mycelium_network_gui
What this is
A cross-platform GUI application for the Mycelium overlay network. Built with Flutter, it provides a user-friendly interface to manage Mycelium network connections on iOS, macOS, Android, and Windows. The application wraps the Mycelium Rust core via platform-specific native bridges.
What this repository contains
- Flutter application — the main GUI codebase
- mycelmob/ — Swift/Kotlin-Rust bridge for mobile platforms (iOS, macOS, Android)
build-ios.sh— iOS bridge build scriptbuild-mac.sh— macOS bridge build scriptbuild-android.sh— Android bridge build script
- mycelffi/ — Windows FFI bridge and DLL build
build.bat— Windows DLL build script
- installers/ — Platform-specific installer configurations
windows/— Inno Setup script and preparation batch files
- android/, ios/, macos/, windows/, linux/ — Flutter platform directories
Role in the stack
mycelium_network_gui is the end-user interface for the Mycelium overlay network. It communicates with the mycelium daemon core (via native bridges) to start/stop the network, display connection status, and manage overlay network settings. It runs on client devices that need to connect to the Mycelium overlay network and reach services on MyceliumOS nodes or the ThreeFold Grid.
Relation to ThreeFold
This technology is used within the ThreeFold ecosystem and was first deployed on the ThreeFold Grid. The component itself is designed as reusable infrastructure technology and should be understood by its technical function first, independent of any specific deployment.
Ownership
This repository is owned and maintained by TF-Tech NV, a Belgian company responsible for the development and maintenance of this technology.
License
This project is licensed under the Apache License 2.0 — see the LICENSE file for details.
Development
Prerequisites
- Install Flutter SDK: https://docs.flutter.dev/get-started/install according to your platform
- Install Rust
- VS Code for editing the Dart code
iOS
Requirements
- Real iPhone is needed for testing. The Simulator cannot be used because mycelium needs iOS
Network Extensions, which do not run on the Simulator.
Build iOS Swift-Rust Bridge
cd mycelmob
bash build-ios.sh
There is an IPHONEOS_DEPLOYMENT_TARGET variable in build-ios.sh which must match the value set in Xcode.
macOS
Build macOS Swift-Rust Bridge
cd mycelmob
bash build-mac.sh
Android
Requirements
- Android Studio. Flutter-related configuration can be found in the Flutter SDK installation guide.
- Android NDK 26.1.10909125. The updated version can be found in
android/app/build.gradle.
Build Android Kotlin-Rust Bridge
cd mycelmob
bash build-android.sh
Windows
Requirements
- Visual Studio 2022
- Complete list at https://docs.flutter.dev/get-started/install/windows/desktop#software-requirements
Build Windows DLL
cd mycelffi
./build.bat
Run
From the mycelium_network_gui directory:
flutter pub getflutter run
Or using VS Code:
code .(to open VS Code)Run->Start Debugging
Usage
Windows
The application currently needs to be run as administrator.
Installer / Release
Android
Self-distributed .apk
flutter build apk
Google Play Store release
- Create the signature as described at https://docs.flutter.dev/deployment/android#sign-the-app
- Change
signingConfig signingConfigs.debugin build.gradle tosigningConfig signingConfigs.release - Increase build number in
pubspec.yaml - Build the
.aab(application bundle)
flutter build appbundle
Windows
Build in release mode:
flutter build windows --release
Copy Visual Studio .dll files:
cp 'C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.40.33807\x64\Microsoft.VC143.CRT\msvcp140.dll' .\build\windows\x64\runner\Release\
cp 'C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.40.33807\x64\Microsoft.VC143.CRT\msvcp140_1.dll' .\build\windows\x64\runner\Release\
cp 'C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.40.33807\x64\Microsoft.VC143.CRT\msvcp140_2.dll' .\build\windows\x64\runner\Release\
cp 'C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.40.33807\x64\Microsoft.VC143.CRT\vcruntime140.dll' .\build\windows\x64\runner\Release\
cp 'C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.40.33807\x64\Microsoft.VC143.CRT\vcruntime140_1.dll' .\build\windows\x64\runner\Release\
Run preparation script:
.\installers\windows\prepare.bat
Run Inno Setup. The working directory is build\windows\x64\runner\Release:
- Select
mycelium-network.exeas the application main executable (it is renamed from the originalmycelium_network_gui.exe) - Add all
.dllfiles - Add the
datafolder with its subdirectories
Scroll down the list, select the data folder path, and click Edit…. It is important to ensure that the destination sub-folder has the same name data; otherwise the app will not run after installation because all contents of the folder will be dispersed outside. Enter the name of the destination subfolder as data and click OK.
The Inno Setup script can be found here. You need to modify the path (according to your environment) before building it in the Inno Setup app.