Synclet

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

What it looks like

Synclet: pairs
Synclet: pair editor
Synclet: remote addresses
Synclet: safeguard
Synclet: activity
Synclet: run log
Synclet: pairs dark
Synclet: settings

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.

This is an early release (2026.10.1, beta). The page below describes what it does today, and says what it does not do yet.

What it syncs

SFTP and WebDAV are the only protocols in this release. FTP, SMB, cloud services and S3-compatible storage are planned; there are no dates.

Two-way, with a memory

After every run Synclet records what each side looked like. A file missing on one side but present in that record was deleted; a file missing from both the record and that side is new. Without the record two-way sync cannot tell them apart, and loses files.

One remote, several addresses

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

WhenUse
If 192.168.1.10 answers within 2 seconds192.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. A rule can be: if this address answers within 2 seconds (the default, and it needs no permission), any Wi-Fi, an unmetered network, mobile data, Ethernet, a VPN being active, or always.

There is no rule for a Wi-Fi network by name, and so no location permission: Android only tells a background app the network name if it has location access “all the time”, and Synclet will not ask for that.

If no rule matches — you are in a café and the server is at home — the run waits, it does not fail. It goes ahead when you get back.

It can start Tailscale for you

A remote that only exists inside your tailnet can be marked as needing it. When the Tailscale address does not answer, Synclet asks Tailscale to connect, waits for the address to answer (20 seconds by default), and runs. If you want, it disconnects Tailscale again afterwards — but only if it was Synclet that started it.

Honest about the limits. 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 other VPN was up. This uses the automation hook Tailscale ships for Tasker and friends, not an official API, so Synclet checks it is there and hides the option when it is not.

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’s scheduler is the deferred one — the platform’s own WorkManager — and it says so:

A precise scheduler — at 03:00 exactly — is not in this release.

Or skip the clock: Run now from the app, from the widgets, or after a dry run that lists what would change before anything does. A running sync can be cancelled.

On the home screen and in the shade

Not losing your files is a feature

None of the safeguards in this list can be turned off. They reduce the chance of a mistake spreading; they are not a backup, and a sync is not either.

Privacy

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

Passwords and SSH keys are stored encrypted on the device, never in a log. SSH host keys are pinned the first time and a change stops the run. Synclet asks for no location permission. The one thing that can be sent to the author is a bug report or an idea you write yourself in the Info tab, and only when you press send. The full text is on the Privacy Policy page.

Get it

Synclet requires Android 8.0 or later, and speaks English and Italian (switch in the app). It is free, with nothing to buy yet.

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.

Synclet is not on Google Play yet. When it is, the Google Play build and the one from this repository will be signed with different keys, so Android treats them as two apps: moving from one to the other means uninstalling first.

Leggi questa pagina in italiano.

Frequently asked questions

What is Synclet?

Synclet is an Android app that keeps a folder on your phone in step with a folder on a server or NAS, over SFTP or WebDAV, either on a schedule or when you press a button. A remote can carry several addresses, and the first rule matching the network you are on is the one used.

Is Synclet free, and is it open source?

The app is free to download, has no advertising and contains no purchase yet. The terms say some features may later be offered as a paid unlock, and that whatever is free today stays free for installs already using it. The source code is not publicly available.

Do I need an account?

No. There is no Synclet account and no server of ours in the middle: files go from your phone straight to the remotes you set up. An e-mail address is asked only for optional things such as reading replies to a bug report or voting on a feature request. See the privacy policy.

What data does Synclet collect, and where is it stored?

Credentials, configuration, sync state and run logs stay on your phone, with passwords and SSH keys stored encrypted. Your files go only to the remotes you configured. There are no analytics and no crash-reporting service in the app. What you send from the feedback screen is the only thing that reaches us, and only if you press send.

Which protocols does it support?

SFTP (password or SSH key) and WebDAV (Nextcloud, ownCloud and generic servers). That is all in this release: FTP, SMB, cloud services and S3 storage are planned, with no dates promised.

Will it delete my files?

Only if you switch on mirroring deletions for a pair, which is off by default. Even then a pair’s first run never deletes anything, a run that would delete more than a threshold (25 % of the files on that side by default) stops and asks, every deletion is listed by name, and a one-way pair never deletes on its source side.

How often does it sync, and how exactly?

Roughly every 15 minutes, hour, 6 hours or day, optionally only on an unmetered network, while charging, or when the battery is not low. Android decides the exact moment: 15 minutes is the platform’s floor and Doze can delay a run by much more, so Synclet says “about every hour” and not “every hour”. You can also run a pair whenever you like. Exact-time scheduling is not in this release.

Does it need location permission?

No. Synclet asks for no location permission. It picks an address by seeing which one answers within two seconds, which needs no permission at all. It does not match Wi-Fi networks by name: Android only tells background apps the network name if they hold location access “all the time”, and Synclet will not ask for that.

Which Android versions and languages?

Android 8.0 or later. The app is in English and Italian, with a language switch inside the app, and has a light and a dark theme.

How do I delete my data?

Uninstalling the app removes everything it stores on the phone. If you proved an e-mail address for reports or votes, ask for the account to be closed as described on the delete account page.