Skip to content

Repository files navigation

Flashbyte Logo

Flashbyte

A Simple and fast local file sharing app.

Version CI Status Flutter Flutter

Features

  • TLS Encryption: You can send files over an encrypted connection.
  • Cross-platform support: Flashbyte is supported on all the major platforms!.
  • File sharing over local network: You can send files over local network, without wifi access.
  • Lossless file sharing: Send files in their original quality.
  • All file types supported: Send file of any type.
  • No file size limit: Send files no matter their size.
  • Doesn't use an external server: Flashbytes sends to devices using your local network.
  • Cross-platform: Transfer files to any device on your local network that has Flashbyte installed.
  • Open source & no data is collected: All of the code is readily available on github.

How does this work?

Flashbyte uses pure TCP sockets to establish a connection between two devices on a local network inside an isolate (isolated memory channel) which is then utilized to read and send over the file bytes whilst keeping the frontend (main UI isolate) smooth.

You can try out Flashbyte on the following platforms:

Platform Download
Android APK | AAB
Linux TAR
macOS DMG
iOS APP
Windows EXE | ZIP

Contents


Screenshots:

Flashbyte Android preview Flashbyte Linux preview

Installation instructions:

  • Android:

Install the Flashbyte .apk file from the releases page. Now, run the .apk file wether it is through a file explorer or via your browser's download page.

  • Linux:

Installation script (recommended):

You can install Flashbyte by running this in your linux terminal:

curl -fsSl "https://raw.githubusercontent.com/iamsami101/Flashbyte/refs/heads/main/install.sh" | bash

and if you want to uninstall it, you can run:

curl -fsSl "https://raw.githubusercontent.com/iamsami101/Flashbyte/refs/heads/main/uninstall.sh" | bash

Manual Installation

If you'd rather not run the install script, you can set up Flashbyte manually:

1. Download the release

Grab the latest flashbyte-linux-x86_64.tar.gz from the Releases page.

2. Extract it

mkdir -p ~/.local/share/flashbyte
tar xzf flashbyte-linux-x86_64.tar.gz -C ~/.local/share/flashbyte
chmod +x ~/.local/share/flashbyte/flashbyte

3. Create a launcher script

This makes sure the app can find its bundled libraries at runtime:

mkdir -p ~/.local/bin
cat > ~/.local/bin/flashbyte << 'EOF'
#!/bin/bash
HERE="$HOME/.local/share/flashbyte"
export LD_LIBRARY_PATH="$HERE/lib:$LD_LIBRARY_PATH"
exec "$HERE/flashbyte" "$@"
EOF
chmod +x ~/.local/bin/flashbyte

Make sure ~/.local/bin is on your PATH. Check with:

echo $PATH | grep -q "$HOME/.local/bin" && echo "OK" || echo "not on PATH"

If it's not, add this to your ~/.bashrc or ~/.zshrc, then restart your terminal:

export PATH="$HOME/.local/bin:$PATH"

4. Install the icons

for size_dir in ~/.local/share/flashbyte/share/icons/hicolor/*/apps; do
    size_name=$(basename "$(dirname "$size_dir")")
    mkdir -p ~/.local/share/icons/hicolor/"$size_name"/apps
    cp "$size_dir/flashbyte.png" ~/.local/share/icons/hicolor/"$size_name"/apps/flashbyte.png
done

5. Install the desktop entry

The desktop entry filename and StartupWMClass must match the app's GApplication ID (com.iamsami.flashbyte) so GNOME shows the icon and app name correctly in the dock.

mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/com.iamsami.flashbyte.desktop << EOF
[Desktop Entry]
Type=Application
Name=Flashbyte
Comment=LAN file sharing app
Exec=$HOME/.local/bin/flashbyte
Icon=flashbyte
Categories=Network;
Terminal=false
StartupWMClass=com.iamsami.flashbyte
EOF
chmod +x ~/.local/share/applications/com.iamsami.flashbyte.desktop
rm -f ~/.local/share/applications/flashbyte.desktop

6. Refresh your desktop caches

update-desktop-database ~/.local/share/applications
gtk-update-icon-cache ~/.local/share/icons/hicolor

7. Run it

Either launch Flashbyte from your application menu, or run it directly:

flashbyte

Uninstalling manually

rm -rf ~/.local/share/flashbyte
rm -f ~/.local/bin/flashbyte
rm -f ~/.local/share/applications/com.iamsami.flashbyte.desktop
rm -f ~/.local/share/applications/flashbyte.desktop
rm -f ~/.local/share/icons/hicolor/*/apps/flashbyte.png
update-desktop-database ~/.local/share/applications
gtk-update-icon-cache ~/.local/share/icons/hicolor
  • Windows:

Download the Flashbyte Setup Wizard (flashbyte-windows-setup-x64.exe) or the portable flashbyte-windows-x64.zip from the releases page.

Installer (recommended): Run the installer and follow the wizard, then launch Flashbyte from the Start menu or desktop shortcut. To remove Flashbyte, use Settings > Apps.

Portable: Extract the zip file, then run:

flashbyte.exe

If Windows SmartScreen warns you that the app is from an unknown publisher, choose More info and then Run anyway. Release builds are signed with a self-signed certificate, so Windows cannot fully trust the signature. To remove the warning, sign releases with a trusted code-signing certificate (see Signing release builds). To remove the portable app, delete the extracted folder.

  • macOS:

Download flashbyte-macos.dmg from the releases page.

Open the DMG, drag flashbyte.app into Applications, then launch it from Applications.

