No description
  • Dart 56.3%
  • Swift 23%
  • Kotlin 13.1%
  • C++ 2.6%
  • Rust 1.7%
  • Other 3.2%
Find a file
2026-05-27 19:58:48 +02:00
.github/workflows update github actions/cache to v4 2025-03-20 17:42:32 +07:00
android Rename mycelium_gui to mycelium_network_gui 2025-12-28 12:29:46 +02:00
assets Adjust the logo 2025-09-28 16:06:00 +03:00
docs feat(ui): add restart button. 2024-06-04 17:14:31 +07:00
installers Rename mycelium_gui to mycelium_network_gui 2025-12-28 12:29:46 +02:00
integration_test Rename mycelium_gui to mycelium_network_gui 2025-12-28 12:29:46 +02:00
ios Update ios versions 2026-02-10 16:25:02 +02:00
lib Fix reloading the peers when restarting the server 2026-02-10 16:04:25 +02:00
macos Update the version on mac 2026-02-10 16:03:36 +02:00
mycelffi Add a button to enable/disable the api server on macos and windows 2025-12-24 14:58:30 +02:00
mycelmob Update mycelium core to version 0.7.3 2026-02-10 15:15:52 +02:00
test Rename mycelium_gui to mycelium_network_gui 2025-12-28 12:29:46 +02:00
test_driver first commit 2024-04-19 11:21:18 +07:00
windows Rename mycelium_gui to mycelium_network_gui 2025-12-28 12:29:46 +02:00
.gitignore release ios to v0.6.1 2025-07-17 10:50:49 +03:00
.metadata flutter boilerplate for windows support 2024-10-08 10:16:49 +07:00
analysis_options.yaml first commit 2024-04-19 11:21:18 +07:00
LICENSE chore: canonicalize LICENSE 2026-05-27 19:58:48 +02:00
pubspec.lock Fix quit from dock on macos 2025-11-27 13:31:27 +02:00
pubspec.yaml Update mycelium core to version 0.7.3 2026-02-10 15:15:52 +02:00
README.md docs: restructure README with standard sections 2026-05-27 16:43:47 +02:00

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 script
    • build-mac.sh — macOS bridge build script
    • build-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

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

Build Windows DLL

cd mycelffi
./build.bat

Run

From the mycelium_network_gui directory:

  • flutter pub get
  • flutter 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

  1. Create the signature as described at https://docs.flutter.dev/deployment/android#sign-the-app
  2. Change signingConfig signingConfigs.debug in build.gradle to signingConfig signingConfigs.release
  3. Increase build number in pubspec.yaml
  4. 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.exe as the application main executable (it is renamed from the original mycelium_network_gui.exe)
  • Add all .dll files
  • Add the data folder 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.