A free and open-source desktop S3 bucket manager.
Manage objects across AWS S3, Cloudflare R2, DigitalOcean Spaces, MinIO, Backblaze B2, Google Cloud Storage, and any S3-compatible provider — all from a single, fast, cross-platform desktop app.
Built with Bun · Electrobun · React · Tailwind CSS · daisyUI · Zustand
- Multi-provider — One app for all your S3-compatible storage
- Encrypted vault — AES-256-GCM encryption; API keys never leave the main process
- Folder sync — Bidirectional, Google Drive-style sync with conflict resolution
- Cross-platform — Native builds for macOS, Linux, and Windows
- Fast transfers — Streaming multipart uploads, concurrent job queue, live progress
Storage & Profiles
- Multi-Provider Support — AWS S3, Cloudflare R2, DigitalOcean Spaces, MinIO, GCS, Backblaze B2, or any S3-compatible endpoint
- Profile Management — Add, edit, delete, and test connection for each storage profile
- Default Bucket — Optional default bucket per profile for bucket-scoped API tokens (e.g. R2 Object tokens that can't list buckets)
- Provider-Aware Defaults — Auto-sets region and endpoint templates when switching providers (e.g.
autofor R2,nyc3for Spaces) - Encrypted Vault — AES-256-GCM encrypted local vault with PBKDF2 key derivation; API keys never leave the main process
- OS Keychain Integration — Optional passphrase caching via keytar for auto-unlock
Object Browser
- Table & Grid Views — Switch between detailed table and visual grid layouts
- Breadcrumb Navigation — Drill into folders with a clickable breadcrumb trail
- Multi-Select — Select multiple objects for bulk operations
- Object Pagination — Handles large buckets with paginated listing
- File Type Icons — 40+ extension-mapped icons for quick visual identification
- Object Stats — View metadata for individual objects
- Tabs — Open multiple buckets in tabs; tabs persist across sessions and auto-switch profiles when activated
- Favorite Buckets — Pin buckets across any profile; favorites appear in a dedicated sidebar section and auto-switch profiles on click
Transfers & Sync
- Upload — Upload files or entire folders with native file picker; supports streaming multipart uploads (5 MB+ files)
- Download — Download objects or entire folders to local disk with folder picker
- Download as Archive — Download multiple objects or folders as a single gzipped tarball
- Copy & Move — Copy or move objects across buckets and profiles with streaming multipart support
- Cross-Bucket Transfer — Transfer files and folders to any bucket on any profile via a destination picker dialog
- Rename — Rename objects in place
- Delete — Bulk delete with confirmation dialog
- Sync Engine — Additive, overwrite, or mirror sync modes with diff preview before execution
- Share Links — Generate presigned URLs with customizable expiration, auto-copy to clipboard, QR code generation, and share history
Folder Sync
- Bidirectional Sync — Keep a local folder in sync with an S3 bucket, Google Drive-style; supports bidirectional, upload-only, or download-only modes
- Three-Way Diff — Detects new files, deletions, and modifications by comparing local, remote, and last-known synced state
- Conflict Resolution — Configurable strategies: newer-wins, local-wins, remote-wins, or skip
- Auto-Sync on Unlock — Sync rules start automatically when the vault is unlocked
- File Watcher — Debounced recursive filesystem watcher triggers sync on local changes
- Poll Scheduler — Configurable polling interval for remote change detection
- Background Mode — Minimizes to system tray when closed with active sync rules; keeps syncing in the background
- System Tray — Tray icon with status menu: open app, pause/resume all syncing, quit
- Live Progress — Real-time file count, bytes transferred, and current file display
- Exclude Patterns — Configurable glob patterns to skip files (e.g.
.DS_Store,Thumbs.db)
Job Queue
- Concurrent Execution — Configurable concurrency (default 3 parallel jobs)
- Live Progress — Real-time progress bars, transfer speed, and ETA for each job
- Job Details — Expand any job to see ID, timestamps, duration, total size, average speed, and errors
- Persistent History — Last 100 completed jobs saved to disk and restored across sessions
- Clear History — One-click clear of completed/failed/cancelled jobs
- Cancellation — Cancel running or queued jobs at any time
Interface
- Status Bar — Active profile, bucket, selection summary, object count, aggregate job progress with speed, and folder sync status
- Theming — Dark and light themes with one-click toggle
- Toast Notifications — Non-blocking alerts for success, error, info, and warning events
- Cross-Platform — macOS, Linux, and Windows via Electrobun + CEF
Download the latest release for your platform from the Releases page.
| Platform | Architecture | Format |
|---|---|---|
| macOS | Apple Silicon, Intel | .dmg |
| Linux | x64 | .tar.gz (self-extracting) |
| Windows | x64 | .zip (Setup .exe) |
- Bun v1.0+
git clone https://github.com/sayedhfatimi/object0.git
cd object0
bun installbun run dev# Dev build (current platform)
bun run build
# Stable release (current platform)
bun run build:stable
# Stable release (specific platform)
bun run build:stable:linux
bun run build:stable:mac
bun run build:stable:win
bun run build:stable:all┌──────────────────────────────────────────────┐
│ Electrobun Shell │
│ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ Bun Process │◄───►│ Webview │ │
│ │ (Backend) │ IPC │ (React UI) │ │
│ │ │ │ │ │
│ │ • Vault │ │ • Zustand stores│ │
│ │ • S3 ops │ │ • Components │ │
│ │ • Job queue │ │ • Tailwind/Daisy│ │
│ │ • Sync engine│ │ │ │
│ └──────────────┘ └──────────────────┘ │
└──────────────────────────────────────────────┘
- Bun process — All S3 operations, encrypted vault, job queue, sync engine, and folder sync. API keys never reach the webview.
- Webview — React SPA with Zustand stores, communicating via a typed RPC layer over IPC.
- Data — Job history and folder sync rules are persisted locally (
~/.config/object0/on Linux,~/Library/Application Support/object0/on macOS).
src/
├── bun/ # Main process (backend)
│ ├── index.ts # Entry point, window management, tray
│ ├── favorites/ # Favorite buckets persistence
│ ├── folder-sync/ # Bidirectional folder sync engine
│ │ ├── differ.ts # Three-way diff algorithm
│ │ ├── executor.ts # Sync action executor
│ │ ├── manager.ts # Orchestrator singleton
│ │ ├── state-store.ts # Rule + file record persistence
│ │ └── watcher.ts # Debounced filesystem watcher
│ ├── jobs/ # Job queue, execution, persistence
│ ├── rpc/ # IPC handlers (jobs, S3, sync, vault, folder-sync)
│ ├── s3/ # S3 client factory, operations, sync
│ └── vault/ # Encrypted vault + keytar integration
├── mainview/ # Webview (frontend)
│ ├── index.tsx # React entry point
│ ├── app/ # App shell + theme provider
│ ├── components/ # UI components
│ │ ├── buckets/ # Bucket list
│ │ ├── common/ # Shared UI (modals, toasts, dialogs, icons)
│ │ ├── jobs/ # Job panel + collapsible job items
│ │ ├── layout/ # Main layout, sidebar, tabs, top bar, status bar
│ │ ├── objects/ # Object browser, table, grid, toolbar, breadcrumb
│ │ ├── profiles/ # Profile form + list
│ │ ├── settings/ # Settings panel
│ │ ├── share/ # Share dialog + share history
│ │ ├── sync/ # Sync dialog + folder sync panel
│ │ ├── transfer/ # Cross-bucket transfer dialog
│ │ └── vault/ # Setup + unlock screens
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Constants, formatters, RPC client
│ └── stores/ # Zustand state stores
└── shared/ # Types shared between processes
├── folder-sync.types.ts
├── job.types.ts
├── profile.types.ts
├── rpc-schema.ts
└── s3.types.ts
| Command | Description |
|---|---|
bun run dev |
Build CSS and start in development mode |
bun run build |
Dev build for current platform |
bun run build:stable |
Stable release build for current platform |
bun run build:stable:linux |
Stable release — Linux x64 |
bun run build:stable:mac |
Stable release — macOS ARM64 + x64 |
bun run build:stable:win |
Stable release — Windows x64 |
bun run build:stable:all |
Stable release — all platforms |
bun run start |
Build then start |
bun run css:build |
One-shot Tailwind CSS build |
bun run css:watch |
Tailwind CSS watch mode |
bun run lint |
Lint with Biome |
bun run lint:fix |
Lint and auto-fix |
bun run format |
Format with Biome |
| Shortcut | Action |
|---|---|
Ctrl+B |
Toggle sidebar |
Ctrl+J |
Toggle job panel |
Ctrl+\ |
Toggle theme |