Pre-launchUse the same build everywhere · keep a backup

One folder.
Wherever the work runs.

Keep files moving between your laptop, workstation, and remote machines. syncroot connects trusted devices directly, with no central syncroot server or account.

Built for folders changed by people, scripts, and coding agents.

$ syncroot status ~/shared

~/shared          in sync        1,284 files
  laptop          connected      up to date
  workstation     connected      up to date
  build-box       last seen 8m   3 operations behind

# machine-readable state is available with --json
Write once. Read the complete file on every connected device.all peers current
laptop
~/shared
  • ✓ plan.md
  • ✓ inputs/spec.pdf
build-box
~/shared
  • ✓ plan.md
  • ✓ inputs/spec.pdf
workstation
~/shared
  • ✓ plan.md
  • ✓ inputs/spec.pdf

· arriving✓ published — complete and hash-verified

Stop building glue just to move files.

You start work on a laptop. A long-running job finishes on a workstation. A coding agent produces a result on a remote machine. Eventually, someone has to move those files—or maintain the scripts and services that do it.

syncroot gives those machines the same working folder over a network you already trust. It is designed for software that reads immediately and cannot stop to resolve a conflict dialog.

Files that software can safely act on

Complete files

Never open half a transfer

syncroot publishes a file only after all of its chunks have arrived and passed a hash check. Readers see the complete file or nothing yet.

Visible progress

See which machines are caught up

Check how far each device has progressed instead of guessing whether a missing file was never written or simply has not arrived.

Frequent changes

Keep work moving

Filesystem watching picks up normal writes as they happen. Periodic full scans remain a safety check, not the main synchronization loop.

Predictable history

Know where every change came from

Every operation records its originating device. If two devices write at once, syncroot keeps both versions under predictable names.

Connect two devices with one private invite.

Install a package when one is available, or build from source with a recent stable Rust toolchain. A source install also needs the provided user service.

Install syncroot

Packages include the systemd user unit. When you build from source, install the binary, copy contrib/systemd/syncroot.service into your user unit directory, and point ExecStart at the installed binary.

$ cargo build --release
$ cargo install --path .

Share a folder from the first device

Tell syncroot the stable name or address other devices can reach. The invite grants access to this folder, so carry it privately.

$ systemctl --user enable --now syncroot
$ syncroot listen laptop.mesh.example
$ syncroot init ~/shared
$ syncroot invite ~/shared

Join from the second device

Use the invite on the second device. If the first device is temporarily offline, syncroot saves the invite and retries in the background.

$ systemctl --user enable --now syncroot
$ syncroot listen desktop.mesh.example
$ syncroot connect ~/shared 'syncroot://laptop.mesh.example:9494/abc123'
$ syncroot status

An invite can come from any existing device. Roster gossip discovers the rest; devices are not paired one by one.

Your tools already know how to use files.

Give each autonomous writer its own subtree and let results arrive as ordinary files—without adding another storage API. Use write-once names, and check machine-readable status before deciding that an absent result was never written.

Read the agent conventions →
~/shared/
├── plan.md                 # read only
├── inputs/                 # read only
└── agents/
    ├── planner/
    │   ├── journal.d/
    │   └── out/01J…-plan.md
    └── scraper/
        ├── journal.d/
        └── out/01J…-rows.json

Measure first. Make claims later.

There are no published performance numbers yet. The benchmark contract defines what to measure and what every result must include, so you can reproduce the numbers when they arrive.

Review the benchmark contract →

A few things to know before you start

Boundary

Use trusted devices

Every folder member can write anywhere. syncroot does not add application-layer encryption or per-path permissions.

Boundary

Keep a backup

Deletes propagate to every device, so syncroot must not be the only copy of anything important.

Boundary

Coordinate work elsewhere

A synchronized file cannot claim a task atomically. Use a store with compare-and-swap when work needs exactly one owner.

Boundary

Expect pre-launch gaps

Roster removal, snapshot join, compaction, garbage collection, symlink sync, and metadata sync are not implemented yet.

Current file-size limit

Files larger than 20 MiB are temporarily ignored while large-file storage and transfer are redesigned.