Cloud sync for Linux,
done right.

On-demand virtual filesystem. Multi-backend via rclone. Conflict-safe bidirectional sync. No data loss.

FUSE3 70+ backends Rust MIT / Apache-2.0
Get Started View on GitHub
~/GoogleDrive/                  ← FUSE3 virtual mount
├── Documents/
│   ├── report.pdf              ← hydrated (local cache)
│   └── draft.docx              ← placeholder (fetched on open)
└── Photos/
    └── 2025/                   ← listing from remote index

Why stratosync?

Linux has excellent cloud sync tools, but none that combine on-demand hydration, native filesystem integration, and conflict safety.

ApproachOn-demandNative FSConflict-safeMulti-backend
stratosyncyesyes (FUSE)yesyes (70+)
rclone mountyesyes (FUSE)noyes
rclone bisyncnono (CLI)partialyes
Insync / OverGrivenopartialpartiallimited
GNOME Online AccountsnoGVFS onlynolimited

On-demand hydration

Files appear instantly with real names and sizes. Content downloads only when you open a file. Subsequent reads use the local cache.

Bidirectional sync

Edits save to local cache immediately and upload in the background after a debounce window. fsync() triggers instant upload.

Conflict resolution

Concurrent edits trigger automatic 3-way merge for text files, or produce .conflict siblings for binary files. Content-hash ETags ensure no silent overwrites.

📦

Cache management

Bounded LRU cache with configurable quota. Least-recently-used files are evicted locally but remain in the cloud. Pinned files are never evicted.

🔌

70+ cloud backends

Powered by rclone. Google Drive, OneDrive, Dropbox, S3, Nextcloud, SFTP—any rclone remote works as a stratosync mount.

🛠

Native filesystem

FUSE3 mount works with every tool: ls, cat, vim, cp, your IDE, your file manager. No special client needed.

Prerequisites

Linux

x86_64 or ARM64
with FUSE3 support

FUSE3

apt install fuse3
or dnf install fuse3

Quick Start

From zero to mounted cloud drive in four steps.

1. Configure an rclone remote

rclone config                     # interactive setup for your cloud provider
rclone lsd gdrive:                # verify it works

2. Install stratosync

# Debian / Ubuntu
curl -LO https://github.com/dmcbane/stratosync/releases/latest/download/stratosync_0.11.0_amd64.deb
sudo dpkg -i stratosync_0.11.0_amd64.deb

# Fedora / RHEL
curl -LO https://github.com/dmcbane/stratosync/releases/latest/download/stratosync-0.11.0-1.x86_64.rpm
sudo dnf install ./stratosync-0.11.0-1.x86_64.rpm

# Arch (AUR)
yay -S stratosync-git

# Any distro (tarball)
curl -LO https://github.com/dmcbane/stratosync/releases/latest/download/stratosync-0.11.0-linux-x86_64.tar.gz
tar xzf stratosync-0.11.0-linux-x86_64.tar.gz
sudo cp stratosync-0.11.0-linux-x86_64/stratosync* /usr/local/bin/

ARM64 packages also available — replace amd64/x86_64 with arm64/aarch64. See all downloads on the releases page.

3. Configure a mount

# ~/.config/stratosync/config.toml

[daemon]
log_level = "info"

[[mount]]
name          = "gdrive"
remote        = "gdrive:/"          # rclone remote name
mount_path    = "~/GoogleDrive"     # where files appear
cache_quota   = "10 GiB"
poll_interval = "30s"

4. Start the daemon

systemctl --user start stratosyncd
ls ~/GoogleDrive/                  # your cloud files are here

Build from Source

For development or if prebuilt packages aren't available for your platform.

Rust 1.80+

rustup update stable

libfuse3-dev

apt install libfuse3-dev

pkg-config

apt install pkg-config

git clone https://github.com/dmcbane/stratosync
cd stratosync
./install.sh                       # builds, installs to ~/.local/bin, enables systemd service

Usage

Once mounted, cloud files work like any local directory.

Filesystem operations

# Browse
ls ~/GoogleDrive/Documents/

# Read (downloads on first access)
cat ~/GoogleDrive/report.pdf

# Edit (uploads automatically)
vim ~/GoogleDrive/notes.md

# Create, copy, move, delete
cp local.txt ~/GoogleDrive/
mv ~/GoogleDrive/old.txt ~/GoogleDrive/new.txt
mkdir ~/GoogleDrive/NewFolder

CLI commands

# Sync status across all mounts
stratosync status

# List remote contents
stratosync ls [path]

# Configuration
stratosync config show
stratosync config test
stratosync config edit

# Conflict management
stratosync conflicts

Architecture

Three-crate Rust workspace. No runtime dependencies beyond rclone and FUSE3.

~/Cloud/ (FUSE3 mount)
stratosync-daemon stratosyncd binary
FUSE layer
fuser crate
Sync Engine
upload queue
remote poller
conflict resolve
3-way merge
Cache Manager
LRU eviction
configurable quota
base version store
stratosync-core
Backend trait
RcloneBackend
DeltaProviders
StateDb
SQLite + WAL
per-mount DB
Config
TOML parsing
mount configs
rclone subprocess
rclone (any provider)

stratosync-core

Pure types, Backend trait, StateDb (SQLite), BaseStore (SHA-256 object store), delta providers, config structs. No FUSE, no network.

stratosync-daemon

FUSE filesystem, sync engine with 3-way merge, cache manager, inotify watcher, delta poller. Tokio async runtime with FUSE bridge.

stratosync-cli

User-facing CLI via clap. Status, file listing, config management, conflict resolution.

Configuration

All settings in a single TOML file at ~/.config/stratosync/config.toml.

Daemon settings

[daemon]
log_level = "info"

[daemon.fuse]
threads         = 4
attr_timeout_s  = 5
entry_timeout_s = 5
allow_other     = false

[daemon.sync]
max_hydration_concurrent  = 4
max_upload_concurrent     = 2
upload_debounce_ms        = 2000
text_conflict_strategy    = "merge"   # or "keep_both"
base_retention_days       = 30

Mount settings (repeatable)

[[mount]]
name          = "gdrive"
remote        = "gdrive:/"
mount_path    = "~/GoogleDrive"
cache_quota   = "10 GiB"
poll_interval = "30s"
enabled       = true

[mount.eviction]
policy    = "lru"
low_mark  = 0.80
high_mark = 0.90

Roadmap

Stratosync is pre-alpha. Here's what's done and what's next.

Done

Phase 1: Read-Only VFS

FUSE3 mount with on-demand hydration. Files appear instantly, content downloads on open(). Systemd service, basic CLI.

Done

Phase 2: Bidirectional Sync

Write, create, mkdir, rename, delete. Upload queue with debounce. Remote poller. LRU cache eviction. Crash recovery.

Done

Phase 3: Conflict Resolution & Safety

3-way text merge via git merge-file. Content-hash ETag detection. Delta APIs for Google Drive and OneDrive. Base version store. Desktop notifications. xattr sync status. conflicts resolve CLI (keep-local, keep-remote, merge, diff).

Done

Phase 4: Performance & UX

Pin/unpin for offline. Range-read fast path. Readdir prefetch. Nautilus emblem extension. System tray indicator. WebDAV sidecar backend. Distribution packaging (.deb, .rpm, AUR) for x86_64 and ARM64.

Next

Phase 5: Advanced Features

Selective sync with ignore patterns. File versioning. Bandwidth scheduling. Prometheus metrics. Encrypted cache.