Note: Synchi is under active development and currently in alpha.
Expect breaking changes as the interface and behavior settle.

Synchi is a tool for syncing files between two locations.
You run it when you want, it figures out what changed since last time, and it asks you what to do when there are conflicts.

It works with local folders or over SSH, and it does not require any agent or service on the remote side.

If you’re curious why Synchi exists in the first place, see Why Synchi?.

What Synchi is good at

Synchi is designed to be run on demand.
It does not watch files, run in the background, or try to hide what it’s doing. You are in control of all changes that are made.

How it works

Synchi workflow: scan, diff against state, resolve, execute

At a high level, Synchi does the following:

  1. Scans both roots while applying include and ignore rules (include defines the sync scope)
  2. Detects changes since the previous run
  3. Classifies files as new, modified, deleted, or conflicting
  4. Plans the required operations
  5. Executes them safely, transferring only what actually changed

Because Synchi keeps state between runs, repeated executions are fast and stable.

What it looks like

A typical sync run: Synchi scans both roots, computes what changed, and executes only the necessary operations.

Terminal output of a synchi sync run

Quick start

# Install from crates.io
cargo install synchi

# Create your own config
# By default Synchi reads: ~/.config/synchi/config.toml
root_a = "./root_a"
root_b = "ssh://user@host/srv/data"
include = ["**"]
ignore = ["**/.venv/**"]
# Read configuration instructions for other options.

# Remote roots must use ssh://user@host/path.
# scp-style user@host:/path is not supported.

# Run
synchi sync

Requirements

synchi status is read-only. synchi sync prints the summary before touching either root and only writes during execution.

Most Linux systems already meet these requirements.

Documentation

If you run into issues or have questions, open a GitHub issue with details and logs.