🔄

Synclet

A folder on your phone, kept in step with your NAS or your cloud — on a schedule, over whatever address that machine has today.

Every sync app assumes your server has one address. Yours does not: it is 192.168.1.10 at home, a hostname from outside, and something else entirely over the tunnel. Synclet treats that as normal.

What it syncs

One remote, several addresses

A remote in Synclet is a machine, not an address. It carries a list of rules, and the first one that matches the network you are on right now is the one that gets used:

WhenUse
On the home Wi-Fi192.168.1.10:22 — straight over the LAN, full speed
On any other Wi-Finas.example.net:2222
On mobile datanas.tailnet-1234.ts.net, through the tunnel

One set of credentials, one remote folder, three ways in. And a rule does not have to name a Wi-Fi network to work: by default Synclet simply tries the LAN address and sees whether it answers, which costs one round trip, needs no location permission, and is right more often than a network name is.

If nothing matches — you are in a café and the server is at home — the run is postponed, not failed. It happens when you get back.

It can bring up Tailscale for you

A remote that only exists inside your tailnet can be marked as needing it, and Synclet will ask Tailscale to connect before the transfer and wait for the address to answer.

Honest about the limits. This uses the automation hook Tailscale ships for Tasker and friends, not an official API: it can change, so Synclet checks it is there and hides the option when it is not. Tailscale has to be installed, signed in, and to have been connected by hand at least once — Android will not show the VPN consent dialog to an app running in the background. And since Android runs one VPN at a time, connecting the tailnet disconnects whatever else was up. Synclet says all of this before you switch it on, and never raises a tunnel for a job that did not ask for one.

Schedules that tell you the truth

Android has firm opinions about background work, and most sync apps let you configure a cadence the system will quietly ignore. Synclet has two schedulers and names which one a job is on:

Or skip clocks entirely: sync when the folder changes, when you join a particular Wi-Fi network, when the charger goes in, from a Quick Settings tile, or from Tasker through the app’s own intent.

Not losing your files is a feature

Privacy

Your files go from your phone to the remotes you configured, and nowhere else. There is no account, no server belonging to us, and nothing in the middle.

Credentials and OAuth tokens are held in the Android Keystore, never in a log and never in a crash report. SSH host keys are pinned the first time and a change stops the transfer instead of shrugging. The optional location permission exists for one reason — matching a rule to a named Wi-Fi network — the app works without it, and the network name never leaves the device. The full text is on the Privacy Policy page.

Get it

Synclet requires Android 8.0 or later. This is an early release: SFTP and WebDAV, one direction at a time, and nothing is ever deleted on either side — mirroring and two-way sync arrive with the safeguards they need, not before. What it does today it does honestly; what it does not do yet is listed in the app under Info.

Add this repository in F-Droid, or as a source in Obtainium, which reads the same repository:

https://releases.android.apps.gpm.name/repo

On a phone that already has F-Droid, this link adds it in one tap, fingerprint included. Otherwise check it against:

C983 7356 6EEC 235E CEFB 7D29 A582 6367 4D80 B432 8699 2BCB 7ACB 3AA4 3CA3 C41E

Updates then arrive on their own, verified against the repository signature.