A native Linux desktop interface for sending and receiving files with Tailscale Taildrop.
Tail-up puts Tailscale's Taildrop commands behind a simple libadwaita interface. It discovers eligible devices on your tailnet, sends one or more files, and can watch a chosen directory for incoming files while it runs in the system tray.
- Discover Taildrop devices and see whether they are available.
- Send multiple local files selected with the file picker or drag and drop.
- Automatically receive incoming files into a directory of your choice.
- Runs continuously from a system tray indicator.
Tail-up calls the Tailscale CLI as your desktop user. Before launching the app, install Tailscale, sign in to your tailnet, and grant your user permission to operate Tailscale without sudo:
sudo tailscale set --operator="$USER"This is a one-time setup for the current user. Without it, Tailscale operations normally require root privileges and Tail-up will not be able to run them. Verify the connection afterward:
tailscale statusThe devices you want to send to must support and allow Taildrop.
Building Tail-up requires:
- A C++20 compiler
- Meson 1.0 or newer, Ninja, and
pkg-config - GTK 4.10 or newer
- libadwaita 1.4 or newer
- JSON-GLib 1.6 or newer
- GTK 3.24 or newer
- Ayatana AppIndicator 0.5 or newer
- libportal 0.7 or newer But i recommend building with Flatpak instead.
Install Flatpak Builder and the GNOME 50 SDK and platform from Flathub, then build the included manifest:
flatpak install --user flathub org.gnome.Platform//50 org.gnome.Sdk//50
flatpak-builder --user --install --force-clean \
flatpak-build com.jafed.tailup.jsonLaunch the Flatpak build with:
flatpak run com.jafed.tailupThe Flatpak delegates Tailscale commands to the host, so the host Tailscale CLI must still be installed, running, and signed in.
Enable diagnostic output with either the command-line option or environment variable:
tail-up --debug
TAIL_UP_DEBUG=1 tail-upIf no devices appear, first check the same commands Tail-up relies on:
tailscale status
tailscale file cp --targetsIf the tray indicator is unavailable, Tail-up will continue to work while its window is open. Some desktops, including GNOME, require an AppIndicator or StatusNotifier extension for tray icons.