If macOS blocks the app because it is not signed/notarized yet, open System Settings > Privacy & Security and allow Flashbyte, or right-click the app and choose Open.

  • iOS:

The current iOS release artifact is an unsigned Runner.app zip. It is useful for CI output and local signing, but it cannot be installed on normal iPhones directly.

To install on a device, build/sign from source with an Apple Developer account:

flutter build ipa --release

Then distribute the signed .ipa through TestFlight, Apple Configurator, or your own MDM/internal distribution setup.

Signing release builds

The GitHub workflow builds release artifacts and packages macOS as a DMG, but platform signing requires private certificates and provisioning files that should be stored as GitHub Actions secrets.

To sign Android releases, add an upload keystore and configure Gradle signing with secrets such as ANDROID_KEYSTORE_BASE64, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS, and ANDROID_KEY_PASSWORD.

To sign and notarize macOS releases, use an Apple Developer ID Application certificate plus notarization credentials, commonly stored as APPLE_DEVELOPER_ID_APPLICATION_CERTIFICATE_BASE64, APPLE_DEVELOPER_ID_APPLICATION_CERTIFICATE_PASSWORD, APPLE_TEAM_ID, APPLE_ID, and APPLE_APP_SPECIFIC_PASSWORD.

To create an installable iOS release, add an Apple Distribution certificate and provisioning profile, commonly stored as APPLE_DISTRIBUTION_CERTIFICATE_BASE64, APPLE_DISTRIBUTION_CERTIFICATE_PASSWORD, IOS_PROVISIONING_PROFILE_BASE64, and APPLE_TEAM_ID.

For Windows releases, the workflow currently signs both the executable and the Inno Setup installer with a fresh self-signed certificate. This keeps the binaries tamper-evident but still triggers a SmartScreen warning, because the signing certificate is not trusted. To sign with a trusted certificate, obtain a Windows code-signing certificate and use it with signtool in the workflow, commonly stored as WINDOWS_CERTIFICATE_BASE64 and WINDOWS_CERTIFICATE_PASSWORD.

Building from Source

If you'd like to build Flashbyte yourself instead of using a prebuilt release, you'll need Flutter installed and set up for the platform(s) you're targeting.

Prerequisites

Verify your setup once Flutter is installed:

flutter doctor

Resolve any issues it flags before continuing (missing Android SDK, missing Linux toolchain, etc. — covered per-platform below).

Clone the repository

git clone https://github.com/iamsami101/flashbyte.git
cd flashbyte
flutter pub get

Building for Linux

Additional prerequisites:

sudo apt update
sudo apt install clang cmake ninja-build pkg-config libgtk-3-dev

Enable Linux desktop support if you haven't already:

flutter config --enable-linux-desktop

Build a release binary:

flutter build linux --release

The output bundle will be in:

build/linux/x64/release/bundle/

This bundle/ folder is exactly what gets packaged into the .tar.gz release — it contains data/, lib/, the flashbyte executable, and share/ with icons and the desktop file. You can run it directly:

cd build/linux/x64/release/bundle
./flashbyte

Or follow the Manual Installation steps above, using this bundle/ folder as your source instead of a downloaded release.


Building for Android

Additional prerequisites:

  • Android SDK (via Android Studio or command-line tools)
  • A configured ANDROID_HOME environment variable
  • At least one accepted Android SDK license:
flutter doctor --android-licenses

Build a release APK:

flutter build apk --release

The output will be at:

build/app/outputs/flutter-apk/app-release.apk

Install it on a connected device or emulator:

flutter install

Or manually transfer the APK to your device and install it (you'll need "Install from unknown sources" enabled, since this isn't distributed via the Play Store).

If you want a split APK per architecture (smaller file size):

flutter build apk --split-per-abi --release

This produces separate APKs in the same output folder, one per ABI (armeabi-v7a, arm64-v8a, x86_64).


Building for iOS

Additional prerequisites:

  • macOS
  • Xcode
  • CocoaPods
  • An Apple Developer account if you want to install on a physical device or create a distributable IPA

Enable iOS support and check your setup:

flutter doctor

Build an unsigned release app for CI/artifact inspection:

flutter build ios --release --no-codesign

Build a signed IPA when your Apple signing certificates and provisioning profile are configured:

flutter build ipa --release

The unsigned app output is usually under:

build/ios/iphoneos/Runner.app

The signed IPA output is usually under:

build/ios/ipa/

Building for macOS

Additional prerequisites:

  • macOS
  • Xcode
  • CocoaPods

Enable macOS desktop support if you haven't already:

flutter config --enable-macos-desktop

Build a release app:

flutter build macos --release

The output app will be at:

build/macos/Build/Products/Release/Flashbyte.app

For distribution outside your own machine, sign and notarize the app, then package it as a DMG.


Building for Windows

Additional prerequisites:

  • Windows
  • Visual Studio with the "Desktop development with C++" workload

Enable Windows desktop support if you haven't already:

flutter config --enable-windows-desktop

Build a release app:

flutter build windows --release

The output bundle will be at:

build\windows\x64\runner\Release\

Zip the contents of that folder to distribute a portable Windows build. A bundled Inno Setup installer script is provided at windows/installer/flashbyte.iss; the release workflow uses it to build a signed Setup Wizard (flashbyte-windows-setup-x64.exe). For wider distribution, sign with a trusted Windows code-signing certificate.


Debug builds

For development/testing rather than a release build, drop --release and just run:

flutter run

Flutter will detect any connected device (or ask you to choose one) and hot-reload as you make changes.

About

Send and receive files directly between your devices, phone, laptop, or desktop, with no internet, no accounts, and no cloud uploads.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages