VniDrop

VniDrop guide

Installation, everyday use, and help when two devices need a little more introduction.

Installation · Transfers · Previews

Your first transfer. Your next build.

Start on the download page. iPhone, iPad, and Mac are on the App Store. The current public release also has versioned GitHub downloads, with a Microsoft Store option for Windows. Previews offer earlier changes for testing.

Choose a build

  • macOS: install from the App Store, or open the signed, notarized DMG and drag VniDrop into Applications. Direct release builds can check for updates; Homebrew is also available.
  • Windows: install through the Microsoft Store, or run the direct EXE. Direct installers are unsigned, so Windows may show a SmartScreen warning. Check the release and its checksum before running it.
  • Linux: use the DEB or RPM for your distribution. Install the downloaded file with sudo apt install ./filename.deb or sudo dnf install ./filename.rpm so dependencies are resolved.
  • Android: open the APK and allow installation from the browser or file manager when Android asks. You can turn that permission off afterward.
  • iOS / iPadOS: install from the App Store. You can still build with Xcode using the Apple setup guide. The preview workflow does not distribute an iOS app.

Release notes describe the files you are downloading. The source on master may be newer: older Windows and Linux releases used Compose, while current builds use native WinUI and GTK frontends.

Try a preview

Previews use Release builds and skip Microsoft Store, App Store, and Play Store submission. macOS builds are still signed and notarized. Each preview has its own release notes, five download files, a build manifest, and SHA256 checksums.

Find the latest preview →

Installing and updating

Download subsequent previews manually. Preview releases do not update the normal macOS update feed or Homebrew cask, and they do not replace the normal release links.

  • Android previews install separately. They use a dedicated signing key and app identity, with their own history, settings, and saved devices. Install a newer preview over the previous one to retain that data.
  • Desktop previews use the existing app identity and data. Treat them as a replacement for your direct installation. They keep the base product version, so installing a different preview with the same version can require reinstalling the package. Close the app before switching builds.

The preview number in the filename and release notes identifies the build. Keep it when reporting a problem. During early development, a newer build may change stored data; returning to an older release is not guaranteed to work with that data.

Send and receive

  1. Open VniDrop on both devices. On the sender, choose files, a batch, or a folder.
  2. Create an invitation and share the .vnd file with the receiver. QR codes are also available where the platform and hardware support them.
  3. On the receiver, open the invitation in VniDrop and request the transfer.
  4. Approve the request on the sender. The receiver saves to its selected destination; Android defaults to Downloads.
  5. Keep both devices reachable until the transfer finishes. Stop sharing when you no longer want the invitation to work.

Files stream over an authenticated, end-to-end encrypted connection. Existing files are not silently overwritten. An invitation is a private access link: keep it between the people you intend to share with.

Approval is required by default. Choosing “Anyone with this transfer” lets anyone holding the invitation receive while the share remains active.

Saved devices

After a completed transfer, both devices can agree to remember each other. Next time, select that saved device to offer files without creating another invitation. The receiver still accepts each offer.

A saved device represents an app installation. Clearing its data or creating a new identity means saving it again. An Android preview is a separate installation from the normal Android app.

Both devices must be reachable to negotiate a transfer. There is no account, cloud inbox, or server queue that delivers files to an offline device. You can forget or block a saved device locally.

Network settings

Automatic mode is the default. VniDrop tries a direct connection and can use a relay when networks prevent one. A relay forwards encrypted traffic; it does not keep a hosted copy of the files.

Automatic
Public relay and discovery services, with direct connections whenever possible.
Strict custom
Only your configured HTTPS relays and direct connections. Startup fails if no configured relay can be established.
Custom with direct fallback
Prefer configured relays; continue with direct connections if they are unavailable.
Local only
Disable relays and public discovery. This is direct-only networking, not a guarantee that connections stay inside a LAN.

The three restricted modes do not fall back to public relays or public discovery. Configure compatible settings on both devices.

Stop active shares and transfers before applying a network change. The app tests the configuration and restores the previous one if it cannot connect. Create a fresh invitation after changing the relay configuration.

For custom relay limits, certificates, and authentication, see the relay setup reference.

When something gets stuck

The other device cannot connect
Keep both apps open, confirm the share is still active, and check the network mode on both devices. With Local only, both devices need a reachable direct path. Try a new invitation after a network change.
A transfer is waiting
Check the sender for an invitation approval request, or the receiver for a saved-device offer. Allow notifications if you want to see requests while another app is in front.
Files cannot be saved
Check available space and destination permissions, then choose an accessible folder. On Android, reselect a custom destination if its folder permission was revoked.
The native Linux app cannot open its credential store
Use a desktop session with a running, unlocked Secret Service provider such as GNOME Keyring. Saved-device credentials use the system keyring.

Report a bug

Use “Report a bug” in Settings, About, or the app menu. Include both platform versions, the preview number if applicable, what you did, and what you expected. Contact details and recent logs are optional.

Reports are sent only when you submit them. Transfer contents, invitations, and paths are excluded by design; avoid typing private invitations or file contents into the report yourself. See the privacy policy for details.

You can also open a GitHub issue. Report security problems through the private security process.

Build from source

Use these entry points from the repository root after installing the prerequisites in each platform guide. They describe the current source, which may be ahead of published downloads.

Windows · C# / WinUI 3
pwsh windows/scripts/build.ps1 -Test -Run

PowerShell, .NET, Windows SDK, Rust, and Bun. No Java runtime.

Linux · Rust / GTK 4 / libadwaita
make run-linux

GTK 4.10+, libadwaita 1.5+, Rust, and an unlocked Secret Service. No JVM.

Apple · SwiftUI
make open-apple APPLE_CODE_SIGNING=YES

Configure Local.xcconfig first. Use Xcode on macOS for Apple targets.

Android · Kotlin / Compose
make build-android

A local debug build for development; requires JDK, Android SDK/NDK, Rust, and Bun.

For repository checks and contributions, see CONTRIBUTING.md.