Turn Multiple Devices Into One Unified System
A platform built for seamless multi-device integration
File Transfer • Port Forwarding • Cross-Device Integration (Coming Soon)
Fungi lets you securely connect and manage multiple devices through P2P connections. No server can see your data - everything is encrypted end-to-end between your devices.
Built with Rust (using rust-libp2p for p2p) and Flutter for cross-platform UI.
📁 File Transfer
- Mount remote folders as local drives (FTP/WebDAV)
🔗 Port Forwarding
🔮 Cross-Device Integration (Coming Soon)
Local Network: Devices automatically discover each other via mDNS - no setup needed.
Internet: Attempts NAT hole punching for direct P2P connections. If successful, data flows directly between devices; otherwise uses relay server. All traffic is end-to-end encrypted - relay server only sees encrypted data packets. By default, we provide a relay server.
Available in two versions:
- fungi-cli: Command-line interface for terminal users
- fungi-app: Graphical user interface with Flutter UI
Prerequisites:
- Launch
Fungi App
on both devices - Click on each device's
PeerID
at the top of the app to automatically copy it and save them
File Transfer and Port Forwarding are independent features. You can use either one without the other based on your needs.
Use Case: Access files from one device on another device through FTP/WebDAV.
On Device B (File Server):
- Navigate to File Transfer > File Server > Incoming Allowed Peers
- Add Device A's
PeerID
to the allowed list - Set Shared Directory to the folder you want to share (e.g.,
/tmp
) - Enable File Server State
On Device A (File Client):
- Go to File Transfer > Remote File Access > Add Remote Device
- Add Device B's PeerID and assign an alias
Access Files: The FTP/WebDAV addresses are displayed on home page. Use any FTP or WebDAV client on Device A to access the directory of Device B. (Both macOS and Windows built-in file managers can mount WebDAV as a drive)
Use Case: Access services running on one device from another device through port tunneling.
On Device B (Port Listening):
- Navigate to Data Tunnel > Port Listening Rules
- Add the port you want to forward (e.g.,
8080
)
On Device A (Port Forwarding):
- Navigate to Data Tunnel > Port Forwarding Rules
- Add Device B's PeerID and set up port mapping (e.g., local
9090
→ remote8080
)
Access Service:
Connect localhost:9090
on Device A to reach the service running on Device B's port 8080
.
More convenient mDNS local device discovery features are coming soon.
See the CLI Service Quick Start Guide.
All platforms require Rust and Flutter to be installed.
Simply run:
cargo build --release --bin fungi
The binary will be located at:
./target/release/fungi
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev
cd flutter_app
flutter build linux --release
cd flutter_app
flutter build macos --release
Install aws-lc-rs build dependencies
Ensure you have at least: C/C++ Compiler, CMake, NASM
cargo build --release -p rust_lib_fungi_app
flutter build windows --release
Platform | Status |
---|---|
macOS | ✅ Ready |
Windows | ✅ Ready |
Linux | ✅ Ready |
Android | 🚧 In progress |
iOS | 🚧 In progress |
We welcome all contributions:
- 🐛 Bug reports and fixes
- ✨ New features
- 📖 Documentation
- 🎨 UI improvements
Apache License 2.0 - see LICENSE for details.