---
title: "syncroot — one folder, wherever the work runs"
description: "Keep files moving between your laptop, workstation, and remote machines. Direct folder sync for devices you trust."
status: pre-launch
---

# One folder, wherever the work runs

Keep files moving between your laptop, workstation, and remote machines.
syncroot gives trusted devices the same working folder without a central
syncroot server or another account. It is built for folders changed by people,
scripts, and coding agents.

> **Pre-launch.** Wire and disk formats may change without migration. Run the
> same build on every device, keep a backup, and do not use syncroot as the only
> copy of irreplaceable data. Files larger than 20 MiB are currently ignored.

## Connect two devices

On the first machine, start syncroot and create an invite for the folder:

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

Carry the private invite URL to the second machine:

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

The first device can be temporarily offline when you connect. syncroot saves the
invite and retries in the background. Later invites can come from any connected
device; you do not need to pair every device by hand.

## What this gives you

- **Never open half a transfer.** A file appears only after its complete,
  hash-verified contents have arrived.
- **See which machines are caught up.** Per-peer progress distinguishes a file
  that was never written from one that has not arrived yet.
- **Keep work moving.** Filesystem watching picks up normal writes; periodic
  scans remain a safety check.
- **Know where changes came from.** Every operation records its originating
  device.
- **Keep every concurrent version.** syncroot preserves simultaneous edits
  under predictable names rather than guessing from clock time.

## Before you start

Use syncroot only with trusted peers on an existing LAN, private mesh network,
or other network that provides the security you need. syncroot does not add
application-layer encryption, a relay, NAT traversal, or per-path permissions.

Keep a backup because deletes propagate. Use a separate coordination store when
work needs exactly one owner; synchronized files cannot provide an atomic claim.
Roster removal, snapshot join, compaction, garbage collection, and some
filesystem metadata features are not implemented yet.

## For autonomous writers

Your tools already know how to read and write files. Give each agent one subtree,
such as `agents/<agent-id>/`, and treat all other paths as read-only. Use
write-once names and one-file journal entries. Markers should identify artifacts
by path, byte length, and hash because separate paths may arrive in either
order. Before treating a result as unfinished, check
`syncroot status <root> --json` to see whether its device is caught up.

## Documentation

- [User guide](/readme.md)
- [Agent conventions](/agents.md)
- [Benchmark method](/benchmarks.md) — no results published yet
- [Source and issues](https://github.com/yuvadm/syncroot)

Apache-2.0.
