Two-way file sync that shows you the plan before it moves anything.
ArrowLoop keeps two folders in step, say a NAS share and a laptop, or a phone and a WebDAV cloud. It remembers what both sides last agreed on, lists every change before a run, and stops rather than delete more than it should.
Important
Android testers wanted. Google Play only lists an app from a new developer account after at least 12 testers have kept it installed for 14 days. If you have an Android phone:
- Join the tester group.
- Open the test page and tap Become a tester.
- Install ArrowLoop from Google Play and keep it for 14 days. Using it for real helps most, and anything that goes wrong is welcome as an issue.
Always downloads the latest build
A one-knight job: I build it, keep it running, work through the issues and add what people ask for, until nothing is missing. It is free, with no accounts, no telemetry, no ads and no paid tier. No asterisk anywhere. Nothing readable ever leaves your own walls. Forged on evenings and weekends, with heart and stubbornness.
If it has earned a place on your server or computer, toss a coin to your knight: it helps cover the costs and keeps the project alive. It also makes this knight's heart beat a little faster. Three ways below, whichever suits you.
- What it looks like
- What it does
- Getting started
- Documentation
- How AI is used here
- Support this project
The desktop app: every copy, deletion and conflict of the next run, before anything moves
The same interface from the container, in any browser on your network
The Android app, with the engine running on the phone
- Two-way, with a memory. A state database per job tells a new file from a deleted one, so nothing deleted comes back and nothing new disappears. How it decides
- A plan before every run. The preview lists every copy, deletion and conflict. Untick a row and that file stays exactly as it is. The interface
- Brakes instead of surprises. Deletions go to a trash, a run that would delete too much or finds a side suddenly empty stops, and a crash at any step can be picked up again. Safety
- Over 60 clouds and servers. Every rclone backend is built in: SMB, SFTP, S3, WebDAV, Nextcloud, OneDrive, Google Drive and the rest. Configuring a job
- Runs on its own. Schedules, real-time watching, notifications and a run log that writes down every run. Configuring a job
- Wherever you need it. A Docker container for your server or Unraid, a desktop app for Windows, macOS and Linux, and an Android app that runs the engine on the phone. Installing
On a server, one container is enough:
docker run -d --name arrowloop -p 8422:8422 \
-v /path/to/config:/config \
-v /path/to/data:/data \
junkerderprovinz/arrowloop:latestThen open port 8422 in a browser and add your first job. On Unraid, install it from Community Applications instead. The desktop and Android apps are the download buttons above. Passwords, reverse proxies and updates are in the installation guide.
The documentation has the details this page leaves out:
- Installing: container, Unraid, desktop, Android and the single binary
- Configuring a job: every field of the job file, schedules, watching and notifications
- The interface: the preview, editing jobs, history, conflicts and the trash
- Command line: sync, jobs, web, daemon and service
- How it decides: the decision table, renames, case and Unicode
- Safety: the trash, the brakes, half-written files and crashes
- How it compares: against GoodSync, FreeFileSync, Syncthing, rclone bisync and others
- How it is tested: the convergence test, broken guards and CI on three systems
- When something goes wrong: refused runs, files that keep copying and a container that restarts
One knight builds this, and AI is one of the tools I work with, the same way I work with an editor or a compiler. It helps me write code and documentation and it checks my work, and that saves me a good many evenings. It does not make the decisions, though. I read and understand everything before it ships, and if something here breaks, that is on me and not on the tool.
You do not have to take my word for it. The code is open and every release note is written by hand. The issue tracker shows how problems actually get handled, including the ones I got wrong the first time. If you find something that is not right, open an issue and I will look at it.
Questions? Check the support thread. Bugs, ideas or feature requests? Please open a GitHub issue.
A one-knight job: I build it, keep it running, work through the issues and add what people ask for, until nothing is missing. It is free, with no accounts, no telemetry, no ads and no paid tier. No asterisk anywhere. Nothing readable ever leaves your own walls. Forged on evenings and weekends, with heart and stubbornness.
If it has earned a place on your server or computer, toss a coin to your knight: it helps cover the costs and keeps the project alive. It also makes this knight's heart beat a little faster. Three ways below, whichever suits you.
Reporting something that went wrong is worth as much. A two-way sync meets filesystems, network shares and timing that no test suite can reach on its own, and the bugs that matter here are the quiet ones. If a run did something you did not expect, open an issue with the run's own log line: it names the job, the file and the reason.
