Skip to content

About

A Rust implementation of the Syncthing BEP protocol, wire-compatible with official Go Syncthing. Features block-level P2P sync over TLS, multi-path discovery, REST API, TUI, and system tray. Zero dependencies, single static binary.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

9 stars

Watchers

0 watching

Forks

Latest commit

 

History

437 Commits

Folders and files

syncthing-rust logo

syncthing-rust

Syncthing BEP Protocol in Rust

Zero runtime dependencies · Wire-compatible with Go Syncthing · Single static binary

English · 中文

Rust CI License


Introduction

A Rust implementation of the Syncthing BEP protocol. It provides end-to-end file synchronization with zero runtime dependencies, compiled into a single static binary that is wire-compatible with the official Go daemon.

This project is currently in a Production phase. Core protocols, end-to-end sync, Windows system tray, and TUI are stable. For the latest release notes and changelog, please refer to the Releases page.


Quick Start

Prerequisites: Rust 1.85 or higher.

# Build from source
git clone https://github.com/juice094/syncthing-rust.git
cd syncthing-rust
cargo build --release

# Initialize configuration
cargo run --release -- init

# Start the daemon
cargo run --release -- run --config-dir ~/.syncthing

An Ed25519 TLS certificate is generated automatically on first run. By default, the BEP protocol listens on port 22001 and the REST API on 8385.

To explore other commands such as TUI, Tray, or Relay Server, run:

cargo run --release -- --help

Core Features

  • Full BEP Protocol: prost codec, TLS handshake, ClusterConfig, and Index with LZ4 compression.
  • End-to-End Sync: Block-level pull/push, SHA-256 scanning, and bidirectional sync with sub-second change detection.
  • Multi-Path Discovery: LAN UDP, Global HTTPS mTLS, STUN, UPnP, and Relay v1.
  • Versioning: Simple (keep=N) and Staggered (time windows) with .stversions/ archiving.
  • Go Interop: Strictly wire-compatible with the official Go Syncthing daemon.
  • Observability & Integration: Real-time TUI, Prometheus metrics, structured JSON logging, and an MCP Bridge for AI agents.

For advanced orchestration (concurrency limits, predictive health checks) and deployment options, see the Documentation.


Known Limitations

  • High-latency / unstable networks: Bulk large-file transfers may drop behind firewalls. Mitigated via auto-reconnect and keepalive.
  • No symlink sync: Symlinks are currently skipped silently.
  • No Web GUI: Interfaces are limited to TUI, system tray, and REST API.
  • No QUIC transport: TCP and Relay v1 are the only supported transport layers.

Documentation

To keep this README focused and stable, detailed technical documentation has been separated:


Contributing

See CONTRIBUTING.md for detailed guidelines. Before submitting a PR, ensure the following checks pass:

cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings -W clippy::await_holding_lock
cargo fmt --all -- --check

Community & Support


License

Licensed under MIT + Commercial. See LICENSE-COMMERCIAL.md for commercial support.

About

A Rust implementation of the Syncthing BEP protocol, wire-compatible with official Go Syncthing. Features block-level P2P sync over TLS, multi-path discovery, REST API, TUI, and system tray. Zero dependencies, single static binary.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

9 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages