← All reportsPublic report

syncthing/syncthing

Open Source Continuous File Synchronization

88k stars Go View on GitHubprofiled 14d ago
Try GitZoid
38PRs this week
6Contributors
0Deps scanned
0Issues found
01 · Repo overview

How syncthing is put together

Syncthing is a continuous peer-to-peer file synchronization program written almost entirely in Go. The repository contains the main syncthing daemon (cmd/syncthing) plus auxiliary services: a global discovery server (cmd/stdiscosrv) and a relay server (cmd/strelaysrv), each deployable via dedicated Dockerfiles. Core logic lives under lib/ (config, protocol, api, beacon, nat, relay/protocol, tlsutil) and internal/ (db, blob storage, slogutil, generated protobuf types). Data flow: devices announce addresses to the discovery server over TLS (identity derived from client certificates), connect directly or via relays using BEP over TCP/QUIC, and synchronize folder contents tracked in an SQLite-backed database, with a local web GUI served by lib/api.

Languages

GoHTML/JavaScript (GUI)Shell

Frameworks

net/http standard libraryjulienschmidt/httprouter (REST API)alecthomas/kong (CLI)thejerf/suture/v4 (supervisor trees)prometheus/client_golang (metrics)quic-go

Datastores

SQLite (via mattn/go-sqlite3 and modernc.org/sqlite)in-memory discovery store with disk flush + optional S3 blob backupAMQP broker (discovery replication)

Infrastructure

Docker (multiple per-service Dockerfiles)systemd/upstart/runit/launchd/FreeBSD rc/Solaris SMF units under etc/Prometheus metrics endpointsGPG-signed releases with compiled-in ECDSA upgrade signatures

Major components

cmd/syncthing

The main synchronization daemon entrypoint, including monitor process, crash/block/heap profiling, and platform-specific helpers.

cmd/stdiscosrv

Global discovery server that accepts device announcements over HTTPS/TLS and serves address lookups, backed by an in-memory database with periodic flushes.

cmd/strelaysrv

Relay server that proxies encrypted traffic between two clients via keyed sessions, with rate limiting, NAT traversal, and optional relay-pool joining.

lib/api

The REST/GUI web server including authentication (api_auth.go), CSRF protection (api_csrf.go), static asset serving, config handling, and support bundles.

lib/config

Configuration model, validation, migrations, and device/folder/GUI/LDAP configuration types.

lib/protocol

DeviceID derivation from certificates and wire-protocol primitives shared across all binaries.

lib/relay/protocol

Wire protocol messages (e.g., SessionInvitation) spoken between clients and the relay server.

internal/db and internal/blob

Database abstractions (typed stores, counts, observed records) and pluggable blob storage including an S3 backend.

Over the past five weeks, Syncthing's development shifted from performance tuning and internal cleanups into a stretch of important bug fixes, particularly around the database, file syncing edge cases, and the web interface. The team also modernized the build by moving to Go 1.27 and refreshing dependencies, and made small reliability improvements to the discovery servers that help devices find each other.

Week by week

2026-08-24A quiet week focused on housekeeping: outgoing network requests now identify themselves properly and documentation was refreshed.latest2 changes

Chore

Outgoing requests now carry a proper User-Agent

All HTTP requests Syncthing sends out now include a User-Agent label identifying the app, which helps servers understand what software is contacting them.

Docs

Docs, translations, and contributor list updated

The user interface text, manual, and credits were refreshed with the latest translations and contributors.

2026-08-17The project upgraded its underlying technology, moving to a newer version of the Go programming language and updating supporting libraries.4 changes

Chore

Updated third-party dependencies

External code libraries the project relies on were brought up to their latest versions for security and stability.

Chore

Moved to Go 1.27 as the build standard

Syncthing is now built with Go 1.27, and computers running it need at least Go 1.26 if compiling from source.

Chore

Infrastructure updates merged

Behind-the-scenes infrastructure changes were folded into the main codebase.

Docs

Docs, translations, and contributors refreshed

Routine weekly update to documentation, translations, and the contributor list.

2026-08-10Several fixes landed this week, including smoother behavior for the device-discovery service and a fix so relaunching the app opens its interface instead of showing an error.5 changes

Fix

Discovery server announcements tuned

Devices re-announce their presence slightly less often and with better smoothing, reducing unnecessary chatter on the discovery service.

Fix

Server errors now logged properly

When the discovery server returns an error page, it also records a log entry so problems can be diagnosed later.

Fix

Clearer error responsibility on the global discovery server

Data problems reported to the central discovery server are now correctly attributed to misbehaving client devices rather than the server itself.

Fix

Relaunching the app now opens the web interface

Starting Syncthing again while it's already running now brings up the management screen instead of printing an error message.

Docs

Docs, translations, and contributors updated

Weekly refresh of documentation, translations, and the contributor list.

2026-08-03A bug-fix-heavy week addressing broken API responses, mishandled receive-only folders, and a potential deadlock in the sync engine.5 changes

Fix

Metrics and support bundle API fixed

The built-in web interface now correctly returns usage statistics and diagnostic support bundles when requested.

Fix

Receive-only folder changes handled correctly

Changes made inside folders marked 'receive-only' (where edits aren't supposed to propagate) are now handled properly instead of causing confusion.

Refactor

Code style cleanup from automated tooling

Standard automated style improvements were applied across the codebase with no functional change.

Fix

Database connections and syncing made more robust

Improved handling of database connections and how many files sync at once, fixing a situation where syncing could freeze entirely.

Docs

Docs, translations, and contributors updated

Weekly refresh of documentation, translations, and the contributor list.

2026-07-27This week was all about making Syncthing faster, with several targeted performance optimizations to file syncing internals.5 changes

Refactor

Local database stats included in performance reports

Performance diagnostics now include information about local database entries for better insight.

Refactor

Disk-saving operations optimized

The way Syncthing forces data to be safely written to disk was streamlined, reducing slowdowns during syncing.

Refactor

Filename case-handling cache sped up

The system that remembers whether filenames use upper or lower case got faster, helping on systems where filename casing matters.

Refactor

Rename detection no longer double-checks files

When detecting renamed files, existing files are no longer checked twice, saving wasted effort during syncing.

Docs

Docs, translations, and contributors updated

Weekly refresh of documentation, translations, and the contributor list.

03 · Security check

Dependencies and code review

0 dependencies scanned

Dependency advisories

Security Watch

No known advisories across 0 scanned dependencies.

No known advisories in the scanned dependencies.

Code review

37 files reviewed; 0 of 1 claimed findings confirmed after verification.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required