Skip to Content
Configuration

Configuration

Where settings live

treesync keeps its configuration and local state in ~/.treesync. This holds your device identity, sign-in session, per-folder settings, and the index that tracks what’s already synced.

Don’t commit ~/.treesync or copy it between machines — each device has its own identity and key material. Deleting it resets treesync on this device; your synced files on disk are untouched.

You manage settings through treesync commands rather than editing files by hand.

Excluding files

By default treesync mirrors everything in a synced folder. To leave files out, add an ignore file — treesync honors both .treesyncignore and .syncignore.

They use gitignore-style patterns and are nestable: a rule in a subdirectory’s ignore file applies within that subdirectory. Place one at the root of your synced folder and/or inside individual repos.

~/code/.treesyncignore
# Build output and dependencies node_modules/ dist/ build/ target/ .venv/ # Big local artifacts *.iso *.zip # A repo you don't want synced scratch-repo/

Mirror a repo without its history

A full mirror includes each repo’s .git. To sync a repo’s working files but not its history, ignore .git — it’s an ordinary rule, no special mode:

.git/

What treesync skips automatically

A few transient, machine-local files are never synced, because copying them across devices would be wrong. This is always on — nothing to configure:

  • Git’s transient lock files — index.lock and any *.lock inside a .git directory (HEAD.lock, ref locks, packed-refs.lock).
  • Unix sockets, FIFOs, and device files.
  • treesync’s own state directory.

Your committed dependency lockfiles (Cargo.lock, yarn.lock, poetry.lock, flake.lock, …) are versioned files and sync normally — only .git-internal locks are skipped.

Symlinks (known limitation): treesync doesn’t sync symbolic links yet — they’re skipped for now. Support is coming.

Cross-OS folders

Platform-specific directories like node_modules (native binaries) and .venv can break when shared between operating systems. If you sync the same folder across macOS and Linux, exclude them with an ignore rule.

On the roadmap

  • Respect each repo’s .gitignore — a per-folder option to also skip whatever git already ignores.
  • Ignore presets — ready-made rules for node, python, rust, and friends.
  • Selective sync — choose which subfolders sync on a given device.
  • Bandwidth limits — cap how much upload/download treesync uses.