Local-first timelapse sync for the Snapmaker U1.
Discover your printer, automate downloads, and keep every timelapse organized on Windows and macOS — without sending anything to the cloud.
SnapSync is an open-source desktop companion for the Snapmaker U1. It connects directly to the printer over your local network, finds new timelapse videos, validates each download, and stores it in the folder you choose.
Important
SnapSync is an independent community project. It is not affiliated with, endorsed by, or supported by Snapmaker.
|
Local first No cloud relay, telemetry, or third-party upload. |
Safe by design Atomic transfers, size validation, and host-locked URLs. |
Set and forget Background schedules, tray mode, and persistent deduplication. |
|
Automatic discovery Finds U1 printers through mDNS, with direct IP fallback. |
Reliable transfers Downloads to a temporary file and validates its size before completion. |
|
Smart deduplication Skips known videos while confirming the local copy still exists. |
Background operation Runs on a configurable schedule and stays available in the system tray. |
|
Visual history Tracks downloaded, skipped, and failed transfers in one clean interface. |
Optional thumbnails Saves a JPG preview next to each downloaded video. |
SnapSync only reads files from the printer. It never deletes remote timelapses.
flowchart LR
U1[Snapmaker U1] -->|mDNS discovery| Core[Rust and Tokio core]
U1 -->|Local Moonraker HTTP| Core
Core -->|Validated atomic download| Folder[Local timelapse folder]
Core <--> Tauri[Tauri desktop shell]
Tauri <--> UI[Vue and TypeScript UI]
- SnapSync discovers the U1 through
_snapmaker._tcp.local.or uses the IP you provide. - It queries
/server/files/list?root=camerathrough the local Moonraker API. - New videos are downloaded as
.partfiles. - SnapSync validates the received size and then atomically renames the file.
- Persistent history prevents unnecessary downloads on future syncs.
| Layer | Technology | Responsibility |
|---|---|---|
| Interface | Vue 3 + TypeScript | Reactive desktop UI and type-safe IPC contracts |
| Tooling | Vite | Fast development server and optimized frontend builds |
| Desktop | Tauri 2 | Native windows, tray integration, autostart, and installers |
| Core | Rust + Tokio | Discovery, scheduling, downloads, and persistence |
| Printer | mDNS + Moonraker HTTP API | Local discovery and timelapse access |
| Delivery | GitHub Actions | Tested Windows EXE and universal macOS DMG releases |
Get the newest build from GitHub Releases.
- Download
SnapSync_*_x64-setup.exe. - Run the NSIS installer.
- Open SnapSync from the Start menu.
- Download
SnapSync_*_universal.dmg. - Open the DMG and move SnapSync to Applications.
- Launch SnapSync from Applications.
Warning
Current builds are not code-signed. Windows SmartScreen or macOS Gatekeeper may display a warning. On macOS, use System Settings → Privacy & Security → Open Anyway after the first blocked launch. Signing and Apple notarization are planned.
- Open Settings → Printer.
- Select Search network, or enter the U1 IP address manually.
- Select Test to verify the connection.
- Under General, choose a destination folder.
- Select Sync now or enable automatic synchronization.
- Snapmaker U1
- Windows 10 or newer, or macOS 10.15 or newer
- Computer and printer connected to the same local network
- Local firewall access:
- UDP
5353for mDNS discovery - TCP
7125for Moonraker - TCP
8080for the U1 download fallback
- UDP
- Node.js 20 or newer
- Stable Rust toolchain
- Tauri 2 system dependencies
- Windows: Visual Studio Build Tools with C++ and WebView2
- macOS: Xcode Command Line Tools
npm ci
npm run tauri devnpm run check
cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warningsnpm run tauri buildNative packages must be created on their target operating system. Windows
produces an NSIS .exe; macOS produces a .dmg.
Every vX.Y.Z tag on main starts the cross-platform release pipeline:
flowchart LR
Tag[Version tag] --> Verify[Tests and version validation]
Verify --> Win[Windows NSIS build]
Verify --> Mac[Universal macOS build]
Win --> Release[GitHub Release]
Mac --> Release
To publish a future version:
- Set the same
X.Y.Zversion inpackage.json,src-tauri/Cargo.toml, andsrc-tauri/tauri.conf.json. - Merge the version change into
main. - Create and push the matching tag:
git tag vX.Y.Z
git push origin vX.Y.ZThe release stays in draft mode until both installers finish successfully.
- Communication stays on your local network.
- No analytics or cloud relay is used.
- Timelapses are never uploaded to a third party.
- Logs do not contain video contents or credentials.
- Printer-provided URLs are restricted to the configured printer host.
The proprietary U1 camera service is not included in this repository.
Issues and focused pull requests are welcome. Before opening a pull request:
npm run check
cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warningsSnapSync is developed and maintained by Papai Nerd.
SnapSync is free and open-source software licensed under the GNU General Public License v3.0.