Skip to content

Free, open-source desktop S3 bucket manager. Supports AWS S3, Cloudflare R2, DigitalOcean Spaces, MinIO, Backblaze B2, and any S3-compatible endpoint. Built with Bun, Electrobun, React, and Tailwind CSS.

License

Notifications You must be signed in to change notification settings

sayedhfatimi/object0

Repository files navigation

object0

object0 logo

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.

License: MIT Version Platform

Built with Bun · Electrobun · React · Tailwind CSS · daisyUI · Zustand


Highlights

  • 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

Table of Contents

Features

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. auto for R2, nyc3 for 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

Installation

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)

Development

Prerequisites

Setup

git clone https://github.com/sayedhfatimi/object0.git
cd object0
bun install

Run

bun run dev

Build

# 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

Architecture

┌──────────────────────────────────────────────┐
│               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).

Project Structure

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

Scripts

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

Manual QA

Keyboard Shortcuts

Shortcut Action
Ctrl+B Toggle sidebar
Ctrl+J Toggle job panel
Ctrl+\ Toggle theme

License

MIT

About

Free, open-source desktop S3 bucket manager. Supports AWS S3, Cloudflare R2, DigitalOcean Spaces, MinIO, Backblaze B2, and any S3-compatible endpoint. Built with Bun, Electrobun, React, and Tailwind CSS.

Resources

License

Stars

Watchers

Forks

Languages