๐ Stelliberty
A modern cross-platform Clash client built with Flutter and Rust Featuring the unique MD3M (Material Design 3 Modern) visual style
๐ธ Screenshots
![]() |
![]() |
![]() |
| Home Page (Light) | Home Page (Dark) | UWP Loopback Manager |
โจ Features
- ๐จ MD3M Design System: Unique Material Design 3 Modern style combining MD3 color management with acrylic glass effects.
- ๐ฆ Rust Backend: High-performance core powered by Rust with Flutter UI.
- ๐ Multi-language Support: Built-in i18n support using
slang. - ๐ง Subscription Management: Full subscription and override configuration support.
- ๐ Real-time Monitoring: Connection tracking and traffic statistics.
- ๐ช Native Desktop Integration: Windows service, system tray, and auto-start support.
- ๐ Built-in UWP Loopback Manager: Manage Windows UWP app loopback exemptions (Windows only).
๐ Implementation Highlights
This might be one of the most detail-oriented Flutter desktop applications:
- โจ System Tray Dark Mode: Adaptive tray icons for Windows dark/light themes.
- ๐ Flicker-Free Launch: Maximized window startup without visual artifacts.
- ๐ป Smooth Window Transitions: Show/hide animations without flickering.
- ๐ฏ Pixel-Perfect UI: Carefully crafted MD3M design system.
๐ User Guide
Click to expand User Guide
System Requirements
- Windows: Windows 10/11 (x64 / arm64)
- Linux: Mainstream distributions (x64 / arm64)
- macOS: Experimental
โ ๏ธ Platform Status: Fully tested on Windows and Linux. macOS support is experimental and may have incomplete functionality.
Downloads
- Stable Version: Releases
- Beta Version: Pre-releases (latest features)
Installation
Windows
Option 1: Portable Version (ZIP Archive)
- Download the
.zipfile from the release page. - Extract to your desired location (e.g.,
D:\Stelliberty). - Run
stelliberty.exedirectly from the extracted folder. - โ No installation required, fully portable.
Option 2: Installer (EXE)
- Download the
.exeinstaller from the release page. - Run the installer and follow the setup wizard.
- Choose an installation location (see restrictions below).
- Launch the application from the desktop shortcut.
- โ Includes uninstaller and desktop shortcut.
Installation Directory Restrictions
The installer enforces path restrictions for security and stability:
- System Drive (Usually C:):
- โ
Allowed:
%LOCALAPPDATA%\Programs\*(e.g.,C:\Users\YourName\AppData\Local\Programs\Stelliberty). - โ Prohibited: System drive root and all other paths.
- โ
Allowed:
- Other Drives (D:, E:, etc.):
- โ
No restrictions. Install anywhere, including root directories (e.g.,
D:\,E:\Stelliberty).
- โ
No restrictions. Install anywhere, including root directories (e.g.,
๐ก Recommendation: For the best experience, install to a non-system drive (e.g.,
D:\Stelliberty) to avoid permission issues. The default path%LOCALAPPDATA%\Programs\Stellibertyis recommended for most users.
Linux
Arch Linux (AUR)
Supported architectures: x86_64, aarch64
- yay:
yay -S stelliberty-bin - paru:
paru -S stelliberty-bin
AUR Package: stelliberty-bin
Portable Version (ZIP Archive)
- Download the
.zipfile for your architecture (amd64orarm64). - Extract it to your desired location (e.g.,
~/Stelliberty). - Important: Grant permissions:
chmod 777 -R ./stelliberty. - Run
./stellibertyfrom the extracted directory. - โ Ready to use.
Troubleshooting
Port Already in Use (Windows)
If you encounter port conflicts, run Command Prompt as Administrator:
- Find Process:
netstat -ano | findstr :<port_number> - Kill Process:
taskkill /F /PID <process_id>
Software Not Working Properly
- Path Requirements: The path should not contain special characters (except spaces) or non-ASCII characters.
- Installation Restrictions: Use the portable ZIP version if you need to install to a location not allowed by the EXE installer.
Missing Runtime Libraries (Windows)
If the application fails to start, install the Visual C++ Runtimes: vcredist - Runtimes AIO.
Reporting Issues
If you encounter any issues:
- Enable Application Logging in Settings โ App Behavior
- Reproduce the issue to generate logs
- Find log files in the
datadirectory under the application installation directory - Remove any sensitive/private information from the logs
- Create an issue on GitHub and attach the sanitized log file
- Describe the problem and steps to reproduce
๐ ๏ธ For Developers
Click to expand Developer Guide
Prerequisites
Before building this project, ensure you have the following installed:
- Flutter SDK (latest stable version recommended, minimum 3.38)
- Rust toolchain (latest stable version recommended, minimum 1.91)
- Dart SDK (included with Flutter)
๐ This guide assumes you are familiar with Flutter and Rust development. Installation instructions for these tools are not covered here.
Dependencies Installation
1. Install Script Dependencies
The prebuild script requires additional Dart packages:
cd scripts && dart pub get && cd ..
2. Install rinf CLI
Install the Rust-Flutter bridge tool globally:
cargo install rinf_cli
3. Install Project Dependencies
flutter pub get
4. Generate Required Code
After installing dependencies, generate Rust-Flutter bindings and i18n translations:
# Generate Rust-Flutter bridge code
rinf gen
# Generate i18n translation files
dart run slang
๐ก Important: These generation steps are required before building the project for the first time.
Building the Project
Pre-build Preparation
Always run the prebuild script before building the project:
dart run scripts/prebuild.dart
Prebuild script parameters:
# Show help
dart run scripts/prebuild.dart --help
# Install platform packaging tools (Windows: Inno Setup, Linux: dpkg/rpm/appimagetool)
dart run scripts/prebuild.dart --installer
# Android support (not implemented yet)
dart run scripts/prebuild.dart --android
What does prebuild do?
- โ
Cleans asset directories (preserves
test/folder) - โ
Compiles
stelliberty-service(desktop service executable) - โ Copies platform-specific tray icons
- โ Downloads latest Mihomo core binary
- โ Downloads GeoIP/GeoSite data files
Quick Build
Use the build script to compile and package:
# Show help
dart run scripts/build.dart --help
# Build Release version for current platform (default: ZIP only)
dart run scripts/build.dart
# Build with Debug version too
dart run scripts/build.dart --with-debug
# Build with installer package (Windows: ZIP + EXE, Linux: ZIP + DEB/RPM/AppImage)
dart run scripts/build.dart --with-installer
# Build installer only, no ZIP (Windows: EXE, Linux: DEB/RPM/AppImage)
dart run scripts/build.dart --installer-only
# Full build (Release + Debug, with installer)
dart run scripts/build.dart --with-debug --with-installer
# Clean build
dart run scripts/build.dart --clean
# Build Android APK (not supported yet)
dart run scripts/build.dart --android
Build script parameters:
| Parameter | Description |
|---|---|
-h, --help |
Show help information |
--with-debug |
Build both Release and Debug versions |
--with-installer |
Generate ZIP + installer (Windows: EXE, Linux: DEB/RPM/AppImage) |
--installer-only |
Generate installer only, no ZIP |
--clean |
Run flutter clean before building |
--android |
Build Android APK (not supported yet) |
Output location:
Built packages will be in build/packages/
Known Limitations
โ ๏ธ Platform Support Status:
- โ Windows: Fully tested and supported
- โ Linux: Fully tested and supported
- โ ๏ธ macOS: Core functionality works, but system integration is experimental
- โ Android: Not implemented yet
โ ๏ธ Unsupported Parameters:
--android: Android platform is not adapted yet
Manual Development Workflow
Generate Rust-Flutter Bindings
After modifying Rust signal structs (with signal attributes):
rinf gen
๐ Rinf uses signal attributes on Rust structs to define messages, not
.protofiles. See Rinf documentation for details.
Generate i18n Translations
After modifying translation files in lib/i18n/strings/:
dart run slang
Run Development Build
# Run prebuild first
dart run scripts/prebuild.dart
# Start development
flutter run
Development Testing
For developers, the project includes a test framework for isolated feature testing:
# Run override rule test (supports YAML or JS rules)
flutter run --dart-define=TEST_TYPE=override
# Run IPC API test
flutter run --dart-define=TEST_TYPE=ipc-api
# Run chain proxy structure test
flutter run --dart-define=TEST_TYPE=chain-proxy
# Run delay test stream
flutter run --dart-define=TEST_TYPE=delay-test
Required test files in assets/test/:
-
For
overridetest:assets/test/ โโโ config/ โ โโโ test.yaml # Base configuration file for testing โโโ override/ โ โโโ your_script.js # JS override script โ โโโ your_rules.yaml # YAML override rules โโโ output/ โโโ final.yaml # Expected final output after applying overrides -
For
ipc-apiandchain-proxytests:Note: It is recommended to run the pre-build script (
dart run scripts/prebuild.dart) before this test to download the necessary resources.assets/test/ โโโ config/ โโโ test.yaml # Base configuration file for testing -
For
delay-testtest:Note: It is recommended to run the pre-build script (
dart run scripts/prebuild.dart) before this test to download the necessary resources.assets/test/ โโโ config/ โโโ test.yaml # Base configuration file for testing
๐ก Note: Test mode is only available in Debug builds and automatically disabled in Release mode.
Test implementations: lib/dev_test/ (override_test.dart, ipc_api_test.dart, chain_proxy_test.dart, delay_test_stream.dart)
๐ Code Standards
- โ
No warnings from
flutter analyzeandcargo clippy - โ
Format code with
dart formatandcargo fmtbefore committing - โ
Do not modify auto-generated files (
lib/src/bindings/,lib/i18n/) - โ
Use event-driven architecture, avoid
setStateabuse - โ
Rust code must use
Result<T, E>, nounwrap() - โ Dart code must maintain null safety
๐จ About MD3M Design
MD3M (Material Design 3 Modern) is a unique design system that combines:
- ๐จ Material Design 3: Modern color system and typography
- ๐ช Acrylic Glass Effects: Translucent backgrounds with blur effects
- ๐ System Theme Integration: Automatically adapts to system accent colors
- ๐ Dark Mode Support: Seamless light/dark theme switching
This creates a modern, elegant desktop application experience with native-like feel across all platforms.
๐ License
This project is licensed under the Stelliberty License - see the LICENSE file for details.
TL;DR: Do whatever you want with this software. No restrictions, no attribution required.
Powered by Flutter & Rust


