A wrapper of Syncthing for Android. Head to the "releases" section or F-Droid for builds. Please seek help on the forum and/or social media apps first before creating issues on the tracker.
Switching is easier than you may think! See our wiki article for detailed instructions.
Our knowledge base is published here.
See detailed info.
This fork adds an opt-in metadata bridge for Android retro-gaming handhelds.
ES-DE normally stores every game's mutable state for a system in one
gamelist.xml; synchronizing that file from multiple handhelds creates coarse
file conflicts. The bridge keeps every gamelist.xml local and ignored, then
synchronizes one small .esde.json sidecar per game instead.
Both current ES-DE layouts are supported: the central
ES-DE/gamelists/<system>/gamelist.xml tree and the legacy/portable
ROMs/<system>/gamelist.xml layout used by external scrapers. Sidecars always
live below the same system directory in .esde-sync. For the ROM layout, Safe
Launch verifies and safely enables LegacyGamelistFileLocation in ES-DE's
settings/es_settings.xml before starting ES-DE.
Version 1 synchronizes favorite, completed, playcount, playtime,
lastplayed, and the exact opaque altemulator value. Missing sidecar fields do
not erase local values. ES-DE Safe Launch checks the selected Syncthing folders
and primary device before play, imports metadata, starts the chosen ES-DE app,
then exports and synchronizes changes after return. When the primary device is
unavailable, Start without sync remains available and marks local changes as
pending until a later successful synchronization.
Safe Launch declares Android's Home category, so it can be selected as the Home app on handhelds that use ES-DE as their launcher. Some Android builds display the package label Syncthing ES-DE Safe Sync in the Home picker and collapse the second launcher icon; the Gaming Sync settings therefore include direct buttons to open Safe Launch and the system Home-app picker. Android does not allow an app to disable its own “Pause app activity if unused” protection silently; the Gaming Sync settings provide a direct link to App info for that user-controlled switch.
On a fresh installation, a resumable First Setup wizard guides the device role,
ES-DE and gamelist roots, primary Syncthing device, Gaming Sync folders, shared
content categories, ignore protection, and Safe Launch/Home integration. SafeSync
automatically enforces SaveGamelistsMode=always, enables the legacy ROM gamelist
location only when required, and prevents a receiving device from seeding shared
state from fresh defaults. After play, return to ES-DE and press Home, then keep the
Safe Launch screen open until SAFE TO SWITCH DEVICE is shown.
Read the architecture, implementation plan, and test APK installation guide before enabling it.
The fork checks the official Syncthing releases every six hours. A newly
published version is committed directly to main, assigned a unique app tag,
built, test-signed, and published with SHA-256 checksums under
GitHub Releases. The
public test signature is stable for upgrades but is not a trusted production or
store signature.
When the original Syncthing-Fork is installed beside a fresh ES-DE Sync installation, onboarding offers a guided configuration migration. It uses the original app's encrypted export/import archive because Android prevents direct access to another package's private data, and preserves the Syncthing identity, folders, devices, index, and compatible app settings.
Do not run this fork and the original Syncthing-Fork against the same local folders at the same time. Stop or disable the original app first. This fork has its own application ID. A completed migration preserves the Syncthing identity; skipping it creates a new device that must be authorized on your NAS.
This project was forked from syncthing/syncthing-android.
Special thanks to the former maintainers:
See our document on privacy: privacy-policy.md.
The project is licensed under MPLv2.


