Sync your files with Cubbit DS3 cloud storage, on macOS, iOS, and Windows.
DS3 Drive connects your Cubbit DS3 buckets to the native file system on macOS, iOS, and Windows. On macOS it runs as a menu bar app and mounts your buckets as drives in Finder; on iOS it mirrors them into the Files app alongside iCloud Drive; on Windows it surfaces them in File Explorer. Each platform integrates with the OS's own sync framework — Apple's File Provider, Windows' Cloud Files API — so every read and write goes through the system with no custom mount daemon, no FUSE, no kexts.
A shared Rust core (core/) implements authentication, the Cubbit API client, and all S3 operations once, then feeds every platform: Swift consumes it via UniFFI, C#/.NET via the C ABI.
macOS and iOS are shipping today. The Windows app is in active development — there is no installer yet; see Build from source to run it.
- iOS app (public beta) — full-featured companion app for iPhone and iPad, sharing the same File Provider extension as the macOS app
- Refreshed macOS UI — new brand typography (Figtree), design tokens (
DS3Colors,DS3Typography,DS3Gradients,DS3Spacing), redesigned tray with per-drive gear menu, and a live Recent Files panel - Drive setup wizard rewrite — tree-based bucket navigation with IAM-user switching, folder-prefix picker, and a single confirm step
- New Connection tab in Preferences — inspect and configure the Cubbit coordinator URL
- Shared design system —
DS3Libships brand tokens so iOS and macOS stay visually in lockstep
See the full changelog on the v1.7.0 release.
brew tap marmos91/tap
brew install --cask marmos91/tap/cubbit-ds3-driveOr grab the notarized .dmg from the Releases page. Updates are delivered in-app via Sparkle.
The iOS app is in public beta:
Requires iOS 17 or later and the TestFlight app.
Log in with your Cubbit credentials, pick a project, expand to a bucket, and optionally drill down into a folder prefix to scope the sync. Confirm in one screen and you're done.
Each drive shows its status, last activity, and a gear menu for quick actions (view in Finder, web console, copy S3 path, pause/resume, rename, delete). The footer aggregates sync state and transfer speed across all drives. Click a drive to flip open a Recent Files panel with per-file progress.
Startup, notifications, account, sync, coordinator connection, and trash — each behind its own tab. The Connection tab is new in 1.7.0 and lets you point DS3 Drive at any Cubbit coordinator (SaaS, on-prem, or a custom tenant).
The iOS app mirrors the macOS feature set with a native iPhone/iPad UI. Sign in, run through the setup wizard, and your bucket is mounted into the system Files app under Locations — with live sync indicators on files being uploaded or downloaded.
🚧 In development. The Windows app is being built and is not yet released — no installer or Store listing exists. To try it, build from source (see below).
A native WinUI 3 app that brings the same experience to File Explorer. It mounts your buckets as a sync root via the Windows Cloud Files API (cfapi), runs from the system tray, and shares the drive setup wizard, authentication, and S3 logic with macOS and iOS through the shared Rust core. Brand typography and design tokens match the Apple apps so all three platforms stay visually in lockstep.
- Full read/write on virtual drives: upload, download, rename, move, delete, copy
- Multipart upload for files larger than 5 MB
- Streaming fetch — files aren't pre-cached unless you open them
- Per-file sync badges and error propagation to the parent folder
- Up to 3 concurrent drives per account
- Tree-based bucket picker with IAM-user switching and folder-prefix scoping
- Pause, resume, refresh, reset, rename, or delete from the per-drive gear menu
- Aggregate and per-drive transfer speed in the tray footer
- Sync status pills (idle, syncing, indexing, error, paused, offline)
- Live Recent Files panel with per-file progress
- Batched conflict notifications with "Show in Finder" action, plus automatic
(conflicted copy)fallback
- Email + password with 2FA (TOTP) support
- Custom coordinator URL for on-prem and multi-tenant deployments
- JWT access tokens with proactive refresh and persistent sessions
- Auto-managed DS3 API keys, reconciled between local and remote on setup
A monorepo with a shared Rust core and thin native shells per platform:
core/ Shared Rust core — auth, Cubbit API, S3, sync (UniFFI for Swift, C ABI for C#)
apple/ macOS + iOS apps, File Provider extension, DS3Lib
windows/ Windows WinUI 3 app — in development (a placeholder on main; impl on the gsd/phase-17-windows-shell-impl branch)
| Crate | Role |
|---|---|
| ds3-models | Shared domain types |
| ds3-http | HTTP transport |
| ds3-auth | Cubbit IAM auth (challenge-response, JWT, 2FA, refresh) |
| ds3-s3 | S3 operations (CRUD, multipart upload) |
| ds3-sync | Sync engine |
| ds3-ffi | FFI surface — UniFFI bindings (Swift) + C ABI (C#) |
| Target | Platform | Role |
|---|---|---|
| DS3Drive | macOS 15+ | SwiftUI menu bar app |
| DS3DriveApp | iOS 17+ | SwiftUI iPhone/iPad app |
| DS3DriveProvider | macOS + iOS | NSFileProviderReplicatedExtension — runs out-of-process |
| DS3DriveShareExtension | macOS + iOS | Share-sheet upload target |
| DS3Lib | Swift Package | Drive manager, design tokens, shared models; wraps the Rust core via UniFFI |
Main app ↔ extension communication uses an App Group shared container (persisted state) and DistributedNotificationCenter (live status / speed updates).
| Project | Role |
|---|---|
| DS3Drive.App | WinUI 3 tray app + setup wizard |
| DS3Drive.ViewModels | Shared view models (MVVM) |
| DS3Drive.Sync | cfapi sync-root integration |
| DS3Drive.Core | C ABI bindings to the Rust core (ds3_ffi.dll) |
| DS3Drive.Installer | WiX MSI + sparse identity package |
Key dependencies: Soto v6 for S3 (Apple), the Windows App SDK (Windows), and Sparkle for macOS updates.
Clone first — all platforms share the repo and the Rust core. Git LFS is required for image assets.
git clone git@github.com:marmos91/cubbit-ds3-drive.git
cd cubbit-ds3-drive
git lfs install && git lfs pullRequirements: macOS 15+, Xcode 16+, and a Rust toolchain (the core builds as part of the Xcode build).
open apple/DS3Drive.xcodeprojIn Xcode, configure your own Team and signing certificate in Signing & Capabilities for each target. The App Group (group.<TeamID>.io.cubbit.DS3Drive) must match across the main apps and the File Provider extension — on macOS 15+ the team-ID prefix is mandatory.
Requirements: Windows 10/11, Visual Studio 2022 (.NET desktop + Windows application development + Desktop C++ workloads), the .NET 8 SDK, and a Rust toolchain. The Windows app currently lives on the gsd/phase-17-windows-shell-impl branch.
git checkout gsd/phase-17-windows-shell-impl
start windows/DS3Drive.slnSet DS3Drive.App as the startup project, build (ds3_ffi.dll is produced by the BuildRustCore target on every build), then follow windows/DEV-DEBUG.md (on that branch) to register the sparse identity package — cfapi's sync-root registration requires package identity, so a bare F5 won't mount a drive without it.
For a deeper tour of the codebase see CLAUDE.md.
Contributions are welcome — please open a pull request. See CLAUDE.md for build and codebase context.
Released under the GPL.











