Wormhole
With Wormhole, you can easily and securely share files of any size, with anyone, anywhere.
Install / Use
/learn @wormhole-app/WormholeREADME
Wormhole
An open source Android, iOS, macOS, and Windows App for sending/receiveing files using the magic-wormhole protocol.
<img src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" alt="Get it on Google Play Store" height="75"><img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" alt="Get it on IzzyOnDroid" height="75">
<img src="https://developer.apple.com/assets/elements/badges/download-on-the-app-store.svg" alt="Download on the App Store" height="75"> <img src="https://img.shields.io/badge/TestFlight-Join_Beta-0D96F6?style=for-the-badge&logo=apple&logoColor=white" alt="Join TestFlight Beta" height="75">
Preview
<p><img src="android/fastlane/metadata/android/en-US/images/phoneScreenshots/2_receive_dark.png" width="32%" alt=""/> <img src="android/fastlane/metadata/android/en-US/images/phoneScreenshots/5_settings_dark.png" width="32%" alt=""/> <img src="android/fastlane/metadata/android/en-US/images/phoneScreenshots/3_transfer_code_dark.png" width="32%" alt=""/></p>Features
- Open source: Lightweight, clean and secure.
- Send/receive files via the magic-wormhole protocol
- Generate QR code of receive code
- Scan QR-Code of sender
- Dark theme
Compatible Desktop Applications:
(feel free to add yours)
Installation
Linux
Debian/Ubuntu:
# Download the .deb package from releases, then install:
sudo apt install ./wormhole_{version}_amd64.deb
Fedora/RHEL/openSUSE:
# Download the .rpm package from releases, then install:
sudo rpm -i wormhole-{version}.x86_64.rpm
# Or on Fedora:
sudo dnf localinstall ./wormhole-{version}.x86_64.rpm
Download the latest packages from the Releases page.
Translation
We use Codeberg Translate.
Development
Prerequisites
- Flutter (>= 3.22.0)
- Rust (MSRV >= 1.85.1)
- Just
Android only:
- Android NDK
- Android SDK (>= 31)
Build app
Android
Add Rust Android targets:
rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
Build APK + App Bundle:
just apk
Linux
Dev build:
just linux
Create distribution packages:\
# Activate fastforge first (one-time setup)
dart pub global activate fastforge
# Build DEB package (for Debian/Ubuntu)
fastforge package --platform linux --targets deb
# Build RPM package (for Fedora/RHEL)
fastforge package --platform linux --targets rpm
Packages will be created in the dist/ directory.
macOS
Dev build:
flutter build macos
Windows
Dev build:
flutter build windows
Format/Lint
Format source code:
just format
Lint source code:
just lint
Code generation
Generate translations:
just translation
Generate Flutter-Rust-Bridge code bindings:
just codegen
Screenshots
Generate store screenshots for all devices (from the repo root):
flutter test test/screenshots/screenshot_test.dart --update-goldens
Add device frames and replace the originals:
cd android
fastlane frame_screenshots
fastlane apply_frames
cd ..
cd ios
fastlane frame_screenshots
fastlane apply_frames
cd ..
Cleanup
Clean build files:
just clean
Contribution
Every kind of contribution is welcome. :)
If you know other languages than English/German/Swedish feel free to add new translations in lib/l10n/.
If you face any issues with the app you can gladly open an issue or fix it via a PR.
Used libraries
A great thanks to all the maintainers of the used libraries. Especially to magic-wormhole and flutter_rust_bridge.
Flutter
- flutter_rust_bridge(MIT) - Flutter <-> Rust ffi code generation
- ffi(BSD-3-Clause) - call native .so lib code from dart
- file_picker(MIT) - OS Native Filepicker Impl.
- path_provider(BSD-3-Clause) - Get Platforms common paths
- share_plus(BSD-3-Clause) - Open Platforms share dialog
- open_filex(BSD-3-Clause) - Open Platforms file-open dialog
- barcode_widget(Apache-2.0) - QR/Aztec code generation
- flutter_zxing(MIT) - QR/Aztec code scanner
- provider(MIT) - Consumer/Provider patterns
- shared_preferences(BSD-3-Clause) - Platform wrapper for key-value pairs
- share_handler(MIT) - receive of platform share intents
- vibration(BSD-2-Clause) - control haptic feedbacks
- intl(BSD-3-Clause) - handle localisation
- fluttertoast(MIT) - pretty toast popups
- toggle_switch(MIT) - pretty toggle switches
- permission_handler (MIT) - handle platform permissions
- url_launcher (BSD-3-Clause) - open urls in platform default browser
- flutter_close_app(MIT) - proper close of app
- media_scanner (MIT) - trigger media library scan on Android
- device_info_plus (BSD-3-Clause) - get device information
- app_links (Apache-2.0) - handle deep linking/universal links
- logger (MIT) - structured logging
- rotation_log (MIT) - log file rotation and archiving
Rust
- anyhow(MIT) - Error handling
- magic-wormhole(EUPL-1.2) - magic-wormhole client
- futures(MIT) - async/await async programming
- async-std(MIT) - async std-lib
- url(MIT) - url generation lib
- zip(MIT) - ZIP file compression/decompression
- fastrand(MIT) - fast random number generation
- log(MIT) - logging facade for Rust
- flutter_logger(MIT/Apache-2.0) - bridge Rust logs to Flutter
License
Copyright (C) 2025 Lukas Heiligenbrunner
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Related Skills
node-connect
342.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
342.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.7kCommit, push, and open a PR
